Simplify bitfield codegen.
Fix codegen of struct { short a[3]; int b:15; }.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46859 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGen/bitfield.c b/test/CodeGen/bitfield.c
index 70414a9..740c41c 100644
--- a/test/CodeGen/bitfield.c
+++ b/test/CodeGen/bitfield.c
@@ -5,10 +5,12 @@
 // RUN: grep "lshr i16 %tmp5, 9" %t1
 // RUN: grep "and i32 %tmp, -8192" %t1
 // RUN: grep "and i16 %tmp5, -32513" %t1
+// RUN: grep "getelementptr (i32\* bitcast (.struct.STestB2\* @stb2 to i32\*), i32 1)" %t1
 // Test bitfield access
 
 
 struct STestB1 { int a:13; char b; unsigned short c:7;} stb1;
+struct STestB2 { short a[3]; int b:15} stb2;
 
 int f() {
   return stb1.a + stb1.b + stb1.c;
@@ -19,3 +21,12 @@
   stb1.b = 10;
   stb1.c = 15;
 }
+
+int h() {
+  return stb2.a[1] + stb2.b;
+}
+
+void i(){
+  stb2.a[2] = -40;
+  stb2.b = 10;
+}