[llvm] r247145 - Fix PR 24633 - Handle undef values when parsing standalone constants.
Alex Lorenz via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 9 06:44:34 PDT 2015
Author: arphaman
Date: Wed Sep 9 08:44:33 2015
New Revision: 247145
URL: http://llvm.org/viewvc/llvm-project?rev=247145&view=rev
Log:
Fix PR 24633 - Handle undef values when parsing standalone constants.
Modified:
llvm/trunk/lib/AsmParser/LLParser.cpp
llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir
llvm/trunk/unittests/AsmParser/AsmParserTest.cpp
Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=247145&r1=247144&r2=247145&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLParser.cpp Wed Sep 9 08:44:33 2015
@@ -4228,6 +4228,7 @@ bool LLParser::parseConstantValue(Type *
switch (ID.Kind) {
case ValID::t_APSInt:
case ValID::t_APFloat:
+ case ValID::t_Undef:
case ValID::t_Constant:
case ValID::t_ConstantStruct:
case ValID::t_PackedConstantStruct: {
Modified: llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir?rev=247145&r1=247144&r2=247145&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir (original)
+++ llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir Wed Sep 9 08:44:33 2015
@@ -180,6 +180,12 @@
store i32 %conv, i32* getelementptr inbounds ([50 x %st], [50 x %st]* @values, i64 0, i64 0, i32 0), align 16
ret void
}
+
+ define i8* @undef_value() {
+ entry:
+ %0 = load i8*, i8** undef, align 8
+ ret i8* %0
+ }
...
---
name: test
@@ -490,3 +496,13 @@ body: |
MOV32mr killed %rax, 1, _, 0, _, %edi, implicit killed %rdi :: (store 4 into `i32* getelementptr inbounds ([50 x %st], [50 x %st]* @values, i64 0, i64 0, i32 0)`, align 16)
RETQ
...
+---
+name: undef_value
+tracksRegLiveness: true
+body: |
+ bb.0.entry:
+ ; CHECK-LABEL: name: undef_value
+ ; CHECK: %rax = MOV64rm undef %rax, 1, _, 0, _ :: (load 8 from `i8** undef`)
+ %rax = MOV64rm undef %rax, 1, _, 0, _ :: (load 8 from `i8** undef`)
+ RETQ %rax
+...
Modified: llvm/trunk/unittests/AsmParser/AsmParserTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/AsmParser/AsmParserTest.cpp?rev=247145&r1=247144&r2=247145&view=diff
==============================================================================
--- llvm/trunk/unittests/AsmParser/AsmParserTest.cpp (original)
+++ llvm/trunk/unittests/AsmParser/AsmParserTest.cpp Wed Sep 9 08:44:33 2015
@@ -99,6 +99,10 @@ TEST(AsmParserTest, TypeAndConstantValue
ASSERT_TRUE(V);
ASSERT_TRUE(isa<BlockAddress>(V));
+ V = parseConstantValue("i8** undef", Error, M);
+ ASSERT_TRUE(V);
+ ASSERT_TRUE(isa<UndefValue>(V));
+
EXPECT_FALSE(parseConstantValue("duble 3.25", Error, M));
EXPECT_EQ(Error.getMessage(), "expected type");
More information about the llvm-commits
mailing list