[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