This is part of the series started by D9375, and teaches CaptureTracking to look through calls to llvm.noalias.
P.S. One reason why llvm.noalias is not itself marked with nocapture is because it requires this special handling anyway.
Paths
| Differential D9386
llvm.noalias - CaptureTracking needs to look through them AcceptedPublic Authored by hfinkel on Apr 30 2015, 8:41 AM.
Details
Diff Detail Event Timelinehfinkel updated this object. Comment Actions LGTM w.r.t. code. I would prefer the intrinsic definition be marked nocapture if it's legal to do so. There's too much chance of someone checking only an attribute somewhere. Better to be complete as we can. Also, I don't believe the parameter on stripPointerCasts is still needed per discussion in another thread right? This revision is now accepted and ready to land.May 12 2015, 3:49 PM Comment Actions Maybe 'passthrough' should return a boolean, indicating that we need to stop or not. (see code comment)
lebedev.ri added a child revision: D9387: llvm.noalias - Pointer comparison folding should look through them.Dec 19 2018, 2:50 AM lebedev.ri added a parent revision: D9385: llvm.noalias - Look through noalias for shouldAlignPointerArgs.
Revision Contents
Diff 111125 lib/Analysis/CaptureTracking.cpp
test/Transforms/FunctionAttrs/nocapture.ll
|
Moving this piece of code with a 'return' into a lambda results in a behavior change: instead of directly breaking the outer while loop when the Threshold is reached, it will now keep doing work with whatever is on the worklist. I don't think this change in behavior was intended.