[Bug ipa/93203] New: [10 Regression] ICE in decide_about_value, at ipa-cp.c:5448 since r278893

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jan 8 18:19:00 GMT 2020


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

            Bug ID: 93203
           Summary: [10 Regression] ICE in decide_about_value, at
                    ipa-cp.c:5448 since r278893
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: fxue at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

I see ICE for the following test-case:

$ cat ipacp.ii
class a {
public:
  a(char *);
};
class ad {
public:
  ad(a *);
};
class b {};
using ah = class ak {
  using al = char;

public:
  ak(b) : ak(0) {}
  ak an() { return ap & 1; }
  al ap;
  ak(al af) : ap(af) {}
};
struct at {
  ah au;
  int av;
  char aw;
  char ax;
};
class az {
public:
  struct ba {
    void bb(ak am) {
      ak bc = am.an();
      bb(bc);
    }
  };
  void bd(ak am) { be.bb(am); }
  ba be;
};
class bg {
public:
  int bh;
  at bi;
};
int bj;
int *bk;
int c;
class bl {
  bool bm();
  bg bn;
  az bo;
  int e;
  int bq;
};
class bs {
public:
  bs(int *, ah *, char *, char *, int);
};
template < typename bt > class bu : bs {
  using bv = typename bt::bv;

public:
  template < typename... bx >
  bu(a *by, int *bz, at body, bx...)
      : bs(bz, &body.au, &body.aw, &body.ax, body.av), ca(bx()...), cb(by),
        cc(by), cd(by), ce(by) {}
  void cf() {
    auto cg = ch();
    auto ci = *cj();
    ca.ck(this, cg, &ci);
  }
  bt ca;
  ad cb;
  ad cc;
  ad cd;
  ad ce;
  bv *cj();
  bv ch();
};
class cl {
public:
  using bv = struct {};
  cl(az *, int, int, int, int, a *, int, int **);
  void ck(bs *, bv, bv *) {
    b d;
    ak ci(d);
    bo.bd(ci);
  }
  az bo;
};
bool bl::bm() {
  a by("");
  bu< cl > cn(&by, &bj, bn.bi, &bo, c, bn.bh, e, 0, &by, bq, &bk);
  cn.cf();
}

$ g++ -O3 ipacp.ii -m32
ipacp.ii: In member function ‘bool bl::bm()’:
ipacp.ii:88:8: warning: ISO C++ forbids converting a string constant to ‘char*’
[-Wwrite-strings]
   88 |   a by("");
      |        ^~
ipacp.ii:91:1: warning: no return statement in function returning non-void
[-Wreturn-type]
   91 | }
      | ^
during IPA pass: cp
ipacp.ii: At global scope:
ipacp.ii:91:1: internal compiler error: in decide_about_value, at ipa-cp.c:5448
0x609057 decide_about_value<tree_node*>
        /home/marxin/Programming/gcc2/gcc/ipa-cp.c:5448
0x141fe42 decide_whether_version_node
        /home/marxin/Programming/gcc2/gcc/ipa-cp.c:5507
0x1421f17 ipcp_decision_stage
        /home/marxin/Programming/gcc2/gcc/ipa-cp.c:5653
0x1421f17 ipcp_driver
        /home/marxin/Programming/gcc2/gcc/ipa-cp.c:5836
0x1421f17 execute
        /home/marxin/Programming/gcc2/gcc/ipa-cp.c:5927
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


More information about the Gcc-bugs mailing list