llvm-6502/test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll
David Blaikie 5a70dd1d82 [opaque pointer type] Add textual IR support for explicit type parameter to gep operator
Similar to gep (r230786) and load (r230794) changes.

Similar migration script can be used to update test cases, which
successfully migrated all of LLVM and Polly, but about 4 test cases
needed manually changes in Clang.

(this script will read the contents of stdin and massage it into stdout
- wrap it in the 'apply.sh' script shown in previous commits + xargs to
apply it over a large set of test cases)

import fileinput
import sys
import re

rep = re.compile(r"(getelementptr(?:\s+inbounds)?\s*\()((<\d*\s+x\s+)?([^@]*?)(|\s*addrspace\(\d+\))\s*\*(?(3)>)\s*)(?=$|%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|zeroinitializer|<|\[\[[a-zA-Z]|\{\{)", re.MULTILINE | re.DOTALL)

def conv(match):
  line = match.group(1)
  line += match.group(4)
  line += ", "
  line += match.group(2)
  return line

line = sys.stdin.read()
off = 0
for match in re.finditer(rep, line):
  sys.stdout.write(line[off:match.start()])
  sys.stdout.write(conv(match))
  off = match.end()
sys.stdout.write(line[off:])

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232184 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-13 18:20:45 +00:00

114 lines
4.2 KiB
LLVM

; RUN: llc < %s -mtriple=arm-apple-darwin
%struct.Connection = type { i32, [10 x i8], i32 }
%struct.IntChunk = type { %struct.cppobjtype, i32, i32*, i32 }
%struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) *, i16 (%struct.Point*) *, double (%struct.Point*)*, double (%struct.Point*)* }
%struct.RefPoint = type { %struct.Point*, %struct.cppobjtype }
%struct.ShortArray = type { %struct.cppobjtype, i32, i16* }
%struct.TestObj = type { i8*, %struct.cppobjtype, i8, [32 x i8], i8*, i8**, i16, i16, i32, i32, i32, i32, float, double, %struct.cppobjtype, i32, i16*, i16**, i8**, i32, %struct.XyPoint, [3 x %struct.Connection], %struct.Point*, %struct.XyPoint*, i32, i8*, i8*, i16*, %struct.ShortArray, %struct.IntChunk, %struct.cppobjtype, %struct.cppobjtype, %struct.RefPoint, i32, %struct.cppobjtype, %struct.cppobjtype }
%struct.XyPoint = type { i16, i16 }
%struct.cppobjtype = type { i32, i16, i16 }
@Msg = external global [256 x i8] ; <[256 x i8]*> [#uses=1]
@.str53615 = external constant [48 x i8] ; <[48 x i8]*> [#uses=1]
@FirstTime.4637.b = external global i1 ; <i1*> [#uses=1]
define fastcc void @Draw7(i32 %Option, i32* %Status) {
entry:
%tmp115.b = load i1, i1* @FirstTime.4637.b ; <i1> [#uses=1]
br i1 %tmp115.b, label %cond_next239, label %cond_next.i
cond_next.i: ; preds = %entry
ret void
cond_next239: ; preds = %entry
%tmp242 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %tmp242, label %cond_next253, label %cond_next296
cond_next253: ; preds = %cond_next239
switch i32 %Option, label %bb1326 [
i32 3, label %cond_true258
i32 4, label %cond_true268
i32 2, label %cond_true279
i32 1, label %cond_next315
]
cond_true258: ; preds = %cond_next253
ret void
cond_true268: ; preds = %cond_next253
ret void
cond_true279: ; preds = %cond_next253
ret void
cond_next296: ; preds = %cond_next239
ret void
cond_next315: ; preds = %cond_next253
%tmp1140 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %tmp1140, label %cond_true1143, label %bb1326
cond_true1143: ; preds = %cond_next315
%tmp1148 = icmp eq i32 0, 0 ; <i1> [#uses=4]
br i1 %tmp1148, label %cond_next1153, label %cond_true1151
cond_true1151: ; preds = %cond_true1143
ret void
cond_next1153: ; preds = %cond_true1143
%tmp8.i.i185 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br i1 %tmp8.i.i185, label %TestObj_new1.exit, label %cond_true.i.i187
cond_true.i.i187: ; preds = %cond_next1153
ret void
TestObj_new1.exit: ; preds = %cond_next1153
%tmp1167 = icmp eq i16 0, 0 ; <i1> [#uses=1]
%tmp1178 = icmp eq i32 0, 0 ; <i1> [#uses=1]
%bothcond = and i1 %tmp1167, %tmp1178 ; <i1> [#uses=1]
br i1 %bothcond, label %bb1199, label %bb1181
bb1181: ; preds = %TestObj_new1.exit
ret void
bb1199: ; preds = %TestObj_new1.exit
br i1 %tmp1148, label %cond_next1235, label %Object_Dump.exit302
Object_Dump.exit302: ; preds = %bb1199
ret void
cond_next1235: ; preds = %bb1199
%bothcond10485 = or i1 false, %tmp1148 ; <i1> [#uses=1]
br i1 %bothcond10485, label %cond_next1267, label %cond_true1248
cond_true1248: ; preds = %cond_next1235
ret void
cond_next1267: ; preds = %cond_next1235
br i1 %tmp1148, label %cond_next1275, label %cond_true1272
cond_true1272: ; preds = %cond_next1267
%tmp1273 = load %struct.TestObj*, %struct.TestObj** null ; <%struct.TestObj*> [#uses=2]
%tmp2930.i = ptrtoint %struct.TestObj* %tmp1273 to i32 ; <i32> [#uses=1]
%tmp42.i348 = sub i32 0, %tmp2930.i ; <i32> [#uses=1]
%tmp45.i = getelementptr %struct.TestObj, %struct.TestObj* %tmp1273, i32 0, i32 0 ; <i8**> [#uses=2]
%tmp48.i = load i8*, i8** %tmp45.i ; <i8*> [#uses=1]
%tmp50.i350 = call i32 (i8*, i8*, ...)* @sprintf( i8* getelementptr ([256 x i8], [256 x i8]* @Msg, i32 0, i32 0), i8* getelementptr ([48 x i8], [48 x i8]* @.str53615, i32 0, i32 0), i8* null, i8** %tmp45.i, i8* %tmp48.i ) ; <i32> [#uses=0]
br i1 false, label %cond_true.i632.i, label %Ut_TraceMsg.exit648.i
cond_true.i632.i: ; preds = %cond_true1272
ret void
Ut_TraceMsg.exit648.i: ; preds = %cond_true1272
%tmp57.i = getelementptr i8, i8* null, i32 %tmp42.i348 ; <i8*> [#uses=0]
ret void
cond_next1275: ; preds = %cond_next1267
ret void
bb1326: ; preds = %cond_next315, %cond_next253
ret void
}
declare i32 @sprintf(i8*, i8*, ...)