1c4497036cff93da286ae188cfd95aa3f01390c61NAKAMURA Takumi// RUN: %clang -O3 -emit-llvm -S -o - %s | FileCheck %s
2fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor
3fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregorlong long f0(void) {
4fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor struct { unsigned f0 : 32; } x = { 18 };
5fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor return (long long) (x.f0 - (int) 22);
6fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor}
736db2d87163fd3ec422a5d723c3f466bb410288bNAKAMURA Takumi// CHECK: @f0()
836db2d87163fd3ec422a5d723c3f466bb410288bNAKAMURA Takumi// CHECK: ret i64 4294967292
9fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor
10fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregorlong long f1(void) {
11fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor struct { unsigned f0 : 31; } x = { 18 };
12fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor return (long long) (x.f0 - (int) 22);
13fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor}
1436db2d87163fd3ec422a5d723c3f466bb410288bNAKAMURA Takumi// CHECK: @f1()
1536db2d87163fd3ec422a5d723c3f466bb410288bNAKAMURA Takumi// CHECK: ret i64 -4
16fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor
17fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregorlong long f2(void) {
18fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor struct { unsigned f0     ; } x = { 18 };
19fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor return (long long) (x.f0 - (int) 22);
20fc24e44bea29dcaabd9cf2c7663fe1c1286d90c1Douglas Gregor}
2136db2d87163fd3ec422a5d723c3f466bb410288bNAKAMURA Takumi// CHECK: @f2()
2236db2d87163fd3ec422a5d723c3f466bb410288bNAKAMURA Takumi// CHECK: ret i64 4294967292
23