diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-03-29 21:27:30 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-03-29 21:27:30 +0000 |
commit | 8e36a5c960e07555d80fb98d71c692c20f3ea6c4 (patch) | |
tree | a4c70e9af0e9c469f84ef71fc3e0de99d67cb60a | |
parent | 0ea86bc411748f10b913f42ef3a71b46ace7ceb2 (diff) | |
download | external_llvm-8e36a5c960e07555d80fb98d71c692c20f3ea6c4.zip external_llvm-8e36a5c960e07555d80fb98d71c692c20f3ea6c4.tar.gz external_llvm-8e36a5c960e07555d80fb98d71c692c20f3ea6c4.tar.bz2 |
Fix PR4975. Avoid referencing empty vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99840 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 6 | ||||
-rw-r--r-- | test/CodeGen/Generic/2010-ZeroSizedArg.ll | 17 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index faefe29..7a0daf6 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -6051,8 +6051,10 @@ void SelectionDAGISel::LowerArguments(BasicBlock *LLVMBB) { } 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 diff --git a/test/CodeGen/Generic/2010-ZeroSizedArg.ll b/test/CodeGen/Generic/2010-ZeroSizedArg.ll new file mode 100644 index 0000000..ba40bd0 --- /dev/null +++ b/test/CodeGen/Generic/2010-ZeroSizedArg.ll @@ -0,0 +1,17 @@ +; RUN: llc < %s +; PR4975 + +%0 = type <{ [0 x i32] }> +%union.T0 = type { } + +@.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*, ...) |