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

            Bug ID: 78895
           Summary: [6 regression] wrong code with -O1 when setting union
                    twice since 6.3
           Product: gcc
           Version: 6.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: james410 at cowgill dot org.uk
  Target Milestone: ---

Created attachment 40394
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40394&action=edit
union-twice.c

The attached testcase correctly prints nothing and exits with status 0 when
using GCC 6.2, but with 6.3 it prints "FAIL" and exits with status 10.

Originally reduced from strange behavior in jackd2
(https://bugs.debian.org/848285). The noinline bit is not required in the
original code in jackd2, but is in my testcase.

Compiled with:
 gcc -O1 union-twice.c -o union-twice

I bisected it to revision 241788 (the first bad revision):

2016-11-02  Richard Biener  <rguent...@suse.de>

        Backport from mainline
        2016-11-02  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/78047
        * tree-ssa-structalias.c (push_fields_onto_fieldstack): Initialize
        fake field at offset zero conservatively regarding to
may_have_pointers.

        2016-10-31  Richard Biener  <rguent...@suse.de>

        PR lto/78129
        * lto.c (do_whole_program_analysis): Bail out after errors
        from WPA analysis.

        2016-10-07  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/77879
        * tree-ssa-structalias.c (handle_const_call): Properly handle
        NRV return slots.
        (handle_pure_call): Likewise.

        2016-10-06  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/77839
        * tree-ssa-sccvn.c (set_ssa_val_to): Forbid value -> constant value
        lattice transition.

        * gcc.dg/torture/pr77839.c: New testcase.

        2016-09-27  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/77745
        * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
        When removing redundant stores make sure to check compatibility
        of the TBAA state for downstream accesses.
        * tree-ssa-sccvn.c (visit_reference_op_store): Likewise for when
        value-numbering virtual operands for store matches.

        * g++.dg/torture/pr77745.C: New testcase.

        2016-09-21  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/77648
        * tree-ssa-structalias.c (process_constraint): Handle all DEREF
        with complex RHS.
        (make_transitive_closure_constraints): Adjust comment.
        (make_any_offset_constraints): New function.
        (handle_rhs_call): Make sure to first expand a pointer to all
        subfields before transitively closing it.
        (handle_const_call): Likewise.  Properly expand returned
        pointers as well.
        (handle_pure_call): Likewise.

        * gcc.dg/torture/pr77648-1.c: New testcase.
        * gcc.dg/torture/pr77648-2.c: Likewise.

Reply via email to