Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 %s -triple x86_64-unknown-unknown -emit-llvm -o - | FileCheck %s
      2 // The store of p.y into the temporary was not
      3 // getting extended to 32 bits, so uninitialized
      4 // bits of the temporary were used.  7366161.
      5 struct foo {
      6   char x:8;
      7   signed int y:24;
      8 };
      9 int bar(struct foo p, int x) {
     10 // CHECK: bar
     11 // CHECK: %[[val:.*]] = load i32, i32* {{.*}}
     12 // CHECK-NEXT:          ashr i32 %[[val]]
     13 // CHECK:             = load i32, i32* {{.*}}
     14 // CHECK:             = load i32, i32* {{.*}}
     15 // CHECK: %[[val:.*]] = load i32, i32* {{.*}}
     16 // CHECK-NEXT:          ashr i32 %[[val]]
     17   x = (p.y > x ? x : p.y);
     18   return x;
     19 // CHECK: ret
     20 }
     21