some examples

# works

```
function g(a::Integer)
a = 0
for i ∈ 1:4
a += i
end
a
end
@code_llvm g(1)
```

returns

```
; Function g
; Location: D:\ProjectsJulia\Traits\test\tmp.jl:68
; Function Attrs: uwtable
define i64 @julia_g_36250(i64) #0 {
top:
; Location: D:\ProjectsJulia\Traits\test\tmp.jl:72
ret i64 10
}
```

which optimizes the whole loop away

# does not work

other times it does not work, for instance

```
function g2(a::Integer)
methods(reduce)
4
end
@code_llvm g2(1)
```

gives

```
; Function g2
; Location: D:\ProjectsJulia\Traits\test\tmp.jl:72
; Function Attrs: uwtable
define i64 @julia_g2_36717(i64) #0 {
top:
%1 = alloca %jl_value_t addrspace(10)*, i32 2
; Function methods; {
; Location: reflection.jl:769
%2 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 0
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 21682165440 to %jl_valu
e_t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %2
%3 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i32 1
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 77858240 to %jl_value_t
*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)** %3
%4 = call nonnull %jl_value_t addrspace(10)* @japi1_methods_35966(%jl_value_t addrspace(10)* addrs
pacecast (%jl_value_t* inttoptr (i64 21689050048 to %jl_value_t*) to %jl_value_t addrspace(10)*), %j
l_value_t addrspace(10)** %1, i32 2)
;}
; Location: D:\ProjectsJulia\Traits\test\tmp.jl:73
ret i64 4
}
```