[cfe-dev] errors running clang/test testcases

Steve Naroff snaroff at apple.com
Sun Jan 6 18:49:05 PST 2008


On Jan 6, 2008, at 2:54 PM, Chris Lattner wrote:

>
> On Jan 6, 2008, at 2:00 PM, Bjørn Roald wrote:
>
>> Chris Lattner wrote:
>>
>> Thanks for your reply Chris,
>>>> ******************** TEST 'CodeGen/mandel.c' FAILED!
>>>> ********************
>>>> Command:
>>>> clang -emit-llvm CodeGen/mandel.c
>>>> Output:
>>>> CodeGen/mandel.c:49:13: error: variable has incomplete type
>>>> 'typeof(*(0 ? (typeof(0 ? (double *)0 : (void *)((((typeof((__real
>>>> z) + (__imag z)))0.25) && ((typeof((__real z) + (__imag z)))0.25 -
>>>> 1)))))0 : (typeof(0 ? (typeof((__real z) + (__imag z)) *)0 : (void
>>>> *)(!((((typeof((__real z) + (__imag z)))0.25) && ((typeof((__real
>>>> z) + (__imag z)))0.25 - 1))))))0))'
>>>>      if (hypot(__real__ z, __imag__ z) >= ESCAPE)
>>>
>>> Please make a .i file for mandel.c (clang -E mandel.c > mandel.i)
>>> and send it to the list.
>>
>> attached
>
> Okay, this ugliness seems to be because your system hypot expands out
> into some amazingly nasty stuff.  Here is a reduced testcase:
>
> void foo() {
>   *((__typeof__ (0 ? (double *)0 : (void *)0)) 0) = 0;
> }
>
> cond.c:2:3: warning: dereferencing void pointer
>   *((__typeof__ (0 ? (double *)0 : (void *)0)) 0) = 0;
>   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> cond.c:2:51: error: incomplete type 'void' is not assignable
>   *((__typeof__ (0 ? (double *)0 : (void *)0)) 0) = 0;
>   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
>
> This is because of this fixme in sema:
>
>       // The pointer types are compatible.
>       // C99 6.5.15p6: If both operands are pointers to compatible
> types *or* to
>       // differently qualified versions of compatible types, the
> result type is
>       // a pointer to an appropriately qualified version of the
> *composite*
>       // type.
>       // FIXME: Need to return the composite type.
>       return lexT;
>
> Steve, can you please take a look at this?  Also, the code isn't
> handling a number of other cases explicitly mentioned in the standard,
> such as "const int *" + "volatile int *"  -> "const volatile int*".
>

I'll look into this first thing tomorrow morning...

snaroff

> Thanks,
>
> -Chris
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev





More information about the cfe-dev mailing list