[Bug middle-end/112581] [14 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu (generated code hangs) since r14-4661 due to reassoc not handling maybe_undefs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112581 Andrew Pinski changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #14 from Andrew Pinski --- Fixed.
[Bug middle-end/112581] [14 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu (generated code hangs) since r14-4661 due to reassoc not handling maybe_undefs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112581 --- Comment #13 from GCC Commits --- The trunk branch has been updated by Andrew Pinski : https://gcc.gnu.org/g:113475d03b0ab1ab18a509e8e5844c1a43983b24 commit r14-7114-g113475d03b0ab1ab18a509e8e5844c1a43983b24 Author: Andrew Pinski Date: Fri Nov 17 20:06:37 2023 -0800 reassoc vs uninitialized variable [PR112581] Like r14-2293-g11350734240dba and r14-2289-gb083203f053f16, reassociation can combine across a few bb and one of the usage can be an uninitializated variable and if going from an conditional usage to an unconditional usage can cause wrong code. This uses maybe_undef_p like other passes where this can happen. Note if-to-switch uses the function (init_range_entry) provided by ressociation so we need to call mark_ssa_maybe_undefs there; otherwise we assume almost all ssa names are uninitialized. Bootstrapped and tested on x86_64-linux-gnu. gcc/ChangeLog: PR tree-optimization/112581 * gimple-if-to-switch.cc (pass_if_to_switch::execute): Call mark_ssa_maybe_undefs. * tree-ssa-reassoc.cc (can_reassociate_op_p): Uninitialized variables can not be reassociated. (init_range_entry): Check for uninitialized variables too. (init_reassoc): Call mark_ssa_maybe_undefs. gcc/testsuite/ChangeLog: PR tree-optimization/112581 * gcc.c-torture/execute/pr112581-1.c: New test. Signed-off-by: Andrew Pinski
[Bug middle-end/112581] [14 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu (generated code hangs) since r14-4661 due to reassoc not handling maybe_undefs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112581 Andrew Pinski changed: What|Removed |Added URL||https://gcc.gnu.org/piperma ||il/gcc-patches/2023-Decembe ||r/641368.html Keywords||patch --- Comment #12 from Andrew Pinski --- Patch posted: https://gcc.gnu.org/pipermail/gcc-patches/2023-December/641368.html
[Bug middle-end/112581] [14 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu (generated code hangs) since r14-4661 due to reassoc not handling maybe_undefs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112581 Andrew Pinski changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org Last reconfirmed|2023-11-17 00:00:00 |2023-12-21 Status|NEW |ASSIGNED --- Comment #11 from Andrew Pinski --- I will going to take a stab at fixing this.
[Bug middle-end/112581] [14 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu (generated code hangs) since r14-4661 due to reassoc not handling maybe_undefs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112581 --- Comment #10 from Andrew Pinski --- I have a patch but I don't like it since it requires to touch gimple-if-to-switch.cc since that uses init_range_entry. Maybe someone else can come up with a better patch.