Make sure CodeGen uses a value of the correct type as the result of

of assignment to a bool bitfield.  PR14638.

llvm-svn: 170480
This commit is contained in:
Eli Friedman
2012-12-19 00:26:58 +00:00
parent ed74db7cd5
commit 39b685e4d1
2 changed files with 15 additions and 1 deletions

View File

@@ -1401,7 +1401,7 @@ void CodeGenFunction::EmitStoreThroughBitfieldLValue(RValue Src, LValue Dst,
ResultVal = Builder.CreateIntCast(ResultVal, ResLTy, Info.IsSigned,
"bf.result.cast");
*Result = ResultVal;
*Result = EmitFromMemory(ResultVal, Dst.getType());
}
}

View File

@@ -0,0 +1,14 @@
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -verify -emit-llvm -o - %s \
// RUN: | FileCheck %s
// PR14638; make sure this doesn't crash.
struct A {
bool m_sorted : 1;
};
void func1(bool b, A& a1)
{
if ((a1.m_sorted = b)) {}
}
// CHECK: define void @_Z5func1bR1A
// CHECK: br i1
// CHECK: ret void