https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79090

            Bug ID: 79090
           Summary: [7 regression] DSE wrongly removing store at variable
                    offset
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ebotcazou at gcc dot gnu.org
                CC: law at gcc dot gnu.org
  Target Milestone: ---

Created attachment 40520
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40520&action=edit
Reduced testcase

The latest DSE changes introduced a regression in the ACATS testsuite:

                === acats tests ===
FAIL:   c432003

                === acats Summary ===
# of expected passes            2319
# of unexpected failures        1
Native configuration is x86_64-suse-linux-gnu

Reduced testcase attached, to be compiled like this:

eric@polaris:~/build/gcc/native> gnatchop testcase.txt 
splitting testcase.txt into:
   opt62.adb
   opt62_pkg.ads
eric@polaris:~/build/gcc/native> gnatmake opt62 -O
gcc -c -O opt62.adb
gcc -c -O opt62_pkg.ads
gnatbind -x opt62.ali
gnatlink opt62.ali -O
eric@polaris:~/build/gcc/native> ./opt62 

raised PROGRAM_ERROR : opt62.adb:13 explicit raise

eric@polaris:~/build/gcc/native> gcc/xgcc -Bgcc -S opt62.adb -O
-fdump-tree-dse1-details

This is the wrong store removal:

;; Function Opt62 (_ada_opt62, funcdef_no=1, decl_uid=4169, cgraph_uid=0,
symbol_order=0)

  Deleted dead store: MEM[(struct opt62_pkg__unconstrained_der &)&d].str1{off:
_17 * 8} = "abcde";

The testcase can be added directly to the gnat.dg testsuite.

Reply via email to