21 lines · cpp
1// RUN: %clang_cc1 %s -triple x86_64-unknown-unknown -emit-llvm -o - | FileCheck %s2// The store of p.y into the temporary was not3// getting extended to 32 bits, so uninitialized4// bits of the temporary were used. 7366161.5struct foo {6 char x:8;7 signed int y:24;8};9int bar(struct foo p, int x) {10// CHECK: bar11// CHECK: %[[val:.*]] = load i32, ptr {{.*}}12// CHECK-NEXT: ashr i32 %[[val]]13// CHECK: = load i32, ptr {{.*}}14// CHECK: = load i32, ptr {{.*}}15// CHECK: %[[val:.*]] = load i32, ptr {{.*}}16// CHECK-NEXT: ashr i32 %[[val]]17 x = (p.y > x ? x : p.y);18 return x;19// CHECK: ret20}21