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