[PATCH] [opaque pointer type] Add textual IR support for explicit type parameter to load instruction

David Blaikie dblaikie at gmail.com
Sat Feb 14 21:39:55 PST 2015


Hi rafael, resistor, grosbach, chandlerc, grosser,

Essentially the same as the GEP change under review in
http://reviews.llvm.org/D7636

A similar migration script can be used to update test cases, though a few more
test case improvements/changes were required this time around: (r229269-r229278)

import fileinput
import sys
import re

pat = re.compile(r"((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)")

for line in sys.stdin:
  sys.stdout.write(re.sub(pat, r"\1, \2\3*\4", line))

http://reviews.llvm.org/D7649

Files:
  lib/AsmParser/LLParser.cpp
  lib/IR/AsmWriter.cpp

Index: lib/AsmParser/LLParser.cpp
===================================================================
--- lib/AsmParser/LLParser.cpp
+++ lib/AsmParser/LLParser.cpp
@@ -5165,6 +5165,10 @@
     Lex.Lex();
   }
 
+  Type *Ty = nullptr;
+  if (ParseType(Ty)) return true;
+  ParseToken(lltok::comma, "expected comma after getelementptr's type");
+
   if (ParseTypeAndValue(Val, Loc, PFS) ||
       ParseScopeAndOrdering(isAtomic, Scope, Ordering) ||
       ParseOptionalCommaAlign(Alignment, AteExtraComma))
@@ -5179,6 +5183,9 @@
     return Error(Loc, "atomic load cannot use Release ordering");
 
   Inst = new LoadInst(Val, "", isVolatile, Alignment, Ordering, Scope);
+
+  assert(Ty == Inst->getType());
+
   return AteExtraComma ? InstExtraComma : InstNormal;
 }
 
Index: lib/IR/AsmWriter.cpp
===================================================================
--- lib/IR/AsmWriter.cpp
+++ lib/IR/AsmWriter.cpp
@@ -2880,6 +2880,11 @@
     Out << ", ";
     TypePrinter.print(I.getType(), Out);
   } else if (Operand) {   // Print the normal way.
+    if (auto *LI = dyn_cast<LoadInst>(&I)) {
+      Out << ' ';
+      TypePrinter.print(LI->getType(), Out);
+      Out << ", ";
+    }
 
     // PrintAllTypes - Instructions who have operands of all the same type
     // omit the type from all but the first operand.  If the instruction has

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7649.19977.patch
Type: text/x-patch
Size: 1341 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150215/4e0fba4c/attachment.bin>


More information about the llvm-commits mailing list