[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 Roger Sayle changed: What|Removed |Added CC||roger at nextmovesoftware dot com Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE --- Comment #7 from Roger Sayle --- This bug is a duplicate of PR 84964, for which a patch has just been proposed. *** This bug has been marked as a duplicate of bug 84964 ***
[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 --- Comment #6 from Andrew Pinski --- (In reply to Karine EM from comment #5) > With GCC-11 and GCC-10, the compiler does not crash but returns: "confused > by earlier errors, bailing out" and ends gracefully. That is actually still a crash :) Just hiding the internal compiler error as there was already an error. This happens with release checking turned on. It is by design even.
[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 Karine EM changed: What|Removed |Added CC||k.even-mendoza at imperial dot ac. ||uk --- Comment #5 from Karine EM --- With GCC-11 and GCC-10, the compiler does not crash but returns: "confused by earlier errors, bailing out" and ends gracefully. But with GCC-12, I got a similar crash, with a flat array, a bit over 1GB: 1 struct a { 2char arr[11]; 3 } b[1]; 4 void c(struct a e) { 5if (__builtin_memcmp(e.arr, b, 6)) 6 __builtin_abort(); 7 } 8 int main() { 9struct a d; 10d.arr; 11c(d); 12return 0; 13 } However, the compiler does recognize the huge stack and gives: "sorry, unimplemented: passing too large argument on stack", but still crash. If there is already an error printed, what is the problem to terminate the compilation gracefully as GCC-11 and GCC-10 used to do? == With GCC-11 and GCC-10 (at least for this case): gcc-10 -O2 2c8efdb591d9739d4434f1c216106706c62bd78f_v2.c 2c8efdb591d9739d4434f1c216106706c62bd78f_v2.c: In function ‘main’: 2c8efdb591d9739d4434f1c216106706c62bd78f_v2.c:11:3: sorry, unimplemented: passing too large argument on stack 11 | c(d); | ^~~~ 2c8efdb591d9739d4434f1c216106706c62bd78f_v2.c:11: confused by earlier errors, bailing out == With GCC-12 ((GCC) 12.0.0 20211216 (experimental)), this is the trace: 2c8efdb591d9739d4434f1c216106706c62bd78f.c:11:3: sorry, unimplemented: passing too large argument on stack 11 | c(d); | ^~~~ during RTL pass: expand 2c8efdb591d9739d4434f1c216106706c62bd78f.c:11:3: internal compiler error: in expand_call, at calls.c:3905 0x6cced7 expand_call(tree_node*, rtx_def*, int) .././../gcc-source/gcc/calls.c:3905 0xb43a3f expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) .././../gcc-source/gcc/expr.c:11536 0xa14b41 expand_expr .././../gcc-source/gcc/expr.h:301 0xa14b41 expand_call_stmt .././../gcc-source/gcc/cfgexpand.c:2831 0xa14b41 expand_gimple_stmt_1 .././../gcc-source/gcc/cfgexpand.c:3864 0xa14b41 expand_gimple_stmt .././../gcc-source/gcc/cfgexpand.c:4028 0xa1a67e expand_gimple_basic_block .././../gcc-source/gcc/cfgexpand.c:6069 0xa1c527 execute .././../gcc-source/gcc/cfgexpand.c:6795 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report.
[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 Andrew Pinski changed: What|Removed |Added CC||anbu1024.me at gmail dot com --- Comment #4 from Andrew Pinski --- *** Bug 101314 has been marked as a duplicate of this bug. ***
[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 --- Comment #3 from Chengnian Sun --- A duplicate here. typedef struct { struct { struct { struct { struct { struct { struct { struct { struct { struct { struct { int f; } f[8]; } f[8]; } f[8]; } f[8]; } f[8]; } f[8]; } f[8]; } f[8]; } f[8]; } f[8]; } T; f(w) T *w; { int i; g(w[i]); }
[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 Richard Biener changed: What|Removed |Added Keywords||error-recovery, ||ice-on-invalid-code --- Comment #2 from Richard Biener --- mutant.c:16:9: sorry, unimplemented: passing too large argument on stack 16 | baz() { bar(s); } | ^~ This means it's an error-recovery issue.
[Bug middle-end/100536] ICE: in expand_call with large union (1GB) argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100536 --- Comment #1 from Andrew Pinski --- This most likely should really be rejected as over 1GB argument size is HUGE.