Nasty problem in sizeof evaluation?

$ cat p.c
#define HUGE (1LL<<61)
typedef char a[HUGE];
typedef char b[(long long)sizeof(a)-1];

$ clang -m64 p.c
p.c:3:16: error: array size is negative
typedef char b[(long long)sizeof(a)-1];
               ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.

I believe this is due to the fact that type size is evaluated in bits
unit with 64 bits of precision and then it is divided by 8.

This lead to the observed problem.

Hi Abramo,

I'm not sure if this has been resolved, but in general I think it is
better to just file a bug instead of sending to the list (if it is
obviously a bug).

A number of people do actively watch bugzilla and try to stay on top
of new bugs, and this ensures we don't lose track of it.

- Daniel

http://llvm.org/bugs/show_bug.cgi?id=8256