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