1 // RUN: %clang_cc1 -triple x86_64-linux -emit-llvm -o - %s | FileCheck %s 2 // RUN: %clang_cc1 -triple x86_64-linux -emit-llvm -o - %s -fexperimental-new-constant-interpreter | FileCheck %s 3 4 typedef __INTPTR_TYPE__ intptr_t; 5 6 const intptr_t Z1 = (intptr_t)(((char*)-1LL) + 1); 7 // CHECK: @Z1 = constant i64 0 8 9 const intptr_t Z2 = (intptr_t)(((char*)1LL) - 1); 10 // CHECK: @Z2 = constant i64 0 11 12 struct A { 13 char num_fields; 14 }; 15 struct B { 16 char a, b[1]; 17 }; 18 const int A = (char *)(&( (struct B *)(16) )->b[0]) - (char *)(16); 19 // CHECK: @A = constant i32 1 20 21 struct X { int a[2]; }; 22 int test(void) { 23 static int i23 = (int) &(((struct X *)0)->a[1]); 24 return i23; 25 } 26 // CHECK: @test.i23 = internal global i32 4, align 4 27