public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug tree-optimization/115363] New: Missing loop vectorization due to loop bound load not being pulled out @ 2024-06-05 17:55 pinskia at gcc dot gnu.org 2024-06-06 6:48 ` [Bug tree-optimization/115363] " rguenth at gcc dot gnu.org 2024-06-07 14:19 ` pinskia at gcc dot gnu.org 0 siblings, 2 replies; 3+ messages in thread From: pinskia at gcc dot gnu.org @ 2024-06-05 17:55 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115363 Bug ID: 115363 Summary: Missing loop vectorization due to loop bound load not being pulled out Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Take: ``` struct out { unsigned *array; }; struct m{ void f(out *output); void f1(out *output); int size; }; void m::f(out *output) { for (int k = 0; k < size; k++) { output->array[k] += 1; } } void m::f1(out *output) { int tmp = size; for (int k = 0; k < size; k++) { output->array[k] += 1; } } ``` We should be able to vectorize `m::f` but currently does not since this->size might alias array[k]. But we could version the loop to pull out the this->size out of the loop and we could vectorize the loop then. ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug tree-optimization/115363] Missing loop vectorization due to loop bound load not being pulled out 2024-06-05 17:55 [Bug tree-optimization/115363] New: Missing loop vectorization due to loop bound load not being pulled out pinskia at gcc dot gnu.org @ 2024-06-06 6:48 ` rguenth at gcc dot gnu.org 2024-06-07 14:19 ` pinskia at gcc dot gnu.org 1 sibling, 0 replies; 3+ messages in thread From: rguenth at gcc dot gnu.org @ 2024-06-06 6:48 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115363 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2024-06-06 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Invariant motion doesn't do versioning for aliasing. But in fact once the loop iterates array[k] can no longer alias this->size but this is difficult to exploit (peeling the loop once would help). I'm not sure we should start to version all those loops where the exit condition depends on a not hoistable but invariant expression? But maybe we can diagnose this so people can rewrite their code. ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug tree-optimization/115363] Missing loop vectorization due to loop bound load not being pulled out 2024-06-05 17:55 [Bug tree-optimization/115363] New: Missing loop vectorization due to loop bound load not being pulled out pinskia at gcc dot gnu.org 2024-06-06 6:48 ` [Bug tree-optimization/115363] " rguenth at gcc dot gnu.org @ 2024-06-07 14:19 ` pinskia at gcc dot gnu.org 1 sibling, 0 replies; 3+ messages in thread From: pinskia at gcc dot gnu.org @ 2024-06-07 14:19 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115363 --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > Invariant motion doesn't do versioning for aliasing. But in fact once the > loop iterates array[k] can no longer alias this->size but this is difficult > to exploit (peeling the loop once would help). So I should mention that this was noticed from some code internally which is optimized by LLVM's polly (graphite) infrastructure and yes it is an important loop in this code. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-06-07 14:19 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-06-05 17:55 [Bug tree-optimization/115363] New: Missing loop vectorization due to loop bound load not being pulled out pinskia at gcc dot gnu.org 2024-06-06 6:48 ` [Bug tree-optimization/115363] " rguenth at gcc dot gnu.org 2024-06-07 14:19 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).