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: CLOSED EOL
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: 2022-06-07 22:02 UTC (History)
19 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-06-07 22:02:51 UTC
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); }

Comment 7 Ben Cotton 2022-05-12 15:31:40 UTC
This message is a reminder that Fedora Linux 34 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora Linux 34 on 2022-06-07.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
'version' of '34'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, change the 'version' 
to a later Fedora Linux version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora Linux 34 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora Linux, you are encouraged to change the 'version' to a later version
prior to this bug being closed.

Comment 8 Ben Cotton 2022-06-07 22:02:51 UTC
Fedora Linux 34 entered end-of-life (EOL) status on 2022-06-07.

Fedora Linux 34 is no longer maintained, which means that it
will not receive any further security or bug fix updates. As a result we
are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release.

Thank you for reporting this bug and we are sorry it could not be fixed.


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