1
1
# This file is a part of Julia. License is MIT: https://julialang.org/license
2
2
3
+ @nospecialize
4
+
3
5
struct InvokeData
4
6
entry:: Core.TypeMapEntry
5
7
types0
@@ -41,15 +43,15 @@ struct ConstantCase
41
43
method:: Method
42
44
sparams:: Vector{Any}
43
45
metharg:: Any
44
- ConstantCase (@nospecialize ( val) , method:: Method , sparams:: Vector{Any} , @nospecialize ( metharg) ) =
46
+ ConstantCase (val, method:: Method , sparams:: Vector{Any} , metharg) =
45
47
new (val, method, sparams, metharg)
46
48
end
47
49
48
50
struct DynamicCase
49
51
method:: Method
50
52
sparams:: Vector{Any}
51
53
metharg:: Any
52
- DynamicCase (method:: Method , sparams:: Vector{Any} , @nospecialize ( metharg) ) =
54
+ DynamicCase (method:: Method , sparams:: Vector{Any} , metharg) =
53
55
new (method, sparams, metharg)
54
56
end
55
57
@@ -59,12 +61,13 @@ struct UnionSplit
59
61
atype # ::Type
60
62
cases:: Vector{Pair{Any, Any}}
61
63
bbs:: Vector{Int}
62
- UnionSplit (idx:: Int , fully_covered:: Bool , @nospecialize (atype),
63
- cases:: Vector{Pair{Any, Any}} ) =
64
+ UnionSplit (idx:: Int , fully_covered:: Bool , atype, cases:: Vector{Pair{Any, Any}} ) =
64
65
new (idx, fully_covered, atype, cases, Int[])
65
66
end
66
67
isinvoke (inl:: UnionSplit ) = false
67
68
69
+ @specialize
70
+
68
71
function ssa_inlining_pass! (ir:: IRCode , linetable:: Vector{LineInfoNode} , sv:: OptimizationState )
69
72
# Go through the function, performing simple ininlingin (e.g. replacing call by constants
70
73
# and analyzing legality of inlining).
0 commit comments