-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JIT: Loop hoisting is overly-conservative with helper calls #6553
Labels
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
optimization
Milestone
Comments
JosephTremoulet
referenced
this issue
in JosephTremoulet/coreclr
Sep 1, 2016
Update the code in `optHoistLoopExprsForTree` that identifies exprs with memory side-effects to recognize helper calls that don't mutate the heap; this allows hoisting invariant exprs past such helper calls. Fixes #6901.
JosephTremoulet
referenced
this issue
in JosephTremoulet/coreclr
Sep 1, 2016
Update the code in `optHoistLoopExprsForTree` that identifies exprs with memory side-effects to recognize helper calls that don't mutate the heap; this allows hoisting invariant exprs past such helper calls. Fixes #6901.
JosephTremoulet
referenced
this issue
in JosephTremoulet/coreclr
Sep 13, 2016
Update the code in `optHoistLoopExprsForTree` that identifies exprs with memory side-effects to recognize helper calls that don't mutate the heap; this allows hoisting invariant exprs past such helper calls. Fixes #6901.
JosephTremoulet
referenced
this issue
in JosephTremoulet/coreclr
Sep 14, 2016
Update the code in `optHoistLoopExprsForTree` that identifies exprs with memory side-effects to recognize helper calls that don't mutate the heap; this allows hoisting invariant exprs past such helper calls. Fixes #6901.
JosephTremoulet
referenced
this issue
in JosephTremoulet/coreclr
Sep 14, 2016
Update the code in `optHoistLoopExprsForTree` that identifies exprs with memory side-effects to recognize helper calls that don't mutate the heap; this allows hoisting invariant exprs past such helper calls. Fixes #6901.
JosephTremoulet
referenced
this issue
in JosephTremoulet/coreclr
Sep 15, 2016
Update the code in `optHoistLoopExprsForTree` that identifies exprs with memory side-effects to recognize helper calls that don't mutate the heap; this allows hoisting invariant exprs past such helper calls. Fixes #6901.
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
optimization
Loop hoisting has code to avoid illegally re-ordering side-effects, which includes a check for calls that is overly-general. The check looks at the
GTF_CALL
flag, which (A) will be set for the entire expression containing a call as a sub-expression (which is unnecessary because this code is walking the whole tree), and (B) doesn't distinguish non-side-effecting helper calls, like we do in value-numbering and in the code just above that identifies hoistable calls. This blocks hoisting of them_arr
accesses (because of theGetStaticBase
helper call that precedes them) in the following code, even with a fix for #6552 in place:The text was updated successfully, but these errors were encountered: