[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] Compilation of tcc with clang
From: |
Christian Jullien |
Subject: |
Re: [Tinycc-devel] Compilation of tcc with clang |
Date: |
Tue, 6 Mar 2012 13:05:40 +0100 |
Hello Thomas,
If your heart is in good health, you can also try splint on source code.
The reported warning is true because cv is a CValue defined as
typedef union CValue {
long double ld;
double d;
float f;
int i;
unsigned int ui;
unsigned int ul; /* address (should be unsigned long on 64 bit cpu) */
long long ll;
unsigned long long ull;
struct CString *cstr;
void *ptr;
int tab[2];
} CValue;
But, since CValue is an union, sizeof(CValue) == sizeof(greatest field)
which is probably "long double"
To me, this is a real warning, but the code itself is safe.
To fix it, CValue should be defined with int tab[LDOUBLE_SIZE / 2] or
something similar.
Christian.
-----Original Message-----
From: address@hidden
[mailto:address@hidden On Behalf Of
Thomas Preud'homme
Sent: mardi 6 mars 2012 12:16
To: address@hidden
Subject: [Tinycc-devel] Compilation of tcc with clang
Greetings everybody,
a rebuild of Debian with clang was done recently and it led to a
segmentation fault for tcc when running the test. Also, several warning were
issued by clang, which is better than gcc for static analysis as far as I
know. The full log is attached to this email.
An example of warning:
tccpp.c:924:22: warning: array index of '2' indexes past the end of an array
(that contains 2 elements) [-Warray-bounds]
str[len++] = cv->tab[2];
I didn't look more into it as I lack of time these days.
Best regards,
Thomas Preud'homme