mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 05:30:49 +00:00
[opaque pointer type] Add textual IR support for explicit type parameter to the call instruction
See r230786 and r230794 for similar changes to gep and load respectively. Call is a bit different because it often doesn't have a single explicit type - usually the type is deduced from the arguments, and just the return type is explicit. In those cases there's no need to change the IR. When that's not the case, the IR usually contains the pointer type of the first operand - but since typed pointers are going away, that representation is insufficient so I'm just stripping the "pointerness" of the explicit type away. This does make the IR a bit weird - it /sort of/ reads like the type of the first operand: "call void () %x(" but %x is actually of type "void ()*" and will eventually be just of type "ptr". But this seems not too bad and I don't think it would benefit from repeating the type ("void (), void () * %x(" and then eventually "void (), ptr %x(") as has been done with gep and load. This also has a side benefit: since the explicit type is no longer a pointer, there's no ambiguity between an explicit type and a function that returns a function pointer. Previously this case needed an explicit type (eg: a function returning a void() function was written as "call void () () * @x(" rather than "call void () * @x(" because of the ambiguity between a function returning a pointer to a void() function and a function returning void). No ambiguity means even function pointer return types can just be written alone, without writing the whole function's type. This leaves /only/ the varargs case where the explicit type is required. Given the special type syntax in call instructions, the regex-fu used for migration was a bit more involved in its own unique way (as every one of these is) so here it is. Use it in conjunction with the apply.sh script and associated find/xargs commands I've provided in rr230786 to migrate your out of tree tests. Do let me know if any of this doesn't cover your cases & we can iterate on a more general script/regexes to help others with out of tree tests. About 9 test cases couldn't be automatically migrated - half of those were functions returning function pointers, where I just had to manually delete the function argument types now that we didn't need an explicit function type there. The other half were typedefs of function types used in calls - just had to manually drop the * from those. import fileinput import sys import re pat = re.compile(r'((?:=|:|^|\s)call\s(?:[^@]*?))(\s*$|\s*(?:(?:\[\[[a-zA-Z0-9_]+\]\]|[@%](?:(")?[\\\?@a-zA-Z0-9_.]*?(?(3)"|)|{{.*}}))(?:\(|$)|undef|inttoptr|bitcast|null|asm).*$)') addrspace_end = re.compile(r"addrspace\(\d+\)\s*\*$") func_end = re.compile("(?:void.*|\)\s*)\*$") def conv(match, line): if not match or re.search(addrspace_end, match.group(1)) or not re.search(func_end, match.group(1)): return line return line[:match.start()] + match.group(1)[:match.group(1).rfind('*')].rstrip() + match.group(2) + line[match.end():] for line in sys.stdin: sys.stdout.write(conv(re.search(pat, line), line)) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235145 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4906c57876
commit
32b845d223
@ -1337,6 +1337,10 @@ public:
|
||||
|
||||
~CallInst() override;
|
||||
|
||||
Type *getFunctionType() const {
|
||||
return cast<PointerType>(getCalledValue()->getType())->getElementType();
|
||||
}
|
||||
|
||||
// Note that 'musttail' implies 'tail'.
|
||||
enum TailCallKind { TCK_None = 0, TCK_Tail = 1, TCK_MustTail = 2 };
|
||||
TailCallKind getTailCallKind() const {
|
||||
|
@ -5160,10 +5160,8 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
|
||||
// If RetType is a non-function pointer type, then this is the short syntax
|
||||
// for the call, which means that RetType is just the return type. Infer the
|
||||
// rest of the function argument types from the arguments that are present.
|
||||
PointerType *PFTy = nullptr;
|
||||
FunctionType *Ty = nullptr;
|
||||
if (!(PFTy = dyn_cast<PointerType>(RetType)) ||
|
||||
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
|
||||
FunctionType *Ty = dyn_cast<FunctionType>(RetType);
|
||||
if (!Ty) {
|
||||
// Pull out the types of all of the arguments...
|
||||
std::vector<Type*> ParamTypes;
|
||||
for (unsigned i = 0, e = ArgList.size(); i != e; ++i)
|
||||
@ -5173,12 +5171,12 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
|
||||
return Error(RetTypeLoc, "Invalid result type for LLVM function");
|
||||
|
||||
Ty = FunctionType::get(RetType, ParamTypes, false);
|
||||
PFTy = PointerType::getUnqual(Ty);
|
||||
}
|
||||
|
||||
// Look up the callee.
|
||||
Value *Callee;
|
||||
if (ConvertValIDToValue(PFTy, CalleeID, Callee, &PFS)) return true;
|
||||
if (ConvertValIDToValue(PointerType::getUnqual(Ty), CalleeID, Callee, &PFS))
|
||||
return true;
|
||||
|
||||
// Set up the Attribute for the function.
|
||||
SmallVector<AttributeSet, 8> Attrs;
|
||||
|
@ -2781,8 +2781,7 @@ void AssemblyWriter::printInstruction(const Instruction &I) {
|
||||
}
|
||||
|
||||
Operand = CI->getCalledValue();
|
||||
PointerType *PTy = cast<PointerType>(Operand->getType());
|
||||
FunctionType *FTy = cast<FunctionType>(PTy->getElementType());
|
||||
FunctionType *FTy = cast<FunctionType>(CI->getFunctionType());
|
||||
Type *RetTy = FTy->getReturnType();
|
||||
const AttributeSet &PAL = CI->getAttributes();
|
||||
|
||||
@ -2794,15 +2793,9 @@ void AssemblyWriter::printInstruction(const Instruction &I) {
|
||||
// and if the return type is not a pointer to a function.
|
||||
//
|
||||
Out << ' ';
|
||||
if (!FTy->isVarArg() &&
|
||||
(!RetTy->isPointerTy() ||
|
||||
!cast<PointerType>(RetTy)->getElementType()->isFunctionTy())) {
|
||||
TypePrinter.print(RetTy, Out);
|
||||
Out << ' ';
|
||||
writeOperand(Operand, false);
|
||||
} else {
|
||||
writeOperand(Operand, true);
|
||||
}
|
||||
TypePrinter.print(FTy->isVarArg() ? FTy : RetTy, Out);
|
||||
Out << ' ';
|
||||
writeOperand(Operand, false);
|
||||
Out << '(';
|
||||
for (unsigned op = 0, Eop = CI->getNumArgOperands(); op < Eop; ++op) {
|
||||
if (op > 0)
|
||||
|
@ -26,7 +26,7 @@ no_exit: ; preds = %no_exit, %entry
|
||||
loopexit: ; preds = %no_exit, %entry
|
||||
%Y.0.1 = phi i32 [ 0, %entry ], [ %tmp.13, %no_exit ] ; <i32> [#uses=1]
|
||||
%tmp.4 = getelementptr [3 x [3 x i32]], [3 x [3 x i32]]* %X, i32 0, i32 0 ; <[3 x i32]*> [#uses=1]
|
||||
%tmp.15 = call i32 (...)* @foo( [3 x i32]* %tmp.4, i32 %Y.0.1 ) ; <i32> [#uses=0]
|
||||
%tmp.15 = call i32 (...) @foo( [3 x i32]* %tmp.4, i32 %Y.0.1 ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ entry:
|
||||
%tmp = getelementptr %struct.x, %struct.x* %X, i32 0, i32 0 ; <[4 x i32]*> [#uses=1]
|
||||
%tmp1 = getelementptr [4 x i32], [4 x i32]* %tmp, i32 0, i32 3 ; <i32*> [#uses=1]
|
||||
store i32 2, i32* %tmp1, align 4
|
||||
%tmp2 = call i32 (...)* @bar( %struct.x* byval align 4 %X ) nounwind ; <i32> [#uses=0]
|
||||
%tmp2 = call i32 (...) @bar( %struct.x* byval align 4 %X ) nounwind ; <i32> [#uses=0]
|
||||
br label %return
|
||||
return: ; preds = %entry
|
||||
ret void
|
||||
|
@ -6,7 +6,7 @@ target triple = "i686-apple-darwin8"
|
||||
|
||||
define i32 @foo(%struct.x* byval %a) nounwind {
|
||||
; CHECK: ret i32 1
|
||||
%tmp1 = tail call i32 (...)* @bar( %struct.x* %a ) nounwind ; <i32> [#uses=0]
|
||||
%tmp1 = tail call i32 (...) @bar( %struct.x* %a ) nounwind ; <i32> [#uses=0]
|
||||
%tmp2 = getelementptr %struct.x, %struct.x* %a, i32 0, i32 0 ; <i32*> [#uses=2]
|
||||
store i32 1, i32* %tmp2, align 4
|
||||
store i32 2, i32* @g, align 4
|
||||
|
@ -124,7 +124,7 @@ for.inc10: ; preds = %for.end9
|
||||
|
||||
for.end12: ; preds = %for.cond
|
||||
%6 = load i32, i32* @g, align 4
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i32 %6)
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i32 %6)
|
||||
store i32 0, i32* @g, align 4
|
||||
store i32 0, i32* %i, align 4
|
||||
br label %for.cond13
|
||||
@ -165,7 +165,7 @@ for.inc22: ; preds = %for.end21
|
||||
|
||||
for.end24: ; preds = %for.cond13
|
||||
%11 = load i32, i32* @g, align 4
|
||||
%call25 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i32 %11)
|
||||
%call25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i32 %11)
|
||||
store i32 0, i32* @g, align 4
|
||||
store i32 0, i32* %i, align 4
|
||||
br label %for.cond26
|
||||
@ -188,7 +188,7 @@ for.inc29: ; preds = %for.body28
|
||||
|
||||
for.end31: ; preds = %for.cond26
|
||||
%14 = load i32, i32* @g, align 4
|
||||
%call32 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i32 %14)
|
||||
%call32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i32 %14)
|
||||
store i32 0, i32* @g, align 4
|
||||
%15 = load i32, i32* %retval
|
||||
ret i32 %15
|
||||
|
@ -12,6 +12,6 @@ entry:
|
||||
|
||||
define void @caller() {
|
||||
entry:
|
||||
call void (...)* @callee( void (...)* @callee )
|
||||
call void (...) @callee( void (...)* @callee )
|
||||
unreachable
|
||||
}
|
||||
|
@ -25,6 +25,6 @@ main_entry:
|
||||
%0 = load volatile i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @b, i64 0, i32 0), align 4
|
||||
store i32 %0, i32* @c, align 4
|
||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* bitcast (%struct.anon* @b to i8*), i8* bitcast (%struct.anon* @a to i8*), i64 12, i32 4, i1 false) nounwind
|
||||
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %0) nounwind
|
||||
%call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %0) nounwind
|
||||
ret i32 0
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ next:
|
||||
select i1 true, void ()* @f3, void ()* @f4
|
||||
store void ()* @f5, void ()** %x
|
||||
call void @f6()
|
||||
call void (void ()*, void ()*)* bitcast (void ()* @f7 to void (void ()*, void ()*)*)(void ()* @f8, void ()* @f9)
|
||||
call void (void ()*, void ()*) bitcast (void ()* @f7 to void (void ()*, void ()*)*)(void ()* @f8, void ()* @f9)
|
||||
invoke void @f10() to label %exit unwind label %unwind
|
||||
|
||||
exit:
|
||||
|
@ -13,7 +13,7 @@ bb.nph: ; preds = %entry
|
||||
bb: ; preds = %bb.nph, %bb1
|
||||
%indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb1 ] ; <i32> [#uses=2]
|
||||
%argc_addr.04 = add i32 %indvar, %argc ; <i32> [#uses=1]
|
||||
tail call void (...)* @Test() nounwind
|
||||
tail call void (...) @Test() nounwind
|
||||
%1 = add i32 %argc_addr.04, 1 ; <i32> [#uses=1]
|
||||
br label %bb1
|
||||
|
||||
|
@ -14,7 +14,7 @@ entry:
|
||||
br label %lbl_818
|
||||
|
||||
lbl_818: ; preds = %for.end, %entry
|
||||
call void (...)* @func_27()
|
||||
call void (...) @func_27()
|
||||
store i32 0, i32* @g_814, align 4
|
||||
br label %for.cond
|
||||
|
||||
|
@ -65,7 +65,7 @@ for.inc: ; preds = %for.body
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.body, %for.cond
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %g_4.0) nounwind ; <i32> [#uses=0]
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %g_4.0) nounwind ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ for.cond.for.end9_crit_edge: ; preds = %for.inc8
|
||||
|
||||
for.end9: ; preds = %entry.for.end9_crit_edge, %for.cond.for.end9_crit_edge
|
||||
%3 = phi i32 [ %.pre, %entry.for.end9_crit_edge ], [ %shl, %for.cond.for.end9_crit_edge ]
|
||||
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %3) #2
|
||||
%call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %3) #2
|
||||
br label %return
|
||||
|
||||
return.loopexit.split: ; preds = %for.cond1.preheader.lr.ph
|
||||
|
@ -22,7 +22,7 @@ entry:
|
||||
%alloca = alloca i1
|
||||
%load2 = load i1, i1* %alloca
|
||||
%load3 = load i32, i32 addrspace(1)* %dparam
|
||||
%tok = tail call i32 (i1 ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_i1f(i1 ()* @return_i1, i32 0, i32 0, i32 0, i32 addrspace(1)* %dparam)
|
||||
%tok = tail call i32 (i1 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_i1f(i1 ()* @return_i1, i32 0, i32 0, i32 0, i32 addrspace(1)* %dparam)
|
||||
%relocate = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %tok, i32 4, i32 4)
|
||||
%load4 = load i32, i32 addrspace(1)* %relocate
|
||||
%nparam = getelementptr i32, i32 addrspace(1)* %dparam, i32 5
|
||||
|
@ -7,7 +7,7 @@
|
||||
declare void (i32)* @foo()
|
||||
|
||||
define void @test() {
|
||||
call void (i32)* ()* @foo( ) ; <%ty*>:1 [#uses=0]
|
||||
call void (i32)* () @foo( ) ; <%ty*>:1 [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -4,12 +4,12 @@
|
||||
; RUN: verify-uselistorder %s
|
||||
|
||||
define void @test() {
|
||||
call void (...)* bitcast (void (i16*, i32)* @AddString to void (...)*)( i16* null, i32 0 )
|
||||
call void (...) bitcast (void (i16*, i32)* @AddString to void (...)*)( i16* null, i32 0 )
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @AddString(i16* %tmp.124, i32 %tmp.127) {
|
||||
call void (...)* bitcast (void (i16*, i32)* @AddString to void (...)*)( i16* %tmp.124, i32 %tmp.127 )
|
||||
call void (...) bitcast (void (i16*, i32)* @AddString to void (...)*)( i16* %tmp.124, i32 %tmp.127 )
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,6 @@
|
||||
declare void @foo(...)
|
||||
|
||||
define void @bar() {
|
||||
call void (...)* @foo(%struct* byval null )
|
||||
call void (...) @foo(%struct* byval null )
|
||||
ret void
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
declare i8* @f(i8*, ...)
|
||||
|
||||
define i8* @f_thunk(i8* %this) {
|
||||
%rv = musttail call i8* (i8*, ...)* @f(i8* %this, ...)
|
||||
%rv = musttail call i8* (i8*, ...) @f(i8* %this, ...)
|
||||
; CHECK: error: unexpected ellipsis in argument list for musttail call in non-varargs function
|
||||
ret i8* %rv
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
declare i8* @f(i8*, ...)
|
||||
|
||||
define i8* @f_thunk(i8* %this, ...) {
|
||||
%rv = musttail call i8* (i8*, ...)* @f(i8* %this)
|
||||
%rv = musttail call i8* (i8*, ...) @f(i8* %this)
|
||||
; CHECK: error: expected '...' at end of argument list for musttail call in varargs function
|
||||
ret i8* %rv
|
||||
}
|
||||
|
@ -7,8 +7,8 @@
|
||||
declare i8* @f(i8*, ...)
|
||||
|
||||
define i8* @f_thunk(i8* %this, ...) {
|
||||
%rv = musttail call i8* (i8*, ...)* @f(i8* %this, ...)
|
||||
%rv = musttail call i8* (i8*, ...) @f(i8* %this, ...)
|
||||
ret i8* %rv
|
||||
}
|
||||
; CHECK-LABEL: define i8* @f_thunk(i8* %this, ...)
|
||||
; CHECK: %rv = musttail call i8* (i8*, ...)* @f(i8* %this, ...)
|
||||
; CHECK: %rv = musttail call i8* (i8*, ...) @f(i8* %this, ...)
|
||||
|
@ -173,8 +173,8 @@ entry:
|
||||
; CHECK-NEXT: %res2 = tail call i32 @test(i32 %x)
|
||||
%res2 = tail call i32 @test(i32 %x)
|
||||
|
||||
; CHECK-NEXT: %res3 = call i32 (i8*, ...)* @printf(i8* %msg, i32 12, i8 42)
|
||||
%res3 = call i32 (i8*, ...)* @printf(i8* %msg, i32 12, i8 42)
|
||||
; CHECK-NEXT: %res3 = call i32 (i8*, ...) @printf(i8* %msg, i32 12, i8 42)
|
||||
%res3 = call i32 (i8*, ...) @printf(i8* %msg, i32 12, i8 42)
|
||||
|
||||
ret void
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ define void @test_varargs_stackalign() {
|
||||
; CHECK-LABEL: test_varargs_stackalign:
|
||||
; CHECK-DARWINPCS: stp {{w[0-9]+}}, {{w[0-9]+}}, [sp, #16]
|
||||
|
||||
call void(...)* @callee([3 x float] undef, [2 x float] [float 1.0, float 2.0])
|
||||
call void(...) @callee([3 x float] undef, [2 x float] [float 1.0, float 2.0])
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -16,11 +16,11 @@ entry:
|
||||
%0 = load double, double* %d.addr, align 8
|
||||
%1 = load double, double* %d.addr, align 8
|
||||
%conv = fptoui double %1 to i64
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i32 0, i32 0), double %0, i64 %conv)
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i32 0, i32 0), double %0, i64 %conv)
|
||||
%2 = load double, double* %d.addr, align 8
|
||||
%3 = load double, double* %d.addr, align 8
|
||||
%conv1 = fptoui double %3 to i32
|
||||
%call2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str1, i32 0, i32 0), double %2, i32 %conv1)
|
||||
%call2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str1, i32 0, i32 0), double %2, i32 %conv1)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -37,12 +37,12 @@ entry:
|
||||
%conv = fpext float %0 to double
|
||||
%1 = load float, float* %f.addr, align 4
|
||||
%conv1 = fptoui float %1 to i64
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str2, i32 0, i32 0), double %conv, i64 %conv1)
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str2, i32 0, i32 0), double %conv, i64 %conv1)
|
||||
%2 = load float, float* %f.addr, align 4
|
||||
%conv2 = fpext float %2 to double
|
||||
%3 = load float, float* %f.addr, align 4
|
||||
%conv3 = fptoui float %3 to i32
|
||||
%call4 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str3, i32 0, i32 0), double %conv2, i32 %conv3)
|
||||
%call4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str3, i32 0, i32 0), double %conv2, i32 %conv3)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ declare void @variadic(i32 %a, ...)
|
||||
; Under AAPCS variadic functions have the same calling convention as
|
||||
; others. The extra arguments should go in registers rather than on the stack.
|
||||
define void @test_variadic() {
|
||||
call void(i32, ...)* @variadic(i32 0, i64 1, double 2.0)
|
||||
call void(i32, ...) @variadic(i32 0, i64 1, double 2.0)
|
||||
; CHECK: fmov d0, #2.0
|
||||
; CHECK: orr w1, wzr, #0x1
|
||||
; CHECK: bl variadic
|
||||
|
@ -94,7 +94,7 @@ define i32 @main() nounwind ssp {
|
||||
%10 = load i32, i32* %a10, align 4
|
||||
%11 = load i32, i32* %a11, align 4
|
||||
%12 = load i32, i32* %a12, align 4
|
||||
call void (i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)* @fn9(i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12)
|
||||
call void (i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @fn9(i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12)
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
@ -133,7 +133,7 @@ entry:
|
||||
store <4 x i32> %y, <4 x i32>* %y.addr, align 16
|
||||
%0 = load i32, i32* %x.addr, align 4
|
||||
%1 = load <4 x i32>, <4 x i32>* %y.addr, align 16
|
||||
call void (i8*, ...)* @foo(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %0, <4 x i32> %1)
|
||||
call void (i8*, ...) @foo(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %0, <4 x i32> %1)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -186,6 +186,6 @@ entry:
|
||||
%1 = load i32, i32* %x.addr, align 4
|
||||
%2 = bitcast %struct.s41* %s41 to i128*
|
||||
%3 = load i128, i128* %2, align 1
|
||||
call void (i8*, ...)* @foo2(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %1, i128 %3)
|
||||
call void (i8*, ...) @foo2(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %1, i128 %3)
|
||||
ret void
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ define i64 @anyreglimit(i64 %v1, i64 %v2, i64 %v3, i64 %v4, i64 %v5, i64 %v6, i6
|
||||
i64 %v17, i64 %v18, i64 %v19, i64 %v20, i64 %v21, i64 %v22, i64 %v23, i64 %v24,
|
||||
i64 %v25, i64 %v26, i64 %v27, i64 %v28, i64 %v29, i64 %v30, i64 %v31, i64 %v32) {
|
||||
entry:
|
||||
%result = tail call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 12, i32 15, i8* inttoptr (i64 0 to i8*), i32 32,
|
||||
%result = tail call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 12, i32 15, i8* inttoptr (i64 0 to i8*), i32 32,
|
||||
i64 %v1, i64 %v2, i64 %v3, i64 %v4, i64 %v5, i64 %v6, i64 %v7, i64 %v8,
|
||||
i64 %v9, i64 %v10, i64 %v11, i64 %v12, i64 %v13, i64 %v14, i64 %v15, i64 %v16,
|
||||
i64 %v17, i64 %v18, i64 %v19, i64 %v20, i64 %v21, i64 %v22, i64 %v23, i64 %v24,
|
||||
|
@ -55,7 +55,7 @@
|
||||
; CHECK-NEXT: .long 3
|
||||
define i64 @test() nounwind ssp uwtable {
|
||||
entry:
|
||||
call anyregcc void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 0, i32 16, i8* null, i32 2, i32 1, i32 2, i64 3)
|
||||
call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 0, i32 16, i8* null, i32 2, i32 1, i32 2, i64 3)
|
||||
ret i64 0
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ entry:
|
||||
define i64 @property_access1(i8* %obj) nounwind ssp uwtable {
|
||||
entry:
|
||||
%f = inttoptr i64 281474417671919 to i8*
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 1, i32 20, i8* %f, i32 1, i8* %obj)
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 1, i32 20, i8* %f, i32 1, i8* %obj)
|
||||
ret i64 %ret
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ define i64 @property_access2() nounwind ssp uwtable {
|
||||
entry:
|
||||
%obj = alloca i64, align 8
|
||||
%f = inttoptr i64 281474417671919 to i8*
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 2, i32 20, i8* %f, i32 1, i64* %obj)
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 2, i32 20, i8* %f, i32 1, i64* %obj)
|
||||
ret i64 %ret
|
||||
}
|
||||
|
||||
@ -123,7 +123,7 @@ define i64 @property_access3() nounwind ssp uwtable {
|
||||
entry:
|
||||
%obj = alloca i64, align 8
|
||||
%f = inttoptr i64 281474417671919 to i8*
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 3, i32 20, i8* %f, i32 0, i64* %obj)
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 3, i32 20, i8* %f, i32 0, i64* %obj)
|
||||
ret i64 %ret
|
||||
}
|
||||
|
||||
@ -205,7 +205,7 @@ entry:
|
||||
define i64 @anyreg_test1(i8* %a1, i8* %a2, i8* %a3, i8* %a4, i8* %a5, i8* %a6, i8* %a7, i8* %a8, i8* %a9, i8* %a10, i8* %a11, i8* %a12, i8* %a13) nounwind ssp uwtable {
|
||||
entry:
|
||||
%f = inttoptr i64 281474417671919 to i8*
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 4, i32 20, i8* %f, i32 13, i8* %a1, i8* %a2, i8* %a3, i8* %a4, i8* %a5, i8* %a6, i8* %a7, i8* %a8, i8* %a9, i8* %a10, i8* %a11, i8* %a12, i8* %a13)
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 4, i32 20, i8* %f, i32 13, i8* %a1, i8* %a2, i8* %a3, i8* %a4, i8* %a5, i8* %a6, i8* %a7, i8* %a8, i8* %a9, i8* %a10, i8* %a11, i8* %a12, i8* %a13)
|
||||
ret i64 %ret
|
||||
}
|
||||
|
||||
@ -287,7 +287,7 @@ entry:
|
||||
define i64 @anyreg_test2(i8* %a1, i8* %a2, i8* %a3, i8* %a4, i8* %a5, i8* %a6, i8* %a7, i8* %a8, i8* %a9, i8* %a10, i8* %a11, i8* %a12, i8* %a13) nounwind ssp uwtable {
|
||||
entry:
|
||||
%f = inttoptr i64 281474417671919 to i8*
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %f, i32 8, i8* %a1, i8* %a2, i8* %a3, i8* %a4, i8* %a5, i8* %a6, i8* %a7, i8* %a8, i8* %a9, i8* %a10, i8* %a11, i8* %a12, i8* %a13)
|
||||
%ret = call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %f, i32 8, i8* %a1, i8* %a2, i8* %a3, i8* %a4, i8* %a5, i8* %a6, i8* %a7, i8* %a8, i8* %a9, i8* %a10, i8* %a11, i8* %a12, i8* %a13)
|
||||
ret i64 %ret
|
||||
}
|
||||
|
||||
@ -315,7 +315,7 @@ entry:
|
||||
; CHECK-NEXT: .long 0
|
||||
define i64 @patchpoint_spilldef(i64 %p1, i64 %p2, i64 %p3, i64 %p4) {
|
||||
entry:
|
||||
%result = tail call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 12, i32 16, i8* inttoptr (i64 0 to i8*), i32 2, i64 %p1, i64 %p2)
|
||||
%result = tail call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 12, i32 16, i8* inttoptr (i64 0 to i8*), i32 2, i64 %p1, i64 %p2)
|
||||
tail call void asm sideeffect "nop", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() nounwind
|
||||
ret i64 %result
|
||||
}
|
||||
@ -355,7 +355,7 @@ entry:
|
||||
define i64 @patchpoint_spillargs(i64 %p1, i64 %p2, i64 %p3, i64 %p4) {
|
||||
entry:
|
||||
tail call void asm sideeffect "nop", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() nounwind
|
||||
%result = tail call anyregcc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 13, i32 16, i8* inttoptr (i64 0 to i8*), i32 2, i64 %p1, i64 %p2, i64 %p3, i64 %p4)
|
||||
%result = tail call anyregcc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 13, i32 16, i8* inttoptr (i64 0 to i8*), i32 2, i64 %p1, i64 %p2, i64 %p3, i64 %p4)
|
||||
ret i64 %result
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@ entry:
|
||||
; CHECK: fcvt s0, d0
|
||||
; CHECK: movi.4s v[[CONST:[0-9]+]], #0x80, lsl #24
|
||||
; CHECK: bit.16b v{{[0-9]+}}, v0, v[[CONST]]
|
||||
%0 = tail call double (...)* @bar() nounwind
|
||||
%0 = tail call double (...) @bar() nounwind
|
||||
%1 = fptrunc double %0 to float
|
||||
%2 = tail call float @copysignf(float 5.000000e-01, float %1) nounwind readnone
|
||||
%3 = fadd float %1, %2
|
||||
|
@ -10,7 +10,7 @@ target triple = "arm64-apple-macosx10"
|
||||
; CHECK: ret
|
||||
define void @g() nounwind ssp {
|
||||
entry:
|
||||
tail call void (i32, ...)* @f(i32 0, i32 0) nounwind
|
||||
tail call void (i32, ...) @f(i32 0, i32 0) nounwind
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
define void @clobberScratch(i32* %p) {
|
||||
%v = load i32, i32* %p
|
||||
tail call void asm sideeffect "nop", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() nounwind
|
||||
tail call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 5, i32 20, i8* null, i32 0, i32* %p, i32 %v)
|
||||
tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 5, i32 20, i8* null, i32 0, i32* %p, i32 %v)
|
||||
store i32 %v, i32* %p
|
||||
ret void
|
||||
}
|
||||
|
@ -23,9 +23,9 @@ entry:
|
||||
; FAST-NEXT: movk x16, #0xbeef
|
||||
; FAST-NEXT: blr x16
|
||||
%resolveCall2 = inttoptr i64 281474417671919 to i8*
|
||||
%result = tail call webkit_jscc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %resolveCall2, i32 2, i64 %p4, i64 %p2)
|
||||
%result = tail call webkit_jscc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %resolveCall2, i32 2, i64 %p4, i64 %p2)
|
||||
%resolveCall3 = inttoptr i64 244837814038255 to i8*
|
||||
tail call webkit_jscc void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 6, i32 20, i8* %resolveCall3, i32 2, i64 %p4, i64 %result)
|
||||
tail call webkit_jscc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 6, i32 20, i8* %resolveCall3, i32 2, i64 %p4, i64 %result)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ entry:
|
||||
; FAST-NEXT: movk x16, #0xbeef
|
||||
; FAST-NEXT: blr x16
|
||||
%call = inttoptr i64 281474417671919 to i8*
|
||||
%result = call webkit_jscc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 7, i32 20, i8* %call, i32 6, i64 %callee, i64 2, i64 undef, i32 4, i32 undef, i64 6)
|
||||
%result = call webkit_jscc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 7, i32 20, i8* %call, i32 6, i64 %callee, i64 2, i64 undef, i32 4, i32 undef, i64 6)
|
||||
ret i64 %result
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ entry:
|
||||
; FAST-NEXT: movk x16, #0xbeef
|
||||
; FAST-NEXT: blr x16
|
||||
%call = inttoptr i64 281474417671919 to i8*
|
||||
%result = call webkit_jscc i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 7, i32 20, i8* %call, i32 10, i64 %callee, i64 2, i64 undef, i32 4, i32 undef, i64 6, i32 undef, i32 8, i32 undef, i64 10)
|
||||
%result = call webkit_jscc i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 7, i32 20, i8* %call, i32 10, i64 %callee, i64 2, i64 undef, i32 4, i32 undef, i64 6, i32 undef, i32 8, i32 undef, i64 10)
|
||||
ret i64 %result
|
||||
}
|
||||
|
||||
|
@ -16,9 +16,9 @@ entry:
|
||||
; CHECK-NEXT: blr x16
|
||||
; CHECK: ret
|
||||
%resolveCall2 = inttoptr i64 244837814094590 to i8*
|
||||
%result = tail call i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 2, i32 20, i8* %resolveCall2, i32 4, i64 %p1, i64 %p2, i64 %p3, i64 %p4)
|
||||
%result = tail call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 2, i32 20, i8* %resolveCall2, i32 4, i64 %p1, i64 %p2, i64 %p3, i64 %p4)
|
||||
%resolveCall3 = inttoptr i64 244837814094591 to i8*
|
||||
tail call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 3, i32 20, i8* %resolveCall3, i32 2, i64 %p1, i64 %result)
|
||||
tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 3, i32 20, i8* %resolveCall3, i32 2, i64 %p1, i64 %result)
|
||||
ret i64 %result
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ entry:
|
||||
store i64 11, i64* %metadata
|
||||
store i64 12, i64* %metadata
|
||||
store i64 13, i64* %metadata
|
||||
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 4, i32 0, i64* %metadata)
|
||||
call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 0, i64* %metadata)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -51,14 +51,14 @@ entry:
|
||||
%tmp80 = add i64 %tmp79, -16
|
||||
%tmp81 = inttoptr i64 %tmp80 to i64*
|
||||
%tmp82 = load i64, i64* %tmp81, align 8
|
||||
tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 14, i32 8, i64 %arg, i64 %tmp2, i64 %tmp10, i64 %tmp82)
|
||||
tail call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 15, i32 32, i8* null, i32 3, i64 %arg, i64 %tmp10, i64 %tmp82)
|
||||
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 8, i64 %arg, i64 %tmp2, i64 %tmp10, i64 %tmp82)
|
||||
tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 15, i32 32, i8* null, i32 3, i64 %arg, i64 %tmp10, i64 %tmp82)
|
||||
%tmp83 = load i64, i64* %tmp33, align 8
|
||||
%tmp84 = add i64 %tmp83, -24
|
||||
%tmp85 = inttoptr i64 %tmp84 to i64*
|
||||
%tmp86 = load i64, i64* %tmp85, align 8
|
||||
tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 17, i32 8, i64 %arg, i64 %tmp10, i64 %tmp86)
|
||||
tail call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 18, i32 32, i8* null, i32 3, i64 %arg, i64 %tmp10, i64 %tmp86)
|
||||
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 17, i32 8, i64 %arg, i64 %tmp10, i64 %tmp86)
|
||||
tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 18, i32 32, i8* null, i32 3, i64 %arg, i64 %tmp10, i64 %tmp86)
|
||||
ret i64 10
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ entry:
|
||||
; CHECK-NEXT: nop
|
||||
; CHECK-NEXT: ldp
|
||||
; CHECK-NEXT: ret
|
||||
%result = tail call i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* null, i32 2, i64 %p1, i64 %p2)
|
||||
%result = tail call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* null, i32 2, i64 %p1, i64 %p2)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ entry:
|
||||
; CHECK: nop
|
||||
; CHECK-NEXT: nop
|
||||
; CHECK-NOT: nop
|
||||
tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 0, i32 16)
|
||||
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 16)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
||||
define void @constantargs() {
|
||||
entry:
|
||||
%0 = inttoptr i64 244837814094590 to i8*
|
||||
tail call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 1, i32 20, i8* %0, i32 0, i64 65535, i64 65536, i64 4294967295, i64 4294967296)
|
||||
tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 20, i8* %0, i32 0, i64 65535, i64 65536, i64 4294967295, i64 4294967296)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ entry:
|
||||
; Runtime void->void call.
|
||||
call void inttoptr (i64 244837814094590 to void ()*)()
|
||||
; Followed by inline OSR patchpoint with 12-byte shadow and 2 live vars.
|
||||
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 3, i32 12, i64 %a, i64 %b)
|
||||
call void (i64, i32, ...) @llvm.experimental.stackmap(i64 3, i32 12, i64 %a, i64 %b)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ entry:
|
||||
cold:
|
||||
; OSR patchpoint with 12-byte nop-slide and 2 live vars.
|
||||
%thunk = inttoptr i64 244837814094590 to i8*
|
||||
call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 4, i32 20, i8* %thunk, i32 0, i64 %a, i64 %b)
|
||||
call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 4, i32 20, i8* %thunk, i32 0, i64 %a, i64 %b)
|
||||
unreachable
|
||||
ret:
|
||||
ret void
|
||||
@ -142,7 +142,7 @@ ret:
|
||||
define i64 @propertyRead(i64* %obj) {
|
||||
entry:
|
||||
%resolveRead = inttoptr i64 244837814094590 to i8*
|
||||
%result = call i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %resolveRead, i32 1, i64* %obj)
|
||||
%result = call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %resolveRead, i32 1, i64* %obj)
|
||||
%add = add i64 %result, 3
|
||||
ret i64 %add
|
||||
}
|
||||
@ -162,7 +162,7 @@ entry:
|
||||
define void @propertyWrite(i64 %dummy1, i64* %obj, i64 %dummy2, i64 %a) {
|
||||
entry:
|
||||
%resolveWrite = inttoptr i64 244837814094590 to i8*
|
||||
call anyregcc void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 6, i32 20, i8* %resolveWrite, i32 2, i64* %obj, i64 %a)
|
||||
call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 6, i32 20, i8* %resolveWrite, i32 2, i64* %obj, i64 %a)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ entry:
|
||||
define void @jsVoidCall(i64 %dummy1, i64* %obj, i64 %arg, i64 %l1, i64 %l2) {
|
||||
entry:
|
||||
%resolveCall = inttoptr i64 244837814094590 to i8*
|
||||
call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 7, i32 20, i8* %resolveCall, i32 2, i64* %obj, i64 %arg, i64 %l1, i64 %l2)
|
||||
call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 7, i32 20, i8* %resolveCall, i32 2, i64* %obj, i64 %arg, i64 %l1, i64 %l2)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -206,7 +206,7 @@ entry:
|
||||
define i64 @jsIntCall(i64 %dummy1, i64* %obj, i64 %arg, i64 %l1, i64 %l2) {
|
||||
entry:
|
||||
%resolveCall = inttoptr i64 244837814094590 to i8*
|
||||
%result = call i64 (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i64 8, i32 20, i8* %resolveCall, i32 2, i64* %obj, i64 %arg, i64 %l1, i64 %l2)
|
||||
%result = call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 8, i32 20, i8* %resolveCall, i32 2, i64* %obj, i64 %arg, i64 %l1, i64 %l2)
|
||||
%add = add i64 %result, 3
|
||||
ret i64 %add
|
||||
}
|
||||
@ -226,7 +226,7 @@ entry:
|
||||
; CHECK-NEXT: .short 29
|
||||
define void @spilledValue(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3, i64 %arg4, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27) {
|
||||
entry:
|
||||
call void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 11, i32 20, i8* null, i32 5, i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3, i64 %arg4, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27)
|
||||
call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 11, i32 20, i8* null, i32 5, i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3, i64 %arg4, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -245,7 +245,7 @@ entry:
|
||||
; CHECK-NEXT: .short 29
|
||||
define webkit_jscc void @spilledStackMapValue(i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27, i64 %l28, i64 %l29) {
|
||||
entry:
|
||||
call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 12, i32 16, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27, i64 %l28, i64 %l29)
|
||||
call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 16, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27, i64 %l28, i64 %l29)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -263,7 +263,7 @@ entry:
|
||||
; CHECK-NEXT: .long 33
|
||||
|
||||
define void @liveConstant() {
|
||||
tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 15, i32 8, i32 33)
|
||||
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 8, i32 33)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ define void @liveConstant() {
|
||||
; CHECK-NEXT: .long -{{[0-9]+}}
|
||||
define void @clobberLR(i32 %a) {
|
||||
tail call void asm sideeffect "nop", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x31}"() nounwind
|
||||
tail call void (i64, i32, ...)* @llvm.experimental.stackmap(i64 16, i32 8, i32 %a)
|
||||
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 8, i32 %a)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -30,12 +30,12 @@ invoke.cont7:
|
||||
unreachable
|
||||
|
||||
if.end50.thread:
|
||||
tail call void (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 125)
|
||||
tail call void (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 128)
|
||||
tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 125)
|
||||
tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 128)
|
||||
unreachable
|
||||
|
||||
invoke.cont33:
|
||||
tail call void (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 119)
|
||||
tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 119)
|
||||
unreachable
|
||||
|
||||
invoke.cont41:
|
||||
@ -51,7 +51,7 @@ lpad40:
|
||||
br label %finally.catchall
|
||||
|
||||
finally.catchall:
|
||||
tail call void (i8*, ...)* @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 125)
|
||||
tail call void (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str1, i64 0, i64 0), i32 125)
|
||||
unreachable
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ main_:
|
||||
%DHSelect = select i1 %tmp8, i32 %tmp9, i32 %tmp10
|
||||
store i32 %DHSelect, i32* %i32X, align 4
|
||||
%tmp15 = load i32, i32* %i32X, align 4
|
||||
%tmp17 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str2, i32 0, i32 0), i32 %tmp15)
|
||||
%tmp17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str2, i32 0, i32 0), i32 %tmp15)
|
||||
ret i32 0
|
||||
|
||||
; CHECK: main:
|
||||
|
@ -39,7 +39,7 @@ define i64 @stackmap_liveness(i1 %c) {
|
||||
; Align
|
||||
; CHECK-NEXT: .align 3
|
||||
%1 = select i1 %c, i64 1, i64 2
|
||||
call anyregcc void (i64, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i64 1, i32 32, i8* null, i32 0)
|
||||
call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 32, i8* null, i32 0)
|
||||
ret i64 %1
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ cond_next881: ; preds = %bb866
|
||||
%tmp884885 = inttoptr i64 %tmp10959 to %struct.tree_identifier* ; <%struct.tree_identifier*> [#uses=1]
|
||||
%tmp887 = getelementptr %struct.tree_identifier, %struct.tree_identifier* %tmp884885, i32 0, i32 1, i32 0 ; <i8**> [#uses=1]
|
||||
%tmp888 = load i8*, i8** %tmp887 ; <i8*> [#uses=1]
|
||||
tail call void (i32, ...)* @error( i32 undef, i8* %tmp888 )
|
||||
tail call void (i32, ...) @error( i32 undef, i8* %tmp888 )
|
||||
ret void
|
||||
|
||||
cond_true918: ; preds = %cond_false841
|
||||
|
@ -5,7 +5,7 @@ entry:
|
||||
%A = alloca [1123 x i32], align 16 ; <[1123 x i32]*> [#uses=1]
|
||||
%B = alloca [3123 x i32], align 16 ; <[3123 x i32]*> [#uses=1]
|
||||
%C = alloca [12312 x i32], align 16 ; <[12312 x i32]*> [#uses=1]
|
||||
%tmp = call i32 (...)* @bar( [3123 x i32]* %B, [1123 x i32]* %A, [12312 x i32]* %C ) ; <i32> [#uses=0]
|
||||
%tmp = call i32 (...) @bar( [3123 x i32]* %B, [1123 x i32]* %A, [12312 x i32]* %C ) ; <i32> [#uses=0]
|
||||
ret i32 undef
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ define internal void @_ZN1B1iEv(%struct.B* %this) {
|
||||
entry:
|
||||
%tmp1 = getelementptr %struct.B, %struct.B* %this, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%tmp2 = load i32, i32* %tmp1 ; <i32> [#uses=1]
|
||||
%tmp4 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([7 x i8], [7 x i8]* @str, i32 0, i32 0), i32 %tmp2 ) ; <i32> [#uses=0]
|
||||
%tmp4 = tail call i32 (i8*, ...) @printf( i8* getelementptr ([7 x i8], [7 x i8]* @str, i32 0, i32 0), i32 %tmp2 ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ define internal void @_ZN1B1jEv(%struct.B* %this) {
|
||||
entry:
|
||||
%tmp1 = getelementptr %struct.B, %struct.B* %this, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%tmp2 = load i32, i32* %tmp1 ; <i32> [#uses=1]
|
||||
%tmp4 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([7 x i8], [7 x i8]* @str1, i32 0, i32 0), i32 %tmp2 ) ; <i32> [#uses=0]
|
||||
%tmp4 = tail call i32 (i8*, ...) @printf( i8* getelementptr ([7 x i8], [7 x i8]* @str1, i32 0, i32 0), i32 %tmp2 ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ cond_true1272: ; preds = %cond_next1267
|
||||
%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]
|
||||
%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
|
||||
|
@ -24,13 +24,13 @@ entry:
|
||||
br i1 %toBool, label %cond_true, label %cond_false
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp3 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp4 = call i32 (...)* @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp3 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
%tmp4 = call i32 (...) @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
br label %cond_next
|
||||
|
||||
cond_false: ; preds = %entry
|
||||
%tmp5 = call i32 (...)* @foo( ) ; <i32> [#uses=0]
|
||||
%tmp6 = call i32 (...)* @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp5 = call i32 (...) @foo( ) ; <i32> [#uses=0]
|
||||
%tmp6 = call i32 (...) @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
br label %cond_next
|
||||
|
||||
cond_next: ; preds = %cond_false, %cond_true
|
||||
@ -41,17 +41,17 @@ cond_next: ; preds = %cond_false, %cond_true
|
||||
br i1 %toBool10, label %cond_true11, label %cond_false15
|
||||
|
||||
cond_true11: ; preds = %cond_next
|
||||
%tmp13 = call i32 (...)* @foo( ) ; <i32> [#uses=0]
|
||||
%tmp14 = call i32 (...)* @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
%tmp13 = call i32 (...) @foo( ) ; <i32> [#uses=0]
|
||||
%tmp14 = call i32 (...) @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
br label %cond_next18
|
||||
|
||||
cond_false15: ; preds = %cond_next
|
||||
%tmp16 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp17 = call i32 (...)* @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
%tmp16 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
%tmp17 = call i32 (...) @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
br label %cond_next18
|
||||
|
||||
cond_next18: ; preds = %cond_false15, %cond_true11
|
||||
%tmp19 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp19 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
br label %return
|
||||
|
||||
return: ; preds = %cond_next18
|
||||
|
@ -26,8 +26,8 @@ entry:
|
||||
br i1 %toBool, label %cond_true, label %cond_false
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp3 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp4 = call i32 (...)* @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp3 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
%tmp4 = call i32 (...) @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp7 = load i32, i32* %q_addr ; <i32> [#uses=1]
|
||||
%tmp8 = icmp ne i32 %tmp7, 0 ; <i1> [#uses=1]
|
||||
%tmp89 = zext i1 %tmp8 to i8 ; <i8> [#uses=1]
|
||||
@ -35,8 +35,8 @@ cond_true: ; preds = %entry
|
||||
br i1 %toBool10, label %cond_true11, label %cond_false15
|
||||
|
||||
cond_false: ; preds = %entry
|
||||
%tmp5 = call i32 (...)* @foo( ) ; <i32> [#uses=0]
|
||||
%tmp6 = call i32 (...)* @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp5 = call i32 (...) @foo( ) ; <i32> [#uses=0]
|
||||
%tmp6 = call i32 (...) @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp27 = load i32, i32* %q_addr ; <i32> [#uses=1]
|
||||
%tmp28 = icmp ne i32 %tmp27, 0 ; <i1> [#uses=1]
|
||||
%tmp289 = zext i1 %tmp28 to i8 ; <i8> [#uses=1]
|
||||
@ -44,17 +44,17 @@ cond_false: ; preds = %entry
|
||||
br i1 %toBool210, label %cond_true11, label %cond_false15
|
||||
|
||||
cond_true11: ; preds = %cond_next
|
||||
%tmp13 = call i32 (...)* @foo( ) ; <i32> [#uses=0]
|
||||
%tmp14 = call i32 (...)* @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
%tmp13 = call i32 (...) @foo( ) ; <i32> [#uses=0]
|
||||
%tmp14 = call i32 (...) @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
br label %cond_next18
|
||||
|
||||
cond_false15: ; preds = %cond_next
|
||||
%tmp16 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp17 = call i32 (...)* @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
%tmp16 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
%tmp17 = call i32 (...) @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
br label %cond_next18
|
||||
|
||||
cond_next18: ; preds = %cond_false15, %cond_true11
|
||||
%tmp19 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp19 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
br label %return
|
||||
|
||||
return: ; preds = %cond_next18
|
||||
|
@ -36,8 +36,8 @@ entry:
|
||||
br i1 %toBool, label %cond_true, label %cond_false
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp3 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp4 = call i32 (...)* @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp3 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
%tmp4 = call i32 (...) @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp7 = load i32, i32* %q_addr ; <i32> [#uses=1]
|
||||
%tmp8 = icmp ne i32 %tmp7, 0 ; <i1> [#uses=1]
|
||||
%tmp89 = zext i1 %tmp8 to i8 ; <i8> [#uses=1]
|
||||
@ -45,8 +45,8 @@ cond_true: ; preds = %entry
|
||||
br i1 %toBool10, label %cond_true11, label %cond_false15
|
||||
|
||||
cond_false: ; preds = %entry
|
||||
%tmp5 = call i32 (...)* @foo( ) ; <i32> [#uses=0]
|
||||
%tmp6 = call i32 (...)* @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp5 = call i32 (...) @foo( ) ; <i32> [#uses=0]
|
||||
%tmp6 = call i32 (...) @baz( i32 5, i32 6 ) ; <i32> [#uses=0]
|
||||
%tmp27 = load i32, i32* %q_addr ; <i32> [#uses=1]
|
||||
%tmp28 = icmp ne i32 %tmp27, 0 ; <i1> [#uses=1]
|
||||
%tmp289 = zext i1 %tmp28 to i8 ; <i8> [#uses=1]
|
||||
@ -54,17 +54,17 @@ cond_false: ; preds = %entry
|
||||
br i1 %toBool210, label %cond_true11, label %cond_false15
|
||||
|
||||
cond_true11: ; preds = %cond_next
|
||||
%tmp13 = call i32 (...)* @foo( ) ; <i32> [#uses=0]
|
||||
%tmp14 = call i32 (...)* @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
%tmp13 = call i32 (...) @foo( ) ; <i32> [#uses=0]
|
||||
%tmp14 = call i32 (...) @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
br label %cond_next18
|
||||
|
||||
cond_false15: ; preds = %cond_next
|
||||
%tmp16 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp17 = call i32 (...)* @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
%tmp16 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
%tmp17 = call i32 (...) @quux( i32 3, i32 4 ) ; <i32> [#uses=0]
|
||||
br label %cond_next18
|
||||
|
||||
cond_next18: ; preds = %cond_false15, %cond_true11
|
||||
%tmp19 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp19 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
br label %return
|
||||
|
||||
return: ; preds = %cond_next18
|
||||
|
@ -13,7 +13,7 @@ bb88.i: ; preds = %bb74.i
|
||||
mandel.exit: ; preds = %bb88.i
|
||||
%tmp2 = load volatile double, double* getelementptr ({ double, double }, { double, double }* @accum, i32 0, i32 0), align 8 ; <double> [#uses=1]
|
||||
%tmp23 = fptosi double %tmp2 to i32 ; <i32> [#uses=1]
|
||||
%tmp5 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %tmp23 ) ; <i32> [#uses=0]
|
||||
%tmp5 = tail call i32 (i8*, ...) @printf( i8* getelementptr ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i32 %tmp23 ) ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -73,10 +73,10 @@ bb609.i.i: ; preds = %cond_next602.i.i
|
||||
br label %bb620.i.i
|
||||
bb620.i.i: ; preds = %bb620.i.i, %bb609.i.i
|
||||
%indvar166.i465.i = phi i32 [ %indvar.next167.i.i, %bb620.i.i ], [ 0, %bb609.i.i ] ; <i32> [#uses=1]
|
||||
%tmp640.i.i = call i32 (%struct.FILE*, i8*, ...)* @fscanf( %struct.FILE* %tmp61, i8* getelementptr ([5 x i8], [5 x i8]* @.str584, i32 0, i32 0), [1024 x i8]* null ) ; <i32> [#uses=0]
|
||||
%tmp640.i.i = call i32 (%struct.FILE*, i8*, ...) @fscanf( %struct.FILE* %tmp61, i8* getelementptr ([5 x i8], [5 x i8]* @.str584, i32 0, i32 0), [1024 x i8]* null ) ; <i32> [#uses=0]
|
||||
%tmp648.i.i = load i32, i32* null, align 4 ; <i32> [#uses=1]
|
||||
%tmp650.i468.i = icmp sgt i32 0, %tmp648.i.i ; <i1> [#uses=1]
|
||||
%tmp624.i469.i = call i32 (%struct.FILE*, i8*, ...)* @fscanf( %struct.FILE* %tmp61, i8* getelementptr ([5 x i8], [5 x i8]* @.str584, i32 0, i32 0), [1024 x i8]* null ) ; <i32> [#uses=0]
|
||||
%tmp624.i469.i = call i32 (%struct.FILE*, i8*, ...) @fscanf( %struct.FILE* %tmp61, i8* getelementptr ([5 x i8], [5 x i8]* @.str584, i32 0, i32 0), [1024 x i8]* null ) ; <i32> [#uses=0]
|
||||
%indvar.next167.i.i = add i32 %indvar166.i465.i, 1 ; <i32> [#uses=1]
|
||||
br i1 %tmp650.i468.i, label %bb653.i.i.loopexit, label %bb620.i.i
|
||||
bb653.i.i.loopexit: ; preds = %bb620.i.i
|
||||
|
@ -81,7 +81,7 @@ bb244: ; preds = %bb122, %bb122, %bb122, %bb122, %bb122, %bb122, %bb122, %bb122
|
||||
br i1 %0, label %bb435, label %bb433
|
||||
|
||||
bb394: ; preds = %bb122
|
||||
call void (i32, i32, i8*, i32, %struct.FILE_POS*, ...)* @Error(i32 1, i32 3, i8* getelementptr ([23 x i8], [23 x i8]* @"\01LC13423", i32 0, i32 0), i32 0, %struct.FILE_POS* @no_file_pos, i8* getelementptr ([13 x i8], [13 x i8]* @"\01LC18972", i32 0, i32 0), i8* null) nounwind
|
||||
call void (i32, i32, i8*, i32, %struct.FILE_POS*, ...) @Error(i32 1, i32 3, i8* getelementptr ([23 x i8], [23 x i8]* @"\01LC13423", i32 0, i32 0), i32 0, %struct.FILE_POS* @no_file_pos, i8* getelementptr ([13 x i8], [13 x i8]* @"\01LC18972", i32 0, i32 0), i8* null) nounwind
|
||||
br label %bb396
|
||||
|
||||
bb396: ; preds = %bb394, %bb131, %bb122, %bb122, %bb122, %bb122, %RESUME
|
||||
|
@ -4,6 +4,6 @@ declare i32 @printf(i8*, ...)
|
||||
|
||||
define i32 @main() {
|
||||
%rem_r = frem double 0.000000e+00, 0.000000e+00 ; <double> [#uses=1]
|
||||
%1 = call i32 (i8*, ...)* @printf(i8* null, double %rem_r) ; <i32> [#uses=0]
|
||||
%1 = call i32 (i8*, ...) @printf(i8* null, double %rem_r) ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
define i16 @fn16(i16 %arg0.0, <2 x i16> %arg1, i16 %arg2.0) nounwind {
|
||||
entry:
|
||||
store <2 x i16> %arg1, <2 x i16>* null
|
||||
%0 = call i32 (i8*, ...)* @printf(i8* getelementptr ([30 x i8], [30 x i8]* @.str, i32 0, i32 0), i32 0) nounwind ; <i32> [#uses=0]
|
||||
%0 = call i32 (i8*, ...) @printf(i8* getelementptr ([30 x i8], [30 x i8]* @.str, i32 0, i32 0), i32 0) nounwind ; <i32> [#uses=0]
|
||||
ret i16 0
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ bb1: ; preds = %bb
|
||||
|
||||
bb3: ; preds = %bb1, %bb
|
||||
%iftmp.0.0 = phi i32 [ 0, %bb1 ], [ -1, %bb ] ; <i32> [#uses=1]
|
||||
%1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([7 x i8], [7 x i8]* @"\01LC", i32 0, i32 0), i32 0, i32 %iftmp.0.0) nounwind ; <i32> [#uses=0]
|
||||
%1 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([7 x i8], [7 x i8]* @"\01LC", i32 0, i32 0), i32 0, i32 %iftmp.0.0) nounwind ; <i32> [#uses=0]
|
||||
%2 = load %struct.List*, %struct.List** null, align 4 ; <%struct.List*> [#uses=2]
|
||||
%phitmp = icmp eq %struct.List* %2, null ; <i1> [#uses=1]
|
||||
br i1 %phitmp, label %bb5, label %bb
|
||||
|
@ -57,6 +57,6 @@ Fft.exit.i: ; preds = %bb7.i.i
|
||||
br i1 undef, label %bb5.i, label %bb1.outer2.i.i.outer
|
||||
|
||||
bb5.i: ; preds = %Fft.exit.i
|
||||
%0 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([15 x i8], [15 x i8]* @"\01LC", i32 0, i32 0), double undef, double undef) nounwind ; <i32> [#uses=0]
|
||||
%0 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([15 x i8], [15 x i8]* @"\01LC", i32 0, i32 0), double undef, double undef) nounwind ; <i32> [#uses=0]
|
||||
unreachable
|
||||
}
|
||||
|
@ -47,14 +47,14 @@ bb11: ; preds = %bb9
|
||||
tail call void @diff(i8* undef, i8* %3, i32 undef, i32 undef, i32 undef, i32 undef) nounwind
|
||||
%4 = sitofp i32 undef to double ; <double> [#uses=1]
|
||||
%5 = fdiv double %4, 1.000000e+01 ; <double> [#uses=1]
|
||||
%6 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([29 x i8], [29 x i8]* @"\01LC12", i32 0, i32 0), double %5) nounwind ; <i32> [#uses=0]
|
||||
%6 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([29 x i8], [29 x i8]* @"\01LC12", i32 0, i32 0), double %5) nounwind ; <i32> [#uses=0]
|
||||
%7 = load i32, i32* @al_len, align 4 ; <i32> [#uses=1]
|
||||
%8 = load i32, i32* @no_mat, align 4 ; <i32> [#uses=1]
|
||||
%9 = load i32, i32* @no_mis, align 4 ; <i32> [#uses=1]
|
||||
%10 = sub i32 %7, %8 ; <i32> [#uses=1]
|
||||
%11 = sub i32 %10, %9 ; <i32> [#uses=1]
|
||||
%12 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([33 x i8], [33 x i8]* @"\01LC16", i32 0, i32 0), i32 %11) nounwind ; <i32> [#uses=0]
|
||||
%13 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([47 x i8], [47 x i8]* @"\01LC17", i32 0, i32 0), i32 undef, i32 %1, i32 undef, i32 undef) nounwind ; <i32> [#uses=0]
|
||||
%12 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([33 x i8], [33 x i8]* @"\01LC16", i32 0, i32 0), i32 %11) nounwind ; <i32> [#uses=0]
|
||||
%13 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([47 x i8], [47 x i8]* @"\01LC17", i32 0, i32 0), i32 undef, i32 %1, i32 undef, i32 undef) nounwind ; <i32> [#uses=0]
|
||||
br i1 undef, label %bb15, label %bb12
|
||||
|
||||
bb12: ; preds = %bb11
|
||||
|
@ -42,10 +42,10 @@ bb11: ; preds = %bb9
|
||||
store i32 0, i32* @no_mis, align 4
|
||||
%4 = getelementptr i8, i8* %B, i32 %0 ; <i8*> [#uses=1]
|
||||
tail call void @diff(i8* undef, i8* %4, i32 undef, i32 %3, i32 undef, i32 undef) nounwind
|
||||
%5 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([33 x i8], [33 x i8]* @"\01LC11", i32 0, i32 0), i32 %tmp13) nounwind ; <i32> [#uses=0]
|
||||
%5 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([33 x i8], [33 x i8]* @"\01LC11", i32 0, i32 0), i32 %tmp13) nounwind ; <i32> [#uses=0]
|
||||
%6 = load i32, i32* @no_mis, align 4 ; <i32> [#uses=1]
|
||||
%7 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([33 x i8], [33 x i8]* @"\01LC15", i32 0, i32 0), i32 %6) nounwind ; <i32> [#uses=0]
|
||||
%8 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([47 x i8], [47 x i8]* @"\01LC17", i32 0, i32 0), i32 undef, i32 %1, i32 undef, i32 %2) nounwind ; <i32> [#uses=0]
|
||||
%7 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([33 x i8], [33 x i8]* @"\01LC15", i32 0, i32 0), i32 %6) nounwind ; <i32> [#uses=0]
|
||||
%8 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([47 x i8], [47 x i8]* @"\01LC17", i32 0, i32 0), i32 undef, i32 %1, i32 undef, i32 %2) nounwind ; <i32> [#uses=0]
|
||||
br i1 undef, label %bb15, label %bb12
|
||||
|
||||
bb12: ; preds = %bb11
|
||||
|
@ -8,7 +8,7 @@ entry:
|
||||
;CHECK: [sp, #8]
|
||||
;CHECK: [sp, #12]
|
||||
;CHECK: [sp]
|
||||
tail call void (i8*, ...)* @f(i8* getelementptr ([1 x i8], [1 x i8]* @.str, i32 0, i32 0), i32 1, double 2.000000e+00, i32 3, double 4.000000e+00)
|
||||
tail call void (i8*, ...) @f(i8* getelementptr ([1 x i8], [1 x i8]* @.str, i32 0, i32 0), i32 1, double 2.000000e+00, i32 3, double 4.000000e+00)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -19,12 +19,12 @@ entry:
|
||||
%tmp21 = load i32, i32* undef ; <i32> [#uses=1]
|
||||
%0 = mul i32 1, %tmp21 ; <i32> [#uses=1]
|
||||
%vla22 = alloca i8, i32 %0, align 1 ; <i8*> [#uses=1]
|
||||
call void (...)* @zz(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i32 0, i32 0), i32 2, i32 1)
|
||||
call void (...) @zz(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i32 0, i32 0), i32 2, i32 1)
|
||||
br i1 undef, label %if.then, label %if.end36
|
||||
|
||||
if.then: ; preds = %entry
|
||||
%call = call i32 (...)* @x(%struct.q* undef, i8* undef, i8* %vla6, i8* %vla10, i32 undef) ; <i32> [#uses=0]
|
||||
%call35 = call i32 (...)* @x(%struct.q* undef, i8* %vla14, i8* %vla18, i8* %vla22, i32 undef) ; <i32> [#uses=0]
|
||||
%call = call i32 (...) @x(%struct.q* undef, i8* undef, i8* %vla6, i8* %vla10, i32 undef) ; <i32> [#uses=0]
|
||||
%call35 = call i32 (...) @x(%struct.q* undef, i8* %vla14, i8* %vla18, i8* %vla22, i32 undef) ; <i32> [#uses=0]
|
||||
unreachable
|
||||
|
||||
if.end36: ; preds = %entry
|
||||
|
@ -13,7 +13,7 @@
|
||||
define void @TW_oldinput(%struct.FILE* nocapture %fp) nounwind {
|
||||
entry:
|
||||
%xcenter = alloca i32, align 4 ; <i32*> [#uses=2]
|
||||
%0 = call i32 (%struct.FILE*, i8*, ...)* @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
|
||||
%0 = call i32 (%struct.FILE*, i8*, ...) @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
|
||||
%1 = icmp eq i32 %0, 4 ; <i1> [#uses=1]
|
||||
br i1 %1, label %bb, label %return
|
||||
|
||||
@ -137,7 +137,7 @@ bb322: ; preds = %bb248
|
||||
br i1 undef, label %bb248, label %bb445
|
||||
|
||||
bb445: ; preds = %bb322, %bb10, %bb
|
||||
%49 = call i32 (%struct.FILE*, i8*, ...)* @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
|
||||
%49 = call i32 (%struct.FILE*, i8*, ...) @fscanf(%struct.FILE* %fp, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str2708, i32 0, i32 0), i32* undef, i32* undef, i32* %xcenter, i32* null) nounwind ; <i32> [#uses=1]
|
||||
%50 = icmp eq i32 %49, 4 ; <i1> [#uses=1]
|
||||
br i1 %50, label %bb, label %return
|
||||
|
||||
|
@ -31,7 +31,7 @@ define internal void @_ZN1AD1Ev(%struct.A* nocapture %this) nounwind ssp align 2
|
||||
entry:
|
||||
%tmp.i = getelementptr inbounds %struct.A, %struct.A* %this, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%tmp2.i = load i32, i32* %tmp.i ; <i32> [#uses=1]
|
||||
%call.i = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str4, i32 0, i32 0), i32 %tmp2.i) nounwind ; <i32> [#uses=0]
|
||||
%call.i = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str4, i32 0, i32 0), i32 %tmp2.i) nounwind ; <i32> [#uses=0]
|
||||
%tmp3.i = load i32, i32* @d ; <i32> [#uses=1]
|
||||
%inc.i = add nsw i32 %tmp3.i, 1 ; <i32> [#uses=1]
|
||||
store i32 %inc.i, i32* @d
|
||||
@ -46,7 +46,7 @@ entry:
|
||||
%exception.i = tail call i8* @__cxa_allocate_exception(i32 4) nounwind ; <i8*> [#uses=2]
|
||||
%tmp2.i.i.i = bitcast i8* %exception.i to i32* ; <i32*> [#uses=1]
|
||||
store i32 1, i32* %tmp2.i.i.i
|
||||
%call.i.i.i = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str5, i32 0, i32 0), i32 1) nounwind ; <i32> [#uses=0]
|
||||
%call.i.i.i = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str5, i32 0, i32 0), i32 1) nounwind ; <i32> [#uses=0]
|
||||
invoke void @__cxa_throw(i8* %exception.i, i8* bitcast (%0* @_ZTI1A to i8*), i8* bitcast (void (%struct.A*)* @_ZN1AD1Ev to i8*)) noreturn
|
||||
to label %.noexc unwind label %lpad
|
||||
|
||||
@ -55,16 +55,16 @@ entry:
|
||||
|
||||
try.cont: ; preds = %lpad
|
||||
%0 = tail call i8* @__cxa_get_exception_ptr(i8* %exn) nounwind ; <i8*> [#uses=0]
|
||||
%call.i.i = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str3, i32 0, i32 0), i32 2) nounwind ; <i32> [#uses=0]
|
||||
%call.i.i = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str3, i32 0, i32 0), i32 2) nounwind ; <i32> [#uses=0]
|
||||
%1 = tail call i8* @__cxa_begin_catch(i8* %exn) nounwind ; <i8*> [#uses=0]
|
||||
%puts = tail call i32 @puts(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @str1, i32 0, i32 0)) ; <i32> [#uses=0]
|
||||
%call.i.i3 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str4, i32 0, i32 0), i32 2) nounwind ; <i32> [#uses=0]
|
||||
%call.i.i3 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str4, i32 0, i32 0), i32 2) nounwind ; <i32> [#uses=0]
|
||||
%tmp3.i.i = load i32, i32* @d ; <i32> [#uses=1]
|
||||
%inc.i.i4 = add nsw i32 %tmp3.i.i, 1 ; <i32> [#uses=1]
|
||||
store i32 %inc.i.i4, i32* @d
|
||||
tail call void @__cxa_end_catch()
|
||||
%tmp13 = load i32, i32* @d ; <i32> [#uses=1]
|
||||
%call14 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str2, i32 0, i32 0), i32 2, i32 %tmp13) ; <i32> [#uses=0]
|
||||
%call14 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str2, i32 0, i32 0), i32 2, i32 %tmp13) ; <i32> [#uses=0]
|
||||
%tmp16 = load i32, i32* @d ; <i32> [#uses=1]
|
||||
%cmp = icmp ne i32 %tmp16, 2 ; <i1> [#uses=1]
|
||||
%conv = zext i1 %cmp to i32 ; <i32> [#uses=1]
|
||||
|
@ -12,7 +12,7 @@ entry:
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
|
||||
if.then: ; preds = %entry
|
||||
tail call void (...)* @g(i32 %a, i32 %b) nounwind
|
||||
tail call void (...) @g(i32 %a, i32 %b) nounwind
|
||||
br label %if.end
|
||||
|
||||
if.end: ; preds = %if.then, %entry
|
||||
|
@ -12,7 +12,7 @@ entry:
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
|
||||
if.then: ; preds = %entry
|
||||
tail call void (...)* @h(i32 %a, i32 %b) nounwind
|
||||
tail call void (...) @h(i32 %a, i32 %b) nounwind
|
||||
br label %if.end
|
||||
|
||||
if.end: ; preds = %if.then, %entry
|
||||
@ -31,7 +31,7 @@ entry:
|
||||
br i1 %cmp, label %if.then, label %if.end
|
||||
|
||||
if.then: ; preds = %entry
|
||||
tail call void (...)* @h(i32 %a, i32 %b) nounwind
|
||||
tail call void (...) @h(i32 %a, i32 %b) nounwind
|
||||
br label %if.end
|
||||
|
||||
if.end: ; preds = %if.then, %entry
|
||||
|
@ -4,7 +4,7 @@ target triple = "armv6-none-linux-gnueabi"
|
||||
|
||||
define void @sample_test(i8* %.T0348, i16* nocapture %sourceA, i16* nocapture %destValues) {
|
||||
L.entry:
|
||||
%0 = call i32 (...)* @get_index(i8* %.T0348, i32 0)
|
||||
%0 = call i32 (...) @get_index(i8* %.T0348, i32 0)
|
||||
%1 = bitcast i16* %destValues to i8*
|
||||
%2 = mul i32 %0, 6
|
||||
%3 = getelementptr i8, i8* %1, i32 %2
|
||||
|
@ -33,7 +33,7 @@ entry:
|
||||
; CHECK: movw r0, #555
|
||||
define i32 @main() {
|
||||
entry:
|
||||
call void (i32, ...)* @test_byval_8_bytes_alignment(i32 555, %struct_t* byval @static_val)
|
||||
call void (i32, ...) @test_byval_8_bytes_alignment(i32 555, %struct_t* byval @static_val)
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ define void @test_byval_8_bytes_alignment_fixed_arg(i32 %n1, %struct_t* byval %v
|
||||
entry:
|
||||
%a = getelementptr inbounds %struct_t, %struct_t* %val, i32 0, i32 0
|
||||
%0 = load double, double* %a
|
||||
call void (double)* @f(double %0)
|
||||
call void (double) @f(double %0)
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -60,6 +60,6 @@ entry:
|
||||
; CHECK: movw r0, #555
|
||||
define i32 @main_fixed_arg() {
|
||||
entry:
|
||||
call void (i32, %struct_t*)* @test_byval_8_bytes_alignment_fixed_arg(i32 555, %struct_t* byval @static_val)
|
||||
call void (i32, %struct_t*) @test_byval_8_bytes_alignment_fixed_arg(i32 555, %struct_t* byval @static_val)
|
||||
ret i32 0
|
||||
}
|
||||
|
@ -14,6 +14,6 @@ define void @test_byval_usage_scheduling(i32 %n1, i32 %n2, %struct_t* byval %val
|
||||
entry:
|
||||
%a = getelementptr inbounds %struct_t, %struct_t* %val, i32 0, i32 0
|
||||
%0 = load double, double* %a
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), double %0)
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), double %0)
|
||||
ret void
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ define void @printfn(i32 %a, i16 signext %b, double %C, i8 signext %E) {
|
||||
entry:
|
||||
%conv = sext i16 %b to i32
|
||||
%conv1 = sext i8 %E to i32
|
||||
%call = tail call i32 (i8*, ...)* @printf(
|
||||
%call = tail call i32 (i8*, ...) @printf(
|
||||
i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), ; --> R0
|
||||
i32 %a, ; --> R1
|
||||
i32 %conv, ; --> R2
|
||||
|
@ -38,7 +38,7 @@ entry:
|
||||
%tmp0 = load i32, i32* @bar_i
|
||||
%tmp2 = call i32 @foo_f()
|
||||
%tmp3 = add i32 %tmp, %tmp2
|
||||
%tmp4 = call %FunTy* @bar_f()
|
||||
%tmp4 = call i32 @bar_f()
|
||||
%tmp5 = add i32 %tmp3, %tmp4
|
||||
%tmp6 = add i32 %tmp1, %tmp5
|
||||
%tmp7 = add i32 %tmp6, %tmp0
|
||||
|
@ -18,7 +18,7 @@ define i32 @f2() nounwind optsize {
|
||||
; DARWIN-LABEL: f2:
|
||||
; DARWIN: mov r3, #128
|
||||
entry:
|
||||
%0 = tail call i32 (i32, ...)* @g2(i32 5, double 1.600000e+01, i32 128) nounwind optsize ; <i32> [#uses=1]
|
||||
%0 = tail call i32 (i32, ...) @g2(i32 5, double 1.600000e+01, i32 128) nounwind optsize ; <i32> [#uses=1]
|
||||
%not. = icmp ne i32 %0, 128 ; <i1> [#uses=1]
|
||||
%.0 = zext i1 %not. to i32 ; <i32> [#uses=1]
|
||||
ret i32 %.0
|
||||
|
@ -2,6 +2,6 @@
|
||||
|
||||
define void @frame_dummy() {
|
||||
entry:
|
||||
%tmp1 = tail call void (i8*)* (void (i8*)*)* asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"( void (i8*)* null ) ; <void (i8*)*> [#uses=0]
|
||||
%tmp1 = tail call void (i8*)* (void (i8*)*) asm "", "=r,0,~{dirflag},~{fpsr},~{flags}"( void (i8*)* null ) ; <void (i8*)*> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ bb: ; preds = %bb1
|
||||
bb1: ; preds = %bb, %entry
|
||||
%indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ] ; <i32> [#uses=3]
|
||||
%i.0 = bitcast i32 %indvar to i32 ; <i32> [#uses=2]
|
||||
%tmp = tail call i32 (...)* @bar( ) ; <i32> [#uses=1]
|
||||
%tmp = tail call i32 (...) @bar( ) ; <i32> [#uses=1]
|
||||
%tmp2 = add i32 %i.0, %tmp ; <i32> [#uses=1]
|
||||
%Ptr_addr.0 = sub i32 %Ptr, %tmp2 ; <i32> [#uses=0]
|
||||
%tmp12 = icmp eq i32 %i.0, %Ptr ; <i1> [#uses=1]
|
||||
|
@ -10,10 +10,10 @@ define i32 @main() {
|
||||
entry:
|
||||
%retval = alloca i32, align 4
|
||||
store i32 0, i32* %retval
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0))
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0))
|
||||
%call1 = call i8* @strcpy(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str1, i32 0, i32 0)) #3
|
||||
call void @llvm.clear_cache(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0), i8* getelementptr inbounds (i8, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0), i32 32)) #3
|
||||
%call2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0))
|
||||
%call2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @buffer, i32 0, i32 0))
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ entry:
|
||||
br i1 %tmp.upgrd.1, label %cond_true, label %UnifiedReturnBlock
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp.upgrd.2 = tail call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp.upgrd.2 = tail call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
|
||||
UnifiedReturnBlock: ; preds = %entry
|
||||
|
@ -28,10 +28,10 @@ for.body9: ; preds = %for.body9, %entry
|
||||
for.end54: ; preds = %for.body9
|
||||
%tmp115 = extractelement <4 x float> %add19, i32 1
|
||||
%conv6.i75 = fpext float %tmp115 to double, !dbg !45
|
||||
%call.i82 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), double undef, double %conv6.i75, double undef, double undef) nounwind, !dbg !45
|
||||
%call.i82 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), double undef, double %conv6.i75, double undef, double undef) nounwind, !dbg !45
|
||||
%tmp116 = extractelement <4 x float> %add20, i32 1
|
||||
%conv6.i76 = fpext float %tmp116 to double, !dbg !45
|
||||
%call.i83 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), double undef, double %conv6.i76, double undef, double undef) nounwind, !dbg !45
|
||||
%call.i83 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), double undef, double %conv6.i76, double undef, double undef) nounwind, !dbg !45
|
||||
ret i32 0, !dbg !49
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ entry:
|
||||
tail call void @llvm.dbg.value(metadata double %val, i64 0, metadata !20, metadata !MDExpression()), !dbg !26
|
||||
tail call void @llvm.dbg.value(metadata i8 %c, i64 0, metadata !21, metadata !MDExpression()), !dbg !26
|
||||
%0 = zext i8 %c to i32, !dbg !27
|
||||
%1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %val, i32 %0) nounwind, !dbg !27
|
||||
%1 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %val, i32 %0) nounwind, !dbg !27
|
||||
ret i32 0, !dbg !29
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ entry:
|
||||
tail call void @llvm.dbg.value(metadata double %val, i64 0, metadata !17, metadata !MDExpression()), !dbg !30
|
||||
tail call void @llvm.dbg.value(metadata i8 %c, i64 0, metadata !18, metadata !MDExpression()), !dbg !30
|
||||
%0 = zext i8 %c to i32, !dbg !31
|
||||
%1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %val, i32 %0) nounwind, !dbg !31
|
||||
%1 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %val, i32 %0) nounwind, !dbg !31
|
||||
ret i32 0, !dbg !33
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ entry:
|
||||
tail call void @llvm.dbg.value(metadata double %1, i64 0, metadata !50, metadata !MDExpression()) nounwind, !dbg !38
|
||||
tail call void @llvm.dbg.value(metadata i8 %5, i64 0, metadata !51, metadata !MDExpression()) nounwind, !dbg !38
|
||||
%6 = zext i8 %5 to i32, !dbg !39
|
||||
%7 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %3, double %1, i32 %6) nounwind, !dbg !39
|
||||
%7 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %3, double %1, i32 %6) nounwind, !dbg !39
|
||||
%8 = tail call i32 @printer(i8* %3, double %1, i8 zeroext %5) nounwind, !dbg !40
|
||||
ret i32 0, !dbg !41
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ for.end54: ; preds = %for.body9
|
||||
tail call void @llvm.dbg.value(metadata <4 x float> %add19, i64 0, metadata !27, metadata !MDExpression()), !dbg !39
|
||||
%tmp115 = extractelement <4 x float> %add19, i32 1
|
||||
%conv6.i75 = fpext float %tmp115 to double, !dbg !45
|
||||
%call.i82 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), double undef, double %conv6.i75, double undef, double undef) nounwind, !dbg !45
|
||||
%call.i82 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i32 0, i32 0), double undef, double %conv6.i75, double undef, double undef) nounwind, !dbg !45
|
||||
ret i32 0, !dbg !49
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ entry:
|
||||
tail call void @llvm.dbg.value(metadata i8 %c, i64 0, metadata !12, metadata !MDExpression()), !dbg !26
|
||||
%conv = fpext float %val to double, !dbg !27
|
||||
%conv3 = zext i8 %c to i32, !dbg !27
|
||||
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %conv, i32 %conv3) nounwind optsize, !dbg !27
|
||||
%call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %conv, i32 %conv3) nounwind optsize, !dbg !27
|
||||
ret i32 0, !dbg !29
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ entry:
|
||||
tail call void @llvm.dbg.value(metadata i8 %c, i64 0, metadata !16, metadata !MDExpression()), !dbg !32
|
||||
%conv = fpext float %val to double, !dbg !33
|
||||
%conv3 = zext i8 %c to i32, !dbg !33
|
||||
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %conv, i32 %conv3) nounwind optsize, !dbg !33
|
||||
%call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %ptr, double %conv, i32 %conv3) nounwind optsize, !dbg !33
|
||||
ret i32 0, !dbg !35
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ entry:
|
||||
tail call void @llvm.dbg.value(metadata i8 %conv6, i64 0, metadata !62, metadata !MDExpression()) nounwind, !dbg !43
|
||||
%conv.i = fpext float %conv1 to double, !dbg !44
|
||||
%conv3.i = and i32 %add5, 255, !dbg !44
|
||||
%call.i = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %add.ptr, double %conv.i, i32 %conv3.i) nounwind optsize, !dbg !44
|
||||
%call.i = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i8* %add.ptr, double %conv.i, i32 %conv3.i) nounwind optsize, !dbg !44
|
||||
%call14 = tail call i32 @printer(i8* %add.ptr, float %conv1, i8 zeroext %conv6) optsize, !dbg !45
|
||||
ret i32 0, !dbg !46
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ entry:
|
||||
; THUMB: str.w {{[a-z0-9]+}}, [sp]
|
||||
; THUMB: str.w {{[a-z0-9]+}}, [sp, #4]
|
||||
; THUMB: bl {{_?}}CallVariadic
|
||||
%call = call i32 (i32, ...)* @CallVariadic(i32 5, i32 %0, i32 %1, i32 %2, i32 %3, i32 %4)
|
||||
%call = call i32 (i32, ...) @CallVariadic(i32 5, i32 %0, i32 %1, i32 %2, i32 %3, i32 %4)
|
||||
store i32 %call, i32* %tmp, align 4
|
||||
%5 = load i32, i32* %tmp, align 4
|
||||
ret i32 %5
|
||||
|
@ -48,7 +48,7 @@ entry:
|
||||
; SOFT: vmov.i32 [[REG6:(d[0-9]+)]], #0x80000000
|
||||
; SOFT: vshr.u64 [[REG7]], [[REG7]], #32
|
||||
; SOFT: vbsl [[REG6]], [[REG7]],
|
||||
%0 = tail call double (...)* @bar() nounwind
|
||||
%0 = tail call double (...) @bar() nounwind
|
||||
%1 = fptrunc double %0 to float
|
||||
%2 = tail call float @copysignf(float 5.000000e-01, float %1) nounwind readnone
|
||||
%3 = fadd float %1, %2
|
||||
|
@ -16,6 +16,6 @@ define ghccc void @test_indirect_tail() {
|
||||
; CHECK-LABEL: test_indirect_tail:
|
||||
; CHECK: bx {{r[0-9]+}}
|
||||
%func = load void()*, void()** @ind_func
|
||||
tail call ghccc void()* %func()
|
||||
tail call ghccc void() %func()
|
||||
ret void
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ entry:
|
||||
br i1 %tmp7, label %cond_true, label %UnifiedReturnBlock
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp10 = call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp10 = call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
|
||||
UnifiedReturnBlock: ; preds = %entry
|
||||
|
@ -27,7 +27,7 @@ define i32 @func() nounwind ssp {
|
||||
%9 = load i32, i32* %8
|
||||
%10 = add i32 %9, ptrtoint (i8* blockaddress(@func, %4) to i32)
|
||||
%11 = inttoptr i32 %10 to i8*
|
||||
%12 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @0, i32 0, i32 0))
|
||||
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @0, i32 0, i32 0))
|
||||
indirectbr i8* %11, [label %13, label %14]
|
||||
|
||||
; <label>:13 ; preds = %4
|
||||
|
@ -64,7 +64,7 @@ for.body: ; preds = %for.body, %entry
|
||||
; CHECK-DARWINA15: vmul.f32 s{{[0-9]*}}
|
||||
; CHECK-DARWINSWIFT: vmul.f32 d{{[0-9]*}}
|
||||
%conv = fpext float %mul to double
|
||||
%call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), double %conv) #1
|
||||
%call = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i32 0, i32 0), double %conv) #1
|
||||
%inc = add nsw i32 %i.04, 1
|
||||
%exitcond = icmp eq i32 %inc, 16000
|
||||
br i1 %exitcond, label %for.end, label %for.body
|
||||
|
@ -17,7 +17,7 @@ entry:
|
||||
%or = or i32 %cond13, %bf.clear10
|
||||
%shl = shl nuw i32 %or, 2
|
||||
%add = add i32 0, %shl
|
||||
tail call void (i8*, i32, i32, i8*, ...)* @__sprintf_chk(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @operands, i32 0, i32 0), i32 0, i32 50, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str86, i32 0, i32 0), i32 undef, i32 undef, i32 %add)
|
||||
tail call void (i8*, i32, i32, i8*, ...) @__sprintf_chk(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @operands, i32 0, i32 0), i32 0, i32 50, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str86, i32 0, i32 0), i32 undef, i32 undef, i32 %add)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ entry:
|
||||
; A9-NOT: ldr [[REG:r[0-9]+]], [r0, r1, lsl #2]!
|
||||
; A9: str [[REG]], [r0, r1, lsl #2]
|
||||
; A9-NOT: str [[REG]], [r0]
|
||||
%0 = tail call i8* (...)* @malloc(i32 undef) nounwind
|
||||
%0 = tail call i8* (...) @malloc(i32 undef) nounwind
|
||||
%1 = bitcast i8* %0 to i32*
|
||||
%2 = sext i16 %addr to i32
|
||||
%3 = getelementptr inbounds i32, i32* %1, i32 %2
|
||||
|
@ -16,7 +16,7 @@ entry:
|
||||
%title = alloca [15 x i8], align 1
|
||||
%0 = getelementptr inbounds [15 x i8], [15 x i8]* %title, i32 0, i32 0
|
||||
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %0, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @main.title, i32 0, i32 0), i32 15, i32 1, i1 false)
|
||||
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i8* %0) #3
|
||||
%call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i8* %0) #3
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ entry:
|
||||
; CHECK: main
|
||||
; CHECK: push
|
||||
; CHECK: stm
|
||||
%0 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([26 x i8], [26 x i8]* @"\01LC1", i32 0, i32 0), i32 -2, i32 -3, i32 2, i32 -6) nounwind ; <i32> [#uses=0]
|
||||
%1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr ([32 x i8], [32 x i8]* @"\01LC", i32 0, i32 0), i32 0, i32 1, i32 0, i32 1, i32 0, i32 1) nounwind ; <i32> [#uses=0]
|
||||
%0 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([26 x i8], [26 x i8]* @"\01LC1", i32 0, i32 0), i32 -2, i32 -3, i32 2, i32 -6) nounwind ; <i32> [#uses=0]
|
||||
%1 = tail call i32 (i8*, ...) @printf(i8* getelementptr ([32 x i8], [32 x i8]* @"\01LC", i32 0, i32 0), i32 0, i32 1, i32 0, i32 1, i32 0, i32 1) nounwind ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ entry:
|
||||
%0 = load i64, i64* null, align 4 ; <i64> [#uses=1]
|
||||
%1 = uitofp i64 %0 to double ; <double> [#uses=1]
|
||||
%2 = fdiv double 0.000000e+00, %1 ; <double> [#uses=1]
|
||||
%3 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* null, i8* getelementptr ([54 x i8], [54 x i8]* @"\01LC10", i32 0, i32 0), i64 0, double %2) ; <i32> [#uses=0]
|
||||
%3 = call i32 (%struct.FILE*, i8*, ...) @fprintf(%struct.FILE* null, i8* getelementptr ([54 x i8], [54 x i8]* @"\01LC10", i32 0, i32 0), i64 0, double %2) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
define i32 @main() {
|
||||
entry:
|
||||
%tmp = call i32 (i8*, ...)* @printf( i8* getelementptr ([43 x i8], [43 x i8]* @str, i32 0, i64 0), i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10 ) ; <i32> [#uses=0]
|
||||
%tmp2 = call i32 (i8*, ...)* @printf( i8* getelementptr ([43 x i8], [43 x i8]* @str, i32 0, i64 0), i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1 ) ; <i32> [#uses=0]
|
||||
%tmp = call i32 (i8*, ...) @printf( i8* getelementptr ([43 x i8], [43 x i8]* @str, i32 0, i64 0), i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10 ) ; <i32> [#uses=0]
|
||||
%tmp2 = call i32 (i8*, ...) @printf( i8* getelementptr ([43 x i8], [43 x i8]* @str, i32 0, i64 0), i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1 ) ; <i32> [#uses=0]
|
||||
ret i32 11
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ entry:
|
||||
%8 = shufflevector <8 x i64> %1, <8 x i64> %3, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
|
||||
%9 = shufflevector <8 x i64> %1, <8 x i64> %3, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
|
||||
|
||||
tail call void(<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>)* @foo(<8 x i64> %1, <8 x i64> %3, <8 x i64> %5, <8 x i64> %7, <8 x i64> %8, <8 x i64> %9)
|
||||
tail call void(<8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>, <8 x i64>) @foo(<8 x i64> %1, <8 x i64> %3, <8 x i64> %5, <8 x i64> %7, <8 x i64> %8, <8 x i64> %9)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -124,11 +124,11 @@ entry:
|
||||
br i1 %tmp6, label %cond_true, label %cond_false
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp.upgrd.2 = tail call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp.upgrd.2 = tail call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
|
||||
cond_false: ; preds = %entry
|
||||
%tmp7 = tail call i32 (...)* @baz( ) ; <i32> [#uses=0]
|
||||
%tmp7 = tail call i32 (...) @baz( ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
@ -147,10 +147,10 @@ entry:
|
||||
br i1 %tmp.upgrd.3, label %cond_true, label %cond_false
|
||||
|
||||
cond_true: ; preds = %entry
|
||||
%tmp.upgrd.4 = tail call i32 (...)* @bar( ) ; <i32> [#uses=0]
|
||||
%tmp.upgrd.4 = tail call i32 (...) @bar( ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
|
||||
cond_false: ; preds = %entry
|
||||
%tmp1 = tail call i32 (...)* @baz( ) ; <i32> [#uses=0]
|
||||
%tmp1 = tail call i32 (...) @baz( ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ entry:
|
||||
br i1 %tmp5, label %UnifiedReturnBlock, label %cond_true8
|
||||
|
||||
cond_true8: ; preds = %entry
|
||||
%tmp10 = tail call i32 (...)* %t.0( ) ; <i32> [#uses=1]
|
||||
%tmp10 = tail call i32 (...) %t.0( ) ; <i32> [#uses=1]
|
||||
ret i32 %tmp10
|
||||
|
||||
UnifiedReturnBlock: ; preds = %entry
|
||||
|
@ -26,7 +26,7 @@ define i32 @bpf_prog1(%struct.bpf_context* nocapture %ctx) #0 section "events/ne
|
||||
; <label>:10 ; preds = %0
|
||||
%11 = getelementptr inbounds [15 x i8], [15 x i8]* %fmt, i64 0, i64 0
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @bpf_prog1.fmt, i64 0, i64 0), i64 15, i32 1, i1 false)
|
||||
%12 = call i32 (i8*, i32, ...)* inttoptr (i64 11 to i32 (i8*, i32, ...)*)(i8* %11, i32 15, %struct.sk_buff* %4, i8* %7) #1
|
||||
%12 = call i32 (i8*, i32, ...) inttoptr (i64 11 to i32 (i8*, i32, ...)*)(i8* %11, i32 15, %struct.sk_buff* %4, i8* %7) #1
|
||||
; CHECK-LABEL: bpf_prog1:
|
||||
; CHECK: call 4
|
||||
; CHECK: call 9
|
||||
|
@ -106,7 +106,7 @@ define void @foo_printf() #1 {
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @foo_printf.fmt, i64 0, i64 0), i64 9, i32 1, i1 false)
|
||||
; CHECK-LABEL: foo_printf:
|
||||
; CHECK: ld_64 r1, 729618802566522216
|
||||
%2 = call i32 (i8*, ...)* @printf(i8* %1) #3
|
||||
%2 = call i32 (i8*, ...) @printf(i8* %1) #3
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
define x86_fp80 @some_func() nounwind {
|
||||
entry:
|
||||
%retval = alloca x86_fp80 ; <x86_fp80*> [#uses=2]
|
||||
%call = call i32 (...)* @other_func() ; <i32> [#uses=1]
|
||||
%call = call i32 (...) @other_func() ; <i32> [#uses=1]
|
||||
%conv = sitofp i32 %call to x86_fp80 ; <x86_fp80> [#uses=1]
|
||||
store x86_fp80 %conv, x86_fp80* %retval
|
||||
%0 = load x86_fp80, x86_fp80* %retval ; <x86_fp80> [#uses=1]
|
||||
|
@ -31,11 +31,11 @@ entry:
|
||||
br i1 %tmp.8, label %then, label %else
|
||||
|
||||
then: ; preds = %entry
|
||||
%tmp.11 = call i32 (i8*, ...)* @printf( i8* getelementptr ([6 x i8], [6 x i8]* @.str_1, i64 0, i64 0) ) ; <i32> [#uses=0]
|
||||
%tmp.11 = call i32 (i8*, ...) @printf( i8* getelementptr ([6 x i8], [6 x i8]* @.str_1, i64 0, i64 0) ) ; <i32> [#uses=0]
|
||||
br label %UnifiedExitNode
|
||||
|
||||
else: ; preds = %entry
|
||||
%tmp.13 = call i32 (i8*, ...)* @printf( i8* getelementptr ([7 x i8], [7 x i8]* @.str_2, i64 0, i64 0) ) ; <i32> [#uses=0]
|
||||
%tmp.13 = call i32 (i8*, ...) @printf( i8* getelementptr ([7 x i8], [7 x i8]* @.str_2, i64 0, i64 0) ) ; <i32> [#uses=0]
|
||||
br label %UnifiedExitNode
|
||||
|
||||
UnifiedExitNode: ; preds = %else, %then
|
||||
|
@ -14,7 +14,7 @@ entry:
|
||||
%tmp.11 = call i64 @getL( ) ; <i64> [#uses=2]
|
||||
%tmp.5 = trunc i64 %tmp.11 to i32 ; <i32> [#uses=2]
|
||||
%tmp.23 = and i64 %tmp.11, -4294967296 ; <i64> [#uses=2]
|
||||
%tmp.16 = call i32 (i8*, ...)* @printf( i8* getelementptr ([42 x i8], [42 x i8]* @.str_1, i64 0, i64 0), i32 %tmp.5, i32 %tmp.5, i64 %tmp.23, i64 %tmp.23 ) ; <i32> [#uses=0]
|
||||
%tmp.16 = call i32 (i8*, ...) @printf( i8* getelementptr ([42 x i8], [42 x i8]* @.str_1, i64 0, i64 0), i32 %tmp.5, i32 %tmp.5, i64 %tmp.23, i64 %tmp.23 ) ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ entry:
|
||||
define i32 @main() {
|
||||
entry:
|
||||
%result = call i32 @adj( i32 3, i32 2 ) ; <i32> [#uses=1]
|
||||
%tmp.0 = call i32 (i8*, ...)* @printf( i8* getelementptr ([30 x i8], [30 x i8]* @.str_1, i64 0, i64 0), i32 3, i32 2, i32 %result ) ; <i32> [#uses=0]
|
||||
%tmp.0 = call i32 (i8*, ...) @printf( i8* getelementptr ([30 x i8], [30 x i8]* @.str_1, i64 0, i64 0), i32 3, i32 2, i32 %result ) ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -28,8 +28,8 @@ loopentry: ; preds = %loopentry, %entry
|
||||
%i = phi i64 [ 0, %entry ], [ %inc.i, %loopentry ] ; <i64> [#uses=3]
|
||||
%cptr = getelementptr [6 x i8], [6 x i8]* @yy_ec, i64 0, i64 %i ; <i8*> [#uses=1]
|
||||
%c = load i8, i8* %cptr ; <i8> [#uses=1]
|
||||
%ignore = call i32 (i8*, ...)* @printf( i8* getelementptr ([8 x i8], [8 x i8]* @.str_3, i64 0, i64 0), i64 %i ) ; <i32> [#uses=0]
|
||||
%ignore2 = call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8], [4 x i8]* @.str_4, i64 0, i64 0), i8 %c ) ; <i32> [#uses=0]
|
||||
%ignore = call i32 (i8*, ...) @printf( i8* getelementptr ([8 x i8], [8 x i8]* @.str_3, i64 0, i64 0), i64 %i ) ; <i32> [#uses=0]
|
||||
%ignore2 = call i32 (i8*, ...) @printf( i8* getelementptr ([4 x i8], [4 x i8]* @.str_4, i64 0, i64 0), i8 %c ) ; <i32> [#uses=0]
|
||||
%inc.i = add i64 %i, 1 ; <i64> [#uses=2]
|
||||
%done = icmp sle i64 %inc.i, 5 ; <i1> [#uses=1]
|
||||
br i1 %done, label %loopentry, label %exit.1
|
||||
|
@ -11,7 +11,7 @@
|
||||
define void @printArgsNoRet(i32 %a1, float %a2, i8 %a3, double %a4, i8* %a5, i32 %a6, float %a7, i8 %a8, double %a9, i8* %a10, i32 %a11, float %a12, i8 %a13, double %a14, i8* %a15) {
|
||||
entry:
|
||||
%tmp17 = sext i8 %a13 to i32 ; <i32> [#uses=1]
|
||||
%tmp23 = call i32 (i8*, ...)* @printf( i8* getelementptr ([29 x i8], [29 x i8]* @str2, i32 0, i64 0), i32 %a11, double 0.000000e+00, i32 %tmp17, double %a14, i32 0 ) ; <i32> [#uses=0]
|
||||
%tmp23 = call i32 (i8*, ...) @printf( i8* getelementptr ([29 x i8], [29 x i8]* @str2, i32 0, i64 0), i32 %a11, double 0.000000e+00, i32 %tmp17, double %a14, i32 0 ) ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ bb.i: ; preds = %cond_next.i, %entry
|
||||
br i1 false, label %cond_true.i31, label %cond_next.i
|
||||
|
||||
cond_true.i31: ; preds = %bb.i
|
||||
call void (i32, ...)* @fprintf( i32 0, i8* %tmp11, i8* null )
|
||||
call void (i32, ...) @fprintf( i32 0, i8* %tmp11, i8* null )
|
||||
ret void
|
||||
|
||||
cond_next.i: ; preds = %bb.i
|
||||
|
@ -10,7 +10,7 @@ entry:
|
||||
%tmp38 = trunc i64 %tmp37 to i32 ; <i32>:0 [#uses=1]
|
||||
%tmp48 = trunc i64 %tmp47 to i32 ; <i32>:0 [#uses=1]
|
||||
%tmp58 = trunc i64 %tmp57 to i32 ; <i32>:0 [#uses=1]
|
||||
%tmp40 = tail call i32 (i8*, ...)* @printf( i8* noalias getelementptr ([14 x i8], [14 x i8]* @.str, i32 0, i32 0), i64 %arg, i32 %tmp38, i32 %tmp48, i32 %tmp58 ) nounwind ; <i32> [#uses=0]
|
||||
%tmp40 = tail call i32 (i8*, ...) @printf( i8* noalias getelementptr ([14 x i8], [14 x i8]* @.str, i32 0, i32 0), i64 %arg, i32 %tmp38, i32 %tmp48, i32 %tmp58 ) nounwind ; <i32> [#uses=0]
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@ entry:
|
||||
%tmp106 = load float, float* null, align 4 ; <float> [#uses=1]
|
||||
%tmp113 = fadd float %tmp98, %tmp106 ; <float> [#uses=1]
|
||||
%tmp119 = fsub float %tmp113, 0.000000e+00 ; <float> [#uses=1]
|
||||
call void (i32, ...)* @foo( i32 0, float 0.000000e+00, float %tmp119 ) nounwind
|
||||
call void (i32, ...) @foo( i32 0, float 0.000000e+00, float %tmp119 ) nounwind
|
||||
ret void
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user