https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119858
Bug ID: 119858 Summary: [15/16 Regression] GCN vs. "middle-end: Fix incorrect codegen with PFA and VLS [PR119351]" Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: ice-checking, ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: tschwinge at gcc dot gnu.org CC: ams at gcc dot gnu.org, tnfchris at gcc dot gnu.org Blocks: 119351 Target Milestone: --- Target: GCN For '--target=amdgcn-amdhsa' (tested '-march=gfx908', '-march=gfx1100'), the recent commit r15-9518-g46ccce1de686c1b437eff43431dc20d20d4687c0 "middle-end: Fix incorrect codegen with PFA and VLS [PR119351]" is causing a number of GIMPLE checking ICEs: [...]/source-gcc/gcc/testsuite/gcc.c-torture/compile/930325-1.c: In function 'f': [...]/source-gcc/gcc/testsuite/gcc.c-torture/compile/930325-1.c:15:1: error: type mismatch in 'pointer_plus_expr' uint * uint * unsigned int _245 = _243 + _244; during GIMPLE pass: vect [...]/source-gcc/gcc/testsuite/gcc.c-torture/compile/930325-1.c:15:1: internal compiler error: verify_gimple failed 0x22db616 internal_error(char const*, ...) [...]/source-gcc/gcc/diagnostic-global-context.cc:517 0x129972e verify_gimple_in_cfg(function*, bool, bool) [...]/source-gcc/gcc/tree-cfg.cc:5682 0x11268e0 execute_function_todo [...]/source-gcc/gcc/passes.cc:2101 0x1126e5b execute_todo [...]/source-gcc/gcc/passes.cc:2155 (Not fixed by follow-up commit r15-9550-g7cf5503e0af52f5b726da4274a148590c57a458a "middle-end: fix masking for partial vectors and early break [PR119351]".) PASS: gcc.c-torture/compile/930325-1.c -O0 (test for excess errors) PASS: gcc.c-torture/compile/930325-1.c -O1 (test for excess errors) PASS: gcc.c-torture/compile/930325-1.c -O2 (test for excess errors) {+FAIL: gcc.c-torture/compile/930325-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/compile/930325-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) {+FAIL: gcc.c-torture/compile/930325-1.c -O3 -g (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/compile/930325-1.c -O3 -g (test for excess errors) PASS: gcc.c-torture/compile/930325-1.c -Os (test for excess errors) PASS: gcc.c-torture/compile/pr37056.c -O0 (test for excess errors) PASS: gcc.c-torture/compile/pr37056.c -O1 (test for excess errors) PASS: gcc.c-torture/compile/pr37056.c -O2 (test for excess errors) {+FAIL: gcc.c-torture/compile/pr37056.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/compile/pr37056.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) {+FAIL: gcc.c-torture/compile/pr37056.c -O3 -g (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/compile/pr37056.c -O3 -g (test for excess errors) PASS: gcc.c-torture/compile/pr37056.c -Os (test for excess errors) PASS: gcc.c-torture/execute/builtins/memset-chk.c compilation, -O0 PASS: gcc.c-torture/execute/builtins/memset-chk.c compilation, -O1 PASS: gcc.c-torture/execute/builtins/memset-chk.c compilation, -O2 {+FAIL:+} gcc.c-torture/execute/builtins/memset-chk.c compilation, -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-PASS:-]{+(internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/builtins/memset-chk.c compilation, -O3 -g {+(internal compiler error: verify_gimple failed)+} PASS: gcc.c-torture/execute/builtins/memset-chk.c compilation, -Og -g PASS: gcc.c-torture/execute/builtins/memset-chk.c compilation, -Os PASS: gcc.c-torture/execute/builtins/memset-chk.c execution, -O0 PASS: gcc.c-torture/execute/builtins/memset-chk.c execution, -O1 PASS: gcc.c-torture/execute/builtins/memset-chk.c execution, -O2 [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/builtins/memset-chk.c execution, -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/builtins/memset-chk.c execution, -O3 -g PASS: gcc.c-torture/execute/builtins/memset-chk.c execution, -Og -g PASS: gcc.c-torture/execute/builtins/memset-chk.c execution, -Os @@ -21007,10 +21011,12 @@ PASS: gcc.c-torture/execute/memset-1.c -O1 (test for excess errors) PASS: gcc.c-torture/execute/memset-1.c -O1 execution test PASS: gcc.c-torture/execute/memset-1.c -O2 (test for excess errors) PASS: gcc.c-torture/execute/memset-1.c -O2 execution test {+FAIL: gcc.c-torture/execute/memset-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/memset-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/memset-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-execution test-]{+compilation failed to produce executable+} {+FAIL: gcc.c-torture/execute/memset-1.c -O3 -g (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/memset-1.c -O3 -g (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/memset-1.c -O3 -g [-execution test-]{+compilation failed to produce executable+} PASS: gcc.c-torture/execute/memset-1.c -Os (test for excess errors) PASS: gcc.c-torture/execute/memset-1.c -Os execution test PASS: gcc.c-torture/execute/memset-2.c -O0 (test for excess errors) @@ -21019,10 +21025,12 @@ PASS: gcc.c-torture/execute/memset-2.c -O1 (test for excess errors) PASS: gcc.c-torture/execute/memset-2.c -O1 execution test PASS: gcc.c-torture/execute/memset-2.c -O2 (test for excess errors) PASS: gcc.c-torture/execute/memset-2.c -O2 execution test {+FAIL: gcc.c-torture/execute/memset-2.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/memset-2.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/memset-2.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-execution test-]{+compilation failed to produce executable+} {+FAIL: gcc.c-torture/execute/memset-2.c -O3 -g (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/memset-2.c -O3 -g (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/memset-2.c -O3 -g [-execution test-]{+compilation failed to produce executable+} PASS: gcc.c-torture/execute/memset-2.c -Os (test for excess errors) PASS: gcc.c-torture/execute/memset-2.c -Os execution test PASS: gcc.c-torture/execute/memset-3.c -O0 (test for excess errors) @@ -21031,10 +21039,12 @@ PASS: gcc.c-torture/execute/memset-3.c -O1 (test for excess errors) PASS: gcc.c-torture/execute/memset-3.c -O1 execution test PASS: gcc.c-torture/execute/memset-3.c -O2 (test for excess errors) PASS: gcc.c-torture/execute/memset-3.c -O2 execution test {+FAIL: gcc.c-torture/execute/memset-3.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/memset-3.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/memset-3.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-execution test-]{+compilation failed to produce executable+} {+FAIL: gcc.c-torture/execute/memset-3.c -O3 -g (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/memset-3.c -O3 -g (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/memset-3.c -O3 -g [-execution test-]{+compilation failed to produce executable+} PASS: gcc.c-torture/execute/memset-3.c -Os (test for excess errors) PASS: gm2/cse/pass/testcse50.mod, -O PASS: gm2/cse/pass/testcse50.mod, -O -g [-PASS:-]{+FAIL:+} gm2/cse/pass/testcse50.mod, -O3 -fomit-frame-pointer [-PASS:-]{+(internal compiler error: verify_gimple failed)+} {+FAIL:+} gm2/cse/pass/testcse50.mod, -O3 -fomit-frame-pointer -finline-functions {+(internal compiler error: verify_gimple failed)+} PASS: gm2/cse/pass/testcse50.mod, -Os PASS: gm2/cse/pass/testcse50.mod, -g PASS: gm2/switches/whole-program/pass/run/hello.mod, -O PASS: gm2/switches/whole-program/pass/run/hello.mod, -O -g [-PASS:-]{+FAIL:+} gm2/switches/whole-program/pass/run/hello.mod, -O3 -fomit-frame-pointer [-PASS:-]{+(internal compiler error: verify_gimple failed)+} {+FAIL:+} gm2/switches/whole-program/pass/run/hello.mod, -O3 -fomit-frame-pointer -finline-functions {+(internal compiler error: verify_gimple failed)+} PASS: gm2/switches/whole-program/pass/run/hello.mod, -Os PASS: gm2/switches/whole-program/pass/run/hello.mod, -g PASS: gm2/switches/whole-program/pass/run/hello2.mod, -O PASS: gm2/switches/whole-program/pass/run/hello2.mod, -O -g [-PASS:-]{+FAIL:+} gm2/switches/whole-program/pass/run/hello2.mod, -O3 -fomit-frame-pointer [-PASS:-]{+(internal compiler error: verify_gimple failed)+} {+FAIL:+} gm2/switches/whole-program/pass/run/hello2.mod, -O3 -fomit-frame-pointer -finline-functions {+(internal compiler error: verify_gimple failed)+} PASS: gm2/switches/whole-program/pass/run/hello2.mod, -Os PASS: gm2/switches/whole-program/pass/run/hello2.mod, -g PASS: gm2/switches/whole-program/pass/run/tiny.mod, -O PASS: gm2/switches/whole-program/pass/run/tiny.mod, -O -g [-PASS:-]{+FAIL:+} gm2/switches/whole-program/pass/run/tiny.mod, -O3 -fomit-frame-pointer [-PASS:-]{+(internal compiler error: verify_gimple failed)+} {+FAIL:+} gm2/switches/whole-program/pass/run/tiny.mod, -O3 -fomit-frame-pointer -finline-functions {+(internal compiler error: verify_gimple failed)+} PASS: gm2/switches/whole-program/pass/run/tiny.mod, -Os PASS: gm2/switches/whole-program/pass/run/tiny.mod, -g PASS: gm2/switches/whole-program/pass/run/tiny2.mod, -O PASS: gm2/switches/whole-program/pass/run/tiny2.mod, -O -g [-PASS:-]{+FAIL:+} gm2/switches/whole-program/pass/run/tiny2.mod, -O3 -fomit-frame-pointer [-PASS:-]{+(internal compiler error: verify_gimple failed)+} {+FAIL:+} gm2/switches/whole-program/pass/run/tiny2.mod, -O3 -fomit-frame-pointer -finline-functions {+(internal compiler error: verify_gimple failed)+} PASS: gm2/switches/whole-program/pass/run/tiny2.mod, -Os PASS: gm2/switches/whole-program/pass/run/tiny2.mod, -g ..., and '-march=gfx908' only: @@ -26004,10 +26014,12 @@ PASS: gcc.c-torture/execute/pr67037.c -O1 (test for excess errors) PASS: gcc.c-torture/execute/pr67037.c -O1 execution test PASS: gcc.c-torture/execute/pr67037.c -O2 (test for excess errors) PASS: gcc.c-torture/execute/pr67037.c -O2 execution test {+FAIL: gcc.c-torture/execute/pr67037.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/pr67037.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/pr67037.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-execution test-]{+compilation failed to produce executable+} {+FAIL: gcc.c-torture/execute/pr67037.c -O3 -g (internal compiler error: verify_gimple failed)+} [-PASS:-]{+FAIL:+} gcc.c-torture/execute/pr67037.c -O3 -g (test for excess errors) [-PASS:-]{+UNRESOLVED:+} gcc.c-torture/execute/pr67037.c -O3 -g [-execution test-]{+compilation failed to produce executable+} PASS: gcc.c-torture/execute/pr67037.c -Os (test for excess errors) PASS: gcc.c-torture/execute/pr67037.c -Os execution test Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119351 [Bug 119351] [14 Regression] Incorrect forall masking for AND reduction in early break