wrong clang warning about negative shift count

Hi -
this warning looks wrong:
$ cat badwarn.c
#define X(a) ((a) > 7 && (a) < 16 ? (1 << ((a) - 8)) : 0)
int a = X(5);
$ clang -c badwarn.c
badwarn.c:2:9: warning: shift count is negative
int a = X(5);
        ^~~~
badwarn.c:1:40: note: instantiated from:
#define X(a) ((a) > 7 && (a) < 16 ? (1 << ((a) - 8)) : 0)
                                       ^ ~~~~~~~~~
1 diagnostic generated.

This is with recent SVN:
$ clang -v
clang version 1.0 (http://llvm.org/svn/llvm-project/cfe/trunk 81778)
Target: i386--netbsdelf
Thread model: posix

best regards
Matthias

I think it strikes me as wrong as well... Be sure to file a bug report so it doesn't drop on the floor.