[Bug c++/93014] New: [9/10 Regression] ICE when initialising vector references with -flax-vector-conversions

rsandifo at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Dec 19 16:17:00 GMT 2019


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

            Bug ID: 93014
           Summary: [9/10 Regression] ICE when initialising vector
                    references with -flax-vector-conversions
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rsandifo at gcc dot gnu.org
  Target Milestone: ---

This test:

typedef unsigned int v4si __attribute__ ((vector_size(16)));
typedef unsigned char v16qi __attribute__ ((vector_size(16)));
extern v16qi x;
v4si &y = x;

ICEs with:

a.c:4:11: internal compiler error: in convert_like_real, at cp/call.c:7670

This started with r260780, which had the effect of making lvalue_kind
look through VIEW_CONVERT_EXPR in all cases, not just for location
wrappers.  This also means that:

typedef unsigned int v4si __attribute__ ((vector_size(16)));
typedef unsigned char v16qi __attribute__ ((vector_size(16)));
extern v16qi x;
v4si &y = reinterpret_cast<v4si>(x);

is now valid despite the result of the cast being an rvalue.

There might be two separate problems here:

(1) Vector conversions aren't being treated as rvalues when
    they should be.

(2) The convert_like_real check seems to be trying (at least
    partially) to reproduce the logic in reference_binding
    that led to bad_p being set to true.  But the "from" type
    it's using is the result of the implicit conversion added
    by reference_binding rather than the "from" type that
    reference_binding was using.  AFAICT he result of that
    implicit converson should always be reference-compatible
    with the reference type, so we don't get the error we
    expected for that case.


More information about the Gcc-bugs mailing list