@@ -31,31 +31,25 @@ define i1 @main.keepStringConversion(ptr %a.data, i32 %a.len, i32 %a.cap, ptr %b
3131entry:
3232 %0 = call %runtime._string @runtime.stringFromBytes (ptr %a.data , i32 %a.len , i32 %a.cap , ptr undef )
3333 %1 = extractvalue %runtime._string %0 , 0
34- %2 = extractvalue %runtime._string %0 , 1
35- call void @useString (ptr %1 , i32 %2 )
36- %3 = call i1 @runtime.stringEqual (ptr %1 , i32 %2 , ptr %b.data , i32 %b.len , ptr undef )
37- ret i1 %3
34+ call void @useString (ptr %1 , i32 %a.len )
35+ %2 = call i1 @runtime.stringEqual (ptr %1 , i32 %a.len , ptr %b.data , i32 %b.len , ptr undef )
36+ ret i1 %2
3837}
3938
4039define i32 @main.equalAndLen (ptr %a.data , i32 %a.len , i32 %a.cap , ptr %s.data , i32 %s.len , ptr %context ) {
4140entry:
42- %0 = call %runtime._string @runtime.stringFromBytes (ptr %a.data , i32 %a.len , i32 %a.cap , ptr undef )
43- %1 = extractvalue %runtime._string %0 , 0
44- %2 = extractvalue %runtime._string %0 , 1
4541 %equal = call i1 @runtime.stringEqual (ptr %a.data , i32 %a.len , ptr %s.data , i32 %s.len , ptr undef )
46- %len = extractvalue %runtime._string %0 , 1
4742 %equal.ext = zext i1 %equal to i32
48- %result = add i32 %len , %equal.ext
43+ %result = add i32 %a. len , %equal.ext
4944 ret i32 %result
5045}
5146
5247define i1 @main.equalBeforeOtherUse (ptr %a.data , i32 %a.len , i32 %a.cap , ptr %s.data , i32 %s.len , ptr %context ) {
5348entry:
5449 %0 = call %runtime._string @runtime.stringFromBytes (ptr %a.data , i32 %a.len , i32 %a.cap , ptr undef )
5550 %1 = extractvalue %runtime._string %0 , 0
56- %2 = extractvalue %runtime._string %0 , 1
5751 %equal = call i1 @runtime.stringEqual (ptr %a.data , i32 %a.len , ptr %s.data , i32 %s.len , ptr undef )
58- call void @useString (ptr %1 , i32 %2 )
52+ call void @useString (ptr %1 , i32 %a.len )
5953 ret i1 %equal
6054}
6155
@@ -71,10 +65,9 @@ define i1 @main.keepComparisonAfterMutation(ptr %a.data, i32 %a.len, i32 %a.cap,
7165entry:
7266 %0 = call %runtime._string @runtime.stringFromBytes (ptr %a.data , i32 %a.len , i32 %a.cap , ptr undef )
7367 %1 = extractvalue %runtime._string %0 , 0
74- %2 = extractvalue %runtime._string %0 , 1
7568 %equal1 = call i1 @runtime.stringEqual (ptr %a.data , i32 %a.len , ptr %s.data , i32 %s.len , ptr undef )
7669 store i8 1 , ptr %a.data , align 1
77- %equal2 = call i1 @runtime.stringEqual (ptr %1 , i32 %2 , ptr %s.data , i32 %s.len , ptr undef )
70+ %equal2 = call i1 @runtime.stringEqual (ptr %1 , i32 %a.len , ptr %s.data , i32 %s.len , ptr undef )
7871 %result = and i1 %equal1 , %equal2
7972 ret i1 %result
8073}
8477 %a.data = alloca [4 x i8 ], align 1
8578 %0 = call %runtime._string @runtime.stringFromBytes (ptr %a.data , i32 4 , i32 4 , ptr undef )
8679 %1 = extractvalue %runtime._string %0 , 0
87- %2 = extractvalue %runtime._string %0 , 1
8880 call void @llvm.lifetime.end.p0 (ptr %a.data )
89- %equal = call i1 @runtime.stringEqual (ptr %1 , i32 %2 , ptr %s.data , i32 %s.len , ptr undef )
81+ %equal = call i1 @runtime.stringEqual (ptr %1 , i32 4 , ptr %s.data , i32 %s.len , ptr undef )
9082 ret i1 %equal
9183}
9284
0 commit comments