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