mirror of
https://github.com/intel/llvm.git
synced 2026-01-26 12:26:52 +08:00
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:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
14
clang/test/CodeGenCXX/bool-bitfield.cpp
Normal file
14
clang/test/CodeGenCXX/bool-bitfield.cpp
Normal 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
|
||||
Reference in New Issue
Block a user