I can reproduce the problem with just two lines: struct X { int a[2]; }; int i = (int) &( ((struct X *)0) -> a[0]); This compiles with gcc and fails with llvmgcc. Adam, could you add this to your bug entry?