[llvm] r245097 - MIR Serialization: Serialize the global value call entry pseudo source values.

Alex Lorenz via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 14 14:08:31 PDT 2015


Author: arphaman
Date: Fri Aug 14 16:08:30 2015
New Revision: 245097

URL: http://llvm.org/viewvc/llvm-project?rev=245097&view=rev
Log:
MIR Serialization: Serialize the global value call entry pseudo source values.

Added:
    llvm/trunk/test/CodeGen/MIR/Mips/
    llvm/trunk/test/CodeGen/MIR/Mips/lit.local.cfg
    llvm/trunk/test/CodeGen/MIR/Mips/memory-operands.mir
Modified:
    llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
    llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp
    llvm/trunk/lib/CodeGen/MIRPrinter.cpp

Modified: llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h?rev=245097&r1=245096&r2=245097&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h (original)
+++ llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h Fri Aug 14 16:08:30 2015
@@ -118,6 +118,10 @@ class GlobalValuePseudoSourceValue : pub
 public:
   GlobalValuePseudoSourceValue(const GlobalValue *GV);
 
+  static inline bool classof(const PseudoSourceValue *V) {
+    return V->kind() == GlobalValueCallEntry;
+  }
+
   const GlobalValue *getValue() const { return GV; }
 };
 

Modified: llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp?rev=245097&r1=245096&r2=245097&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp Fri Aug 14 16:08:30 2015
@@ -1437,6 +1437,14 @@ bool MIParser::parseMemoryPseudoSourceVa
     // The token was already consumed, so use return here instead of break.
     return false;
   }
+  case MIToken::GlobalValue:
+  case MIToken::NamedGlobalValue: {
+    GlobalValue *GV = nullptr;
+    if (parseGlobalValue(GV))
+      return true;
+    PSV = MF.getPSVManager().getGlobalValueCallEntry(GV);
+    break;
+  }
   // TODO: Parse the other pseudo source values.
   default:
     llvm_unreachable("The current token should be pseudo source value");
@@ -1448,7 +1456,8 @@ bool MIParser::parseMemoryPseudoSourceVa
 bool MIParser::parseMachinePointerInfo(MachinePointerInfo &Dest) {
   if (Token.is(MIToken::kw_constant_pool) || Token.is(MIToken::kw_stack) ||
       Token.is(MIToken::kw_got) || Token.is(MIToken::kw_jump_table) ||
-      Token.is(MIToken::FixedStackObject)) {
+      Token.is(MIToken::FixedStackObject) || Token.is(MIToken::GlobalValue) ||
+      Token.is(MIToken::NamedGlobalValue)) {
     const PseudoSourceValue *PSV = nullptr;
     if (parseMemoryPseudoSourceValue(PSV))
       return true;

Modified: llvm/trunk/lib/CodeGen/MIRPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRPrinter.cpp?rev=245097&r1=245096&r2=245097&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRPrinter.cpp Fri Aug 14 16:08:30 2015
@@ -763,6 +763,10 @@ void MIPrinter::print(const MachineMemOp
       printStackObjectReference(
           cast<FixedStackPseudoSourceValue>(PVal)->getFrameIndex());
       break;
+    case PseudoSourceValue::GlobalValueCallEntry:
+      cast<GlobalValuePseudoSourceValue>(PVal)->getValue()->printAsOperand(
+          OS, /*PrintType=*/false, MST);
+      break;
     default:
       // TODO: Print the other pseudo source values.
       OS << "<unserializable pseudo value>";

Added: llvm/trunk/test/CodeGen/MIR/Mips/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MIR/Mips/lit.local.cfg?rev=245097&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/MIR/Mips/lit.local.cfg (added)
+++ llvm/trunk/test/CodeGen/MIR/Mips/lit.local.cfg Fri Aug 14 16:08:30 2015
@@ -0,0 +1,2 @@
+if not 'Mips' in config.root.targets:
+    config.unsupported = True

Added: llvm/trunk/test/CodeGen/MIR/Mips/memory-operands.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MIR/Mips/memory-operands.mir?rev=245097&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/MIR/Mips/memory-operands.mir (added)
+++ llvm/trunk/test/CodeGen/MIR/Mips/memory-operands.mir Fri Aug 14 16:08:30 2015
@@ -0,0 +1,47 @@
+# RUN: llc -march=mipsel -mcpu=mips16 -relocation-model=pic -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
+# This test ensures that the MIR parser parses the call entry pseudo source
+# values in memory operands correctly.
+
+--- |
+  define i32 @test(i32 %a) {
+  entry:
+    %call = call i32 @foo(i32 %a)
+    ret i32 0
+  }
+
+  declare i32 @foo(i32)
+...
+---
+name:            test
+tracksRegLiveness: true
+liveins:
+  - { reg: '%a0' }
+frameInfo:
+  stackSize:       24
+  maxAlignment:    4
+  adjustsStack:    true
+  hasCalls:        true
+  maxCallFrameSize: 16
+stack:
+  - { id: 0, type: spill-slot, offset: -4, size: 4, alignment: 4,
+      callee-saved-register: '%ra' }
+body:             |
+  bb.0.entry:
+    liveins: %a0, %ra
+
+    Save16 %ra, 24, implicit-def %sp, implicit %sp
+    CFI_INSTRUCTION .cfi_def_cfa_offset 24
+    CFI_INSTRUCTION .cfi_offset %ra_64, -4
+    %v0, %v1 = GotPrologue16 $_gp_disp, $_gp_disp
+    %v0 = SllX16 killed %v0, 16
+    %v0 = AdduRxRyRz16 killed %v1, killed %v0
+  ; CHECK-LABEL: name: test
+  ; CHECK: %v1 = LwRxRyOffMemX16 %v0, @foo, 0 :: (load 4 from @foo)
+    %v1 = LwRxRyOffMemX16 %v0, @foo, 0 :: (load 4 from @foo)
+    %t9 = COPY %v1
+    %gp = COPY killed %v0
+    JumpLinkReg16 killed %v1, csr_o32, implicit-def %ra, implicit killed %t9, implicit %a0, implicit killed %gp, implicit-def %sp, implicit-def dead %v0
+    %v0 = LiRxImmX16 0
+    %ra = Restore16 24, implicit-def %sp, implicit %sp
+    RetRA16 implicit %v0
+...




More information about the llvm-commits mailing list