mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	[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
			
			
This commit is contained in:
		| @@ -144,7 +144,7 @@ entry: | ||||
|   %1 = bitcast %struct.SmallStruct_1b* %0 to { i8 }* | ||||
|   %2 = getelementptr { i8 }, { i8 }* %1, i32 0, i32 0 | ||||
|   %3 = load i8, i8* %2, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i8 inreg %3) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i8 inreg %3) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_1b:  | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 56 | ||||
| @@ -158,7 +158,7 @@ entry: | ||||
|   %1 = bitcast %struct.SmallStruct_2b* %0 to { i16 }* | ||||
|   %2 = getelementptr { i16 }, { i16 }* %1, i32 0, i32 0 | ||||
|   %3 = load i16, i16* %2, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i16 inreg %3) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i16 inreg %3) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_2b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 48 | ||||
| @@ -175,7 +175,7 @@ entry: | ||||
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 3, i32 0, i1 false) | ||||
|   %3 = getelementptr { i24 }, { i24 }* %.coerce, i32 0, i32 0 | ||||
|   %4 = load i24, i24* %3, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i24 inreg %4) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i24 inreg %4) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_3b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 40 | ||||
| @@ -191,7 +191,7 @@ entry: | ||||
|   %1 = bitcast %struct.SmallStruct_4b* %0 to { i32 }* | ||||
|   %2 = getelementptr { i32 }, { i32 }* %1, i32 0, i32 0 | ||||
|   %3 = load i32, i32* %2, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i32 inreg %3) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i32 inreg %3) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_4b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 32 | ||||
| @@ -208,7 +208,7 @@ entry: | ||||
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 5, i32 0, i1 false) | ||||
|   %3 = getelementptr { i40 }, { i40 }* %.coerce, i32 0, i32 0 | ||||
|   %4 = load i40, i40* %3, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i40 inreg %4) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i40 inreg %4) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_5b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 24 | ||||
| @@ -225,7 +225,7 @@ entry: | ||||
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 6, i32 0, i1 false) | ||||
|   %3 = getelementptr { i48 }, { i48 }* %.coerce, i32 0, i32 0 | ||||
|   %4 = load i48, i48* %3, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i48 inreg %4) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i48 inreg %4) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_6b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 16 | ||||
| @@ -242,7 +242,7 @@ entry: | ||||
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %2, i64 7, i32 0, i1 false) | ||||
|   %3 = getelementptr { i56 }, { i56 }* %.coerce, i32 0, i32 0 | ||||
|   %4 = load i56, i56* %3, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i56 inreg %4) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i56 inreg %4) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_7b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 8 | ||||
| @@ -256,7 +256,7 @@ entry: | ||||
|   %1 = bitcast %struct.SmallStruct_8b* %0 to { i64 }* | ||||
|   %2 = getelementptr { i64 }, { i64 }* %1, i32 0, i32 0 | ||||
|   %3 = load i64, i64* %2, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i64 inreg %3) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i64 inreg %3) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_8b: | ||||
|  ; CHECK-NOT: dsll | ||||
| @@ -275,7 +275,7 @@ entry: | ||||
|   %4 = load i64, i64* %3, align 1 | ||||
|   %5 = getelementptr { i64, i8 }, { i64, i8 }* %.coerce, i32 0, i32 1 | ||||
|   %6 = load i8, i8* %5, align 1 | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i64 inreg %4, i8 inreg %6) | ||||
|   call void (i8*, ...)* @varArgF_SmallStruct(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i64 inreg %4, i8 inreg %6) | ||||
|   ret void | ||||
|  ; CHECK-LABEL: smallStruct_9b: | ||||
|  ; CHECK: dsll $[[R1:[0-9]+]], $[[R2:[0-9]+]], 56 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user