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

Reply via email to