[Bug c++/91006] New: [10 Regression] Several test suite fails on *darwin* after r272618

iains at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jun 26 18:47:00 GMT 2019


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

            Bug ID: 91006
           Summary: [10 Regression] Several test suite fails on *darwin*
                    after r272618
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: iains at gcc dot gnu.org
  Target Milestone: ---

After r272618, the following tests fail for i686,x86-64-*darwin*.
flifetime-dse2.C (m32, m64)
Warray-bounds-4.C (m32, m64)
ivopts-3.C (m64).

The problem is occurring it seems quite early in the middle end (already
complete before we get to RTL expansion)

Th problem also manifests on a stage1 FE, so it ought to be possible to
investigate on a cross.

=====

I did some comparisions of the IL for flifetime-dse2.C between before/after and
against a linux version.

Up to flifetime-dse2.C.021t.nothrow the IL looks similar for all three cases
...

At flifetime-dse2.C.023t.fixup_cfg2  there is a divergence:

(OK):

main ()
{
  struct A * ap;
  int ar[1];
  int _1;
  int _2;
  void * _6;
  int _12;

  <bb 2> :
  ar[0] = 42;
  _6 = _ZnwmPv.isra.0 (&ar);
  A::A (_6);
  ap_8 = _6;
  _1 = ap_8->i;
  if (_1 == 42)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  __builtin_abort ();

  <bb 4> :
  ap_8->i = 42;
  A::~A (ap_8);
  _2 = ar[0];
  if (_2 == 42)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  __builtin_abort ();

  <bb 6> :
  ar ={v} {CLOBBER};
  _12 = 0;
  return _12;

}

(Bad):

;; Function main (main, funcdef_no=7, decl_uid=2353, cgraph_uid=8,
symbol_order=7)

main ()
{
  struct A * ap;
  int ar[1];
  int _1;
  int _2;
  void * _6;
  int _12;

  <bb 2> :
  ar[0] = 42;
  _6 = _ZnwmPv.isra.0 (&ar);
  A::_ZN1AC1Ev.isra.0 ();
  ap_8 = _6;
  _1 = ap_8->i;
  if (_1 == 42)
    goto <bb 3>; [INV]
  else
    goto <bb 4>; [INV]

  <bb 3> :
  __builtin_abort ();

  <bb 4> :
  ap_8->i = 42;
  A::_ZN1AD1Ev.isra.0 ();
  _2 = ar[0];
  if (_2 == 42)
    goto <bb 5>; [INV]
  else
    goto <bb 6>; [INV]

  <bb 5> :
  __builtin_abort ();

  <bb 6> :
  ar ={v} {CLOBBER};
  _12 = 0;
  return _12;

}

I can attach the tree dumps / or more comparisons etc. as needed.


More information about the Gcc-bugs mailing list