aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-05-15 06:52:15 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-05-15 06:52:15 +0000
commit8ff18f162bc6d9479b326ec234e3d681d3768387 (patch)
treeb854464544daecbf36399118e96a6f64102eb526 /test
parentce3e2bff8bd22ef63d10923c9d0fbab922e00957 (diff)
downloadexternal_llvm-8ff18f162bc6d9479b326ec234e3d681d3768387.zip
external_llvm-8ff18f162bc6d9479b326ec234e3d681d3768387.tar.gz
external_llvm-8ff18f162bc6d9479b326ec234e3d681d3768387.tar.bz2
Add a test case for PR1420
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37082 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/C++Frontend/2007-05-15-FieldAccess.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/C++Frontend/2007-05-15-FieldAccess.cpp b/test/C++Frontend/2007-05-15-FieldAccess.cpp
new file mode 100644
index 0000000..d2e5b22
--- /dev/null
+++ b/test/C++Frontend/2007-05-15-FieldAccess.cpp
@@ -0,0 +1,35 @@
+// Test case for PR1420
+// RUN: %llvmgxx %s -O0 -o %t.exe
+// RUN: %t.exe > %t.out
+// RUN: grep {sizeof(bitFieldStruct) == 8} %t.out
+// RUN: grep {Offset bitFieldStruct.i = 0} %t.out
+// RUN: grep {Offset bitFieldStruct.c2 = 7} %t.out
+// XFAIL: *
+
+#include <stdio.h>
+
+class bitFieldStruct {
+ public:
+ int i;
+ unsigned char c:7;
+ int s:17;
+ char c2;
+};
+
+int main()
+{
+ printf("sizeof(bitFieldStruct) == %d\n", sizeof(bitFieldStruct));
+
+ if (sizeof(bitFieldStruct) != 2 * sizeof(int))
+ printf("bitFieldStruct should be %d but is %d \n",
+ 2 * sizeof(int), sizeof(bitFieldStruct));
+
+ bitFieldStruct x;
+
+ char* xip = (char*) &x.i;
+ char* xc2p = (char*) &x.c2;
+ printf("Offset bitFieldStruct.i = %d\n", xip - xip);
+ printf("Offset bitFieldStruct.c2 = %d\n", xc2p - xip);
+
+ return 0;
+}