// RUN: %clang_cc1 %s -triple x86_64-unknown-unknown -emit-llvm -o - | FileCheck %s // The store of p.y into the temporary was not // getting extended to 32 bits, so uninitialized // bits of the temporary were used. 7366161. struct foo { char x:8; signed int y:24; }; int bar(struct foo p, int x) { // CHECK: bar // CHECK: %[[val:.*]] = load i32* {{.*}} // CHECK-NEXT: ashr i32 %[[val]] // CHECK: = load i32* {{.*}} // CHECK: = load i32* {{.*}} // CHECK: %[[val:.*]] = load i32* {{.*}} // CHECK-NEXT: ashr i32 %[[val]] x = (p.y > x ? x : p.y); return x; // CHECK: ret }