search for: globalproperty

Displaying 4 results from an estimated 4 matches for "globalproperty".

2017 Apr 06
2
Dereferenceable load semantics & LICM
...ra information to the metadata nodes indicating that this > property > >> is non-local: > >> > >> %0 = load... %p, !invariant.group !1, !dereferenceable !2 > >> %1 = load ... %0, !invariant.load !0, !dereferenceable !2 > >> > >> !0 = !{!"GlobalProperty"} > >> !1 = !{!"MyType", !"GlobalProperty"} > >> !2 = !{i64 8, !"GlobalProperty} > >> > >> With that we would strip only the metadata not containing this > >> information. > >> > >> For devirtualization it...
2017 Apr 03
4
Dereferenceable load semantics & LICM
...n LLVM, but I see a one simple > solution: > add extra information to the metadata nodes indicating that this property > is non-local: > > %0 = load... %p, !invariant.group !1, !dereferenceable !2 > %1 = load ... %0, !invariant.load !0, !dereferenceable !2 > > !0 = !{!"GlobalProperty"} > !1 = !{!"MyType", !"GlobalProperty"} > !2 = !{i64 8, !"GlobalProperty} > > With that we would strip only the metadata not containing this information. > > For devirtualization it would make sense with invariant.load, > invariant.group and deref...
2017 Mar 31
4
Dereferenceable load semantics & LICM
Hi Piotr, On March 31, 2017 at 1:07:12 PM, Piotr Padlewski (piotr.padlewski at gmail.com) wrote: > [snip] > Do I understand it correctly, that it is legal to do the hoist because all > of the instructions above %vtable does not throw? Yes, I think you're right.  HeaderMayThrow is a conservative approximation, and the conservativeness is biting us here. > Are there any plans to
2017 Apr 06
3
Dereferenceable load semantics & LICM
...the metadata is "wrong"), but it is never executed so all is > > well. > > int val = *ptr; > > } > > I was not talking about code like that. The problem is code like this: > > if (false) { > ptr = load i8*, i8** %ptrptr, !dereferenceable !{i64 8, !"GlobalProperty} > // ptr is not actually dereferenceable, even the load above has UB > // (since the metadata is "wrong"), but it is never executed so all is > well. > int val = *ptr; > } > > I did not mention this earlier, but I've assumed that %ptrptr itself > is dere...