Fix r232466 by adding 'i' to the mappings for inline assembly memory constraints.
authorDaniel Sanders <daniel.sanders@imgtec.com>
Tue, 17 Mar 2015 12:00:04 +0000 (12:00 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Tue, 17 Mar 2015 12:00:04 +0000 (12:00 +0000)
It's not completely clear why 'i' has historically been treated as a memory
constraint. According to the documentation, it represents a constant immediate.

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

include/llvm/IR/InlineAsm.h
include/llvm/Target/TargetLowering.h
lib/Target/PowerPC/PPCISelDAGToDAG.cpp

index 6640132b333152c7dfbacf80fb007f2e71350c64..a1d72a4af73386257c24e42400314b20a153f577 100644 (file)
@@ -240,6 +240,7 @@ public:
     // constraint codes for all targets.
     Constraint_Unknown = 0,
     Constraint_es,
     // constraint codes for all targets.
     Constraint_Unknown = 0,
     Constraint_es,
+    Constraint_i,
     Constraint_m,
     Constraint_o,
     Constraint_v, // Unused at the moment since Constraint_m is always used.
     Constraint_m,
     Constraint_o,
     Constraint_v, // Unused at the moment since Constraint_m is always used.
index 55386d1bca20fc09de98e4143ee1819cc55e4e51..5cf853cca2a31ce5976445bc9daa2163bdb564cd 100644 (file)
@@ -2627,7 +2627,9 @@ public:
 
   virtual unsigned
   getInlineAsmMemConstraint(const std::string &ConstraintCode) const {
 
   virtual unsigned
   getInlineAsmMemConstraint(const std::string &ConstraintCode) const {
-    if (ConstraintCode == "m")
+    if (ConstraintCode == "i")
+      return InlineAsm::Constraint_i;
+    else if (ConstraintCode == "m")
       return InlineAsm::Constraint_m;
     return InlineAsm::Constraint_Unknown;
   }
       return InlineAsm::Constraint_m;
     return InlineAsm::Constraint_Unknown;
   }
index a20d37b799281e11513c1894d2c622aa2b816bf0..3ac8e949bbbd32b749f540ec696a6280d0ebe22b 100644 (file)
@@ -194,6 +194,7 @@ namespace {
         errs() << "ConstraintID: " << ConstraintID << "\n";
         llvm_unreachable("Unexpected asm memory constraint");
       case InlineAsm::Constraint_es:
         errs() << "ConstraintID: " << ConstraintID << "\n";
         llvm_unreachable("Unexpected asm memory constraint");
       case InlineAsm::Constraint_es:
+      case InlineAsm::Constraint_i:
       case InlineAsm::Constraint_m:
       case InlineAsm::Constraint_o:
       case InlineAsm::Constraint_Q:
       case InlineAsm::Constraint_m:
       case InlineAsm::Constraint_o:
       case InlineAsm::Constraint_Q: