[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.


-----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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]