[cfe-commits] r170480 - in /cfe/trunk: lib/CodeGen/CGExpr.cpp test/CodeGenCXX/bool-bitfield.cpp

Eli Friedman eli.friedman at gmail.com
Tue Dec 18 16:26:58 PST 2012


Author: efriedma
Date: Tue Dec 18 18:26:58 2012
New Revision: 170480

URL: http://llvm.org/viewvc/llvm-project?rev=170480&view=rev
Log:
Make sure CodeGen uses a value of the correct type as the result of
of assignment to a bool bitfield.  PR14638.


Added:
    cfe/trunk/test/CodeGenCXX/bool-bitfield.cpp
Modified:
    cfe/trunk/lib/CodeGen/CGExpr.cpp

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=170480&r1=170479&r2=170480&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Tue Dec 18 18:26:58 2012
@@ -1401,7 +1401,7 @@
 
     ResultVal = Builder.CreateIntCast(ResultVal, ResLTy, Info.IsSigned,
                                       "bf.result.cast");
-    *Result = ResultVal;
+    *Result = EmitFromMemory(ResultVal, Dst.getType());
   }
 }
 

Added: cfe/trunk/test/CodeGenCXX/bool-bitfield.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/bool-bitfield.cpp?rev=170480&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenCXX/bool-bitfield.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/bool-bitfield.cpp Tue Dec 18 18:26:58 2012
@@ -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





More information about the cfe-commits mailing list