MIR Parser: Allow the MI IR references to reference global values.
authorAlex Lorenz <arphaman@gmail.com>
Wed, 12 Aug 2015 21:27:16 +0000 (21:27 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Wed, 12 Aug 2015 21:27:16 +0000 (21:27 +0000)
This commit fixes a bug where MI parser couldn't resolve the named IR
references that referenced named global values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244817 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MIRParser/MIParser.cpp
test/CodeGen/MIR/X86/memory-operands.mir

index b6c39399471706dcc5345ada3d88fe3fb7f7bc68..b333f0b52b1b84f8df0cf8970a4022bd779bdf05 100644 (file)
@@ -1085,6 +1085,9 @@ bool MIParser::parseIRValue(Value *&V) {
   switch (Token.kind()) {
   case MIToken::NamedIRValue: {
     V = MF.getFunction()->getValueSymbolTable().lookup(Token.stringValue());
+    if (!V)
+      V = MF.getFunction()->getParent()->getValueSymbolTable().lookup(
+          Token.stringValue());
     if (!V)
       return error(Twine("use of undefined IR value '") + Token.range() + "'");
     break;
index 002d147b354712c02394ab5b575b5051886573ed..1bde368f5767759b10b291b571e4c9600f61bc58 100644 (file)
     ret i32 %b
   }
 
+  define i32 @global_value() {
+  entry:
+    %a = load i32, i32* @G
+    %b = add i32 %a, 1
+    ret i32 %b
+  }
+
   define i32 @jumptable_psv(i32 %in) {
   entry:
     switch i32 %in, label %def [
@@ -290,6 +297,20 @@ body:
       - 'RETQ %eax'
 ...
 ---
+name:            global_value
+tracksRegLiveness: true
+body:
+  - id:          0
+    name:        entry
+    instructions:
+      - '%rax = MOV64rm %rip, 1, _, @G, _'
+# CHECK: name: global_value
+# CHECK: %eax = MOV32rm killed %rax, 1, _, 0, _ :: (load 4 from %ir.G)
+      - '%eax = MOV32rm killed %rax, 1, _, 0, _ :: (load 4 from %ir.G)'
+      - '%eax = INC32r killed %eax, implicit-def dead %eflags'
+      - 'RETQ %eax'
+...
+---
 name:            jumptable_psv
 tracksRegLiveness: true
 liveins: