Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1922599 - [armv7hl] Firefox 85.0 fails to build on rawhide with internal compiler error: in neon_output_shift_immediate, at config/arm/arm.c
Summary: [armv7hl] Firefox 85.0 fails to build on rawhide with internal compiler error...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: gcc
Version: 34
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: ARMTracker
TreeView+ depends on / blocked
 
Reported: 2021-01-30 14:11 UTC by Martin Stransky
Modified: 2021-03-15 09:55 UTC (History)
19 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
GNU Compiler Collection 99593 0 P1 NEW [11 Regression] arm MVE ICE when compiling firefox (skia) since r11-6708 2021-03-15 09:55:40 UTC

Description Martin Stransky 2021-01-30 14:11:41 UTC
Description of problem:
Firefox on rawhide fails to build on koji, the errror is:

*** WARNING *** there are active plugins, do not report this as a bug unless you can reproduce it without enabling any plugins.
Event                            | Plugins
PLUGIN_FINISH_UNIT               | annobin: Generate final annotations
PLUGIN_START_UNIT                | annobin: Generate global annotations
PLUGIN_ALL_PASSES_START          | annobin: Generate per-function annotations
PLUGIN_ALL_PASSES_END            | annobin: Register per-function end symbols
during RTL pass: final
In file included from Unified_cpp_gfx_skia5.cpp:65:
/builddir/build/BUILD/firefox-85.0/gfx/skia/skia/src/core/SkMipMap.cpp: In function ‘void downsample_2_3(void*, const void*, size_t, int) [with F = ColorTypeFilter_Alpha_F16]’:
/builddir/build/BUILD/firefox-85.0/gfx/skia/skia/src/core/SkMipMap.cpp:290:1: internal compiler error: in neon_output_shift_immediate, at config/arm/arm.c:12973
  290 | }
      | ^
0x114d4cb diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char const*, std::__va_list*, diagnostic_t)
	???:0
0x7127e3 internal_error(char const*, ...)
	???:0
0x7128d3 fancy_abort(char const*, int, char const*)
	???:0
0x4ab663 neon_output_shift_immediate(char const*, char, rtx_def**, machine_mode, int, bool)
	???:0
0x620313 output_510(rtx_def**, rtx_insn*)
	???:0
0x943c4b final_scan_insn_1(rtx_insn*, _IO_FILE*, int, int, int*) [clone .constprop.0]
	???:0
0x9435bf final_1(rtx_insn*, _IO_FILE*, int, int)
	???:0
0xeb4bbb (anonymous namespace)::pass_final::execute(function*)
	???:0

Build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=60757529

Comment 1 Martin Stransky 2021-01-30 14:13:00 UTC
Compiler is gcc-11.0.0-0.17.fc34.armv7hl

Comment 2 Ben Cotton 2021-02-09 15:44:34 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 34 development cycle.
Changing version to 34.

Comment 3 Jakub Jelinek 2021-03-12 14:51:42 UTC
Sorry, missed this.  Is this still reproduceable on some src.rpm?  I think koji now has the support to request a tarball of the buildroot of failed builds, but it needs to happen soon after the failure (we could find the /tmp/cc*.out in there).

