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

            Bug ID: 70144
           Summary: g++ ICE at -O1 and above on valid code on
                    x86_64-linux-gnu in "copy_reference_ops_from_ref"
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: helloqirun at gmail dot com
  Target Milestone: ---

The following valid code causes an ICE when compiled with the current g++ trunk
at -O1 and above on x86_64-linux-gnu in both 32-bit and 64-bit modes.

It affects versions later than g++-4.7.  g++-4.6.4 works fine.


$ g++-trunk -v
Using built-in specs.
COLLECT_GCC=g++-trunk
COLLECT_LTO_WRAPPER=/home/absozero/trunk/root-gcc/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/home/absozero/trunk/root-gcc
--enable-languages=c,c++ --disable-werror --enable-multilib
Thread model: posix
gcc version 6.0.0 20160308 (experimental) [trunk revision 234060] (GCC)


$ g++-trunk abc.cc -c
$ g++-trunk abc.cc -c -O1
abc.cc: In function ‘void fn1()’:
abc.cc:6:1: internal compiler error: in copy_reference_ops_from_ref, at
tree-ssa-sccvn.c:880
 }
 ^
0xed8283 copy_reference_ops_from_ref
        ../../gcc/gcc/tree-ssa-sccvn.c:880
0xed93f5 valueize_shared_reference_ops_from_ref
        ../../gcc/gcc/tree-ssa-sccvn.c:1501
0xed9d0a vn_reference_lookup(tree_node*, tree_node*, vn_lookup_kind,
vn_reference_s**, bool)
        ../../gcc/gcc/tree-ssa-sccvn.c:2250
0xedd901 visit_reference_op_load
        ../../gcc/gcc/tree-ssa-sccvn.c:3355
0xedd901 visit_use
        ../../gcc/gcc/tree-ssa-sccvn.c:3748
0xedff74 process_scc
        ../../gcc/gcc/tree-ssa-sccvn.c:3968
0xedff74 extract_and_process_scc_for_name
        ../../gcc/gcc/tree-ssa-sccvn.c:4055
0xedff74 DFS
        ../../gcc/gcc/tree-ssa-sccvn.c:4107
0xee082d sccvn_dom_walker::before_dom_children(basic_block_def*)
        ../../gcc/gcc/tree-ssa-sccvn.c:4574
0x13ac242 dom_walker::walk(basic_block_def*)
        ../../gcc/gcc/domwalk.c:265
0xee1662 run_scc_vn(vn_lookup_kind)
        ../../gcc/gcc/tree-ssa-sccvn.c:4685
0xeb3c54 execute
        ../../gcc/gcc/tree-ssa-pre.c:4895
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.



$ cat abc.cc
void fn1() {
  __builtin_constant_p(__builtin_constant_p) ?: ({
    unsigned tmp;
    tmp;
  });
}

Reply via email to