[llvm-commits] [llvm] r99840 - in /llvm/trunk: lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp test/CodeGen/Generic/2010-ZeroSizedArg.ll

Evan Cheng evan.cheng at apple.com
Mon Mar 29 14:27:30 PDT 2010


Author: evancheng
Date: Mon Mar 29 16:27:30 2010
New Revision: 99840

URL: http://llvm.org/viewvc/llvm-project?rev=99840&view=rev
Log:
Fix PR4975. Avoid referencing empty vector.

Added:
    llvm/trunk/test/CodeGen/Generic/2010-ZeroSizedArg.ll
Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=99840&r1=99839&r2=99840&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Mon Mar 29 16:27:30 2010
@@ -6051,8 +6051,10 @@
     }
 
     if (!I->use_empty()) {
-      SDValue Res = DAG.getMergeValues(&ArgValues[0], NumValues,
-                                       SDB->getCurDebugLoc());
+      SDValue Res;
+      if (!ArgValues.empty())
+        Res = DAG.getMergeValues(&ArgValues[0], NumValues,
+                                 SDB->getCurDebugLoc());
       SDB->setValue(I, Res);
 
       // If this argument is live outside of the entry block, insert a copy from

Added: llvm/trunk/test/CodeGen/Generic/2010-ZeroSizedArg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/2010-ZeroSizedArg.ll?rev=99840&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Generic/2010-ZeroSizedArg.ll (added)
+++ llvm/trunk/test/CodeGen/Generic/2010-ZeroSizedArg.ll Mon Mar 29 16:27:30 2010
@@ -0,0 +1,17 @@
+; RUN: llc < %s
+; PR4975
+
+%0 = type <{ [0 x i32] }>
+%union.T0 = type { }
+
+ at .str = private constant [1 x i8] c" "
+
+define arm_apcscc void @t(%0) nounwind {
+entry:
+  %arg0 = alloca %union.T0
+  %1 = bitcast %union.T0* %arg0 to %0*
+  store %0 %0, %0* %1, align 1
+  ret void
+}
+
+declare arm_apcscc i32 @printf(i8*, ...)





More information about the llvm-commits mailing list