Comment 4 Martin Stransky 2021-03-13 15:43:14 UTC
(In reply to Jakub Jelinek from comment #3)
> Sorry, missed this.  Is this still reproduceable on some src.rpm?  I think
> koji now has the support to request a tarball of the buildroot of failed
> builds, but it needs to happen soon after the failure (we could find the
> /tmp/cc*.out in there).

I think so. I fired new builds for it - firefox-86.0.1-2.

Comment 5 Jakub Jelinek 2021-03-14 22:15:07 UTC
Thanks, got preprocessed source, reducing now.

Comment 6 Jakub Jelinek 2021-03-15 00:03:04 UTC
-mtune=generic-armv7-a -mfloat-abi=hard -mfpu=neon -O2

typedef __simd64_int16_t e;
typedef __simd64_uint16_t f;
typedef __simd128_int32_t g;
typedef __simd128_float32_t h;
typedef __simd128_uint32_t i;
g j, p;
g k(int l) { return __builtin_neon_vdup_nv4si(l); }
i n(f l) { return (i)__builtin_neon_vmovluv4hi((e)l); }
template <int, typename> struct q;
template <int r, typename aa> q<r, aa> operator<(aa s, q<r, aa> t) {
  return q<r, aa>(s) < t;
}
template <typename ab, typename ac, int r> q<r, ab> ad(const q<r, ac> &);
typedef q<4, int> ae;
template <> class q<4, float> {
public:
  q(h af) : ag(af) {}
  q(float) {}
  static q ah(void *ai) {
    float *l = (float *)ai;
    return __builtin_neon_vld1v4sf(l);
  }
  q operator+(q o) {
    h l = ag, m = o.ag;
    return __builtin_neon_vaddv4sf(l, m);
  }
  q operator*(q) {
    h l = ag, m;
    return __builtin_neon_vmulfv4sf(l, m);
  }
  h ag;
};
template <> class q<4, unsigned short> {
public:
  q(f af) : ag(af) {}
  static q ah(void *ai) {
    unsigned short *l = (unsigned short *)ai;
    return (f)__builtin_neon_vld1v4hi((__builtin_neon_hi *)l);
  }
  void aj() {
    f m = ag;
    __builtin_neon_vst1v4hi(0, (e)m);
  }
  f ag;
};
template <> class q<4, int> {
public:
  q(g af) : ag(af) {}
  q(int u) { ag = k(u); }
  static q ah(void *ai) {
    int *l = (int *)ai;
    return __builtin_neon_vld1v4si(l);
  }
  q operator&(q o) {
    g v = ag & o.ag;
    return v;
  }
  q operator|(q o) {
    g w = ag | o.ag;
    return w;
  }
  q operator^(q) {
    g x = ag ^ p;
    return x;
  }
  q operator>>(int ak) { return ag >> q(ak).ag; }
  q operator<(q) {
    g y, z = j < ag;
    y = (g)z;
    return y;
  }
  g ag;
};
template <> ae ad(const q<4, unsigned short> &al) { return g(n(al.ag)); }
template <> q<4, unsigned short> ad(const ae &al) {
  i l(i(al.ag));
  return (f)__builtin_neon_vmovnv4si((g)l);
}
q<4, float> am(long long an) {
  q ao = q<4, unsigned short>::ah(&an);
  ae ak = ad<int>(ao), ap = ak & 8000, aq = ak ^ ap, ar = 55 < aq, as(aq);
  q at = as & ar;
  ae au = ap | at;
  return q<4, float>::ah(&au);
}
q<4, unsigned short> av(q<4, float> aw) {
  ae ak = ae::ah(&aw), ap = ak & 80000000, aq = ap, ax = 5, as = aq >> 3,
     ay = 6;
  q az = ax & as;
  ae au = ay | az;
  return ad<unsigned short>(au);
}
struct ba {
  typedef int bb;
  static q<4, float> bc(int s) { return am(s); }
};
q<4, float> bd(q<4, float> s) { return s * 0; }
template <typename be> void bf(void *bg, void *al, int bh, int bi) {
  int bj;
  auto bk(static_cast<typename be::bb *>(al) + bh),
      d = static_cast<typename be::bb *>(bg),
      bl = be::bc(static_cast<typename be::bb *>(al)[0]), bm = be::bc(0),
      c = bm;
  for (; bi;) {
    auto a = c, bn = be::bc(static_cast<typename be::bb *>(al)[1]),
         bo = be::bc(1);
    q bp = bn;
    q bq = bp;
    auto b = bq + bo;
    bl = be::bc(static_cast<typename be::bb *>(al)[2]);
    bm = be::bc(bk[2]);
    c = bl + bm;
    q br = a + b;
    auto bs = br;
    q bt = bd(bs);
    av(bt).aj();
    d[0] = bj;
  }
}
int bu;
void bv() { bf<ba>(0, 0, 0, bu); }


Note You need to log in before you can comment on or make changes to this bug.