Bug 1958295
Summary: | gcc ice when compiling compiler-rt on aarch64 | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 8 | Reporter: | serge_sans_paille <sguelton> | ||||
Component: | gcc | Assignee: | Marek Polacek <mpolacek> | ||||
gcc sub component: | system-version | QA Contact: | Alexandra Petlanová Hájková <ahajkova> | ||||
Status: | CLOSED ERRATA | Docs Contact: | |||||
Severity: | unspecified | ||||||
Priority: | unspecified | CC: | ahajkova, fweimer, jakub, ohudlick | ||||
Version: | 8.5 | Keywords: | Bugfix, Triaged | ||||
Target Milestone: | beta | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | gcc-8.5.0-1.el8 | Doc Type: | No Doc Update | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2021-11-09 19:35:43 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Slightly more reduced testcase: // PR target/87839 // { dg-do compile { target c++11 } } // { dg-options "-O2" } // { dg-additional-options "-fpic" { target fpic } } long long a; static inline bool c(unsigned long long *j) { long long d = a, c = *j; __sync_val_compare_and_swap(&a, c, d); return true; } struct m { m(int *); }; struct p { void g() { m h(&aa); } int aa; }; struct q { using k = p; void g() { l.g(); } k l; }; template <typename> using n = q; using o = n<int>; struct t { long ab; void *ac[64]; }; struct F { t *r(); }; long x; template <typename s> struct G { F af; s u; void __attribute__((noinline)) ae() { while (t *b = af.r()) for (long j = 0; j < 6; j++) for (long i = x, e = b->ab; i < e; i++) if (i + e) u.v((int *)b->ac[i]); } }; struct H { o w; void v(int *j) { w.g(); if (j) { unsigned long long f = 12084505273LL; c(&f); } } }; struct x { G<H> ah; x(int); void y() { ah.ae(); } } g(0); void aj() { g.y(); } This will be fixed next week by a new GCC 8.4.1 tarball. 8.5.0 tarball ;) Fixed upstream now: https://gcc.gnu.org/r8-10959-g3488242b9a949ebc55b4a857380f94506f90ff76 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Low: gcc security and bug fix update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2021:4386 |
Created attachment 1780768 [details] t.cc Description of problem: # uname -a Linux hpe-apollo-cn99xx-14-vm-10.khw4.lab.eng.bos.redhat.com 4.18.0-305.1.el8.aarch64 #1 SMP Fri Apr 30 16:27:55 EDT 2021 aarch64 aarch64 aarch64 GNU/Linux # g++ --version g++ (GCC) 8.4.1 20210423 (Red Hat 8.4.1-2) # g++ -c -std=c++14 -fPIC -O2 t.cc -w t.cc: In function ‘void Quarantine<Callback>::DoRecycle() [with Callback = QuarantineCallback]’: t.cc:30:2: error: could not split insn } ^ (insn:TI 53 50 163 (parallel [ (set (reg:CC 66 cc) (unspec_volatile:CC [ (const_int 0 [0]) ] UNSPECV_ATOMIC_CMPSW)) (set (reg:DI 1 x1 [114]) (mem/v:DI (reg/f:DI 23 x23 [128]) [-1 S8 A128])) (set (mem/v:DI (reg/f:DI 23 x23 [128]) [-1 S8 A128]) (unspec_volatile:DI [ (const_int 42084505273 [0x9cc6e96b9]) (reg/v:DI 0 x0 [orig:97 xchg ] [97]) (const_int 0 [0]) (const_int 32773 [0x8005]) (const_int 32773 [0x8005]) ] UNSPECV_ATOMIC_CMPSW)) (clobber (reg:SI 2 x2 [134])) ]) "t.cc":6 3372 {aarch64_compare_and_swapdi} (expr_list:REG_DEAD (reg/v:DI 0 x0 [orig:97 xchg ] [97]) (expr_list:REG_UNUSED (reg:CC 66 cc) (expr_list:REG_UNUSED (reg:SI 2 x2 [134]) (expr_list:REG_UNUSED (reg:DI 1 x1 [114]) (nil)))))) during RTL pass: final t.cc:30:2: internal compiler error: in final_scan_insn_1, at final.c:3145 The attached test case got reduce from compiler-rt source by cvise.