public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() @ 2023-11-29 7:42 zsojka at seznam dot cz 2023-11-29 8:02 ` [Bug target/112760] " zsojka at seznam dot cz ` (7 more replies) 0 siblings, 8 replies; 9+ messages in thread From: zsojka at seznam dot cz @ 2023-11-29 7:42 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 Bug ID: 112760 Summary: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: zsojka at seznam dot cz Target Milestone: --- Host: x86_64-pc-linux-gnu Target: i686-pc-linux-gnu Created attachment 56715 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56715&action=edit reduced testcase Output: $ x86_64-pc-linux-gnu-gcc -m32 -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 testcase.c $ ./a.out Aborted The code for __builtin_add_overflow() check looks wrong: # testcase.c:9: u16 x = __builtin_add_overflow_p (a, g, (u16) 0); add eax, ecx # tmp110, g.0_1 mov eax, 1 # tmp118, setc bl #, _8 cmovne ebx, eax # _8,, _8, tmp118 Comparing the code without -mavx, the breakage can be observed better: $ diff -u a-testcase.GOOD.s a-testcase.BAD.s --- a-testcase.GOOD.s 2023-11-29 08:34:39.978807709 +0100 +++ a-testcase.BAD.s 2023-11-29 08:32:27.458809580 +0100 @@ -4,7 +4,7 @@ # compiled by GNU C version 14.0.0 20231128 (experimental), GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP # GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 -# options passed: -m32 -m8bit-idiv -masm=intel -mtune=generic -march=x86-64 -O2 -fno-dce -fno-guess-branch-probability --param=max-cse-insns=0 +# options passed: -m32 -m8bit-idiv -mavx -masm=intel -mtune=generic -march=x86-64 -O2 -fno-dce -fno-guess-branch-probability --param=max-cse-insns=0 .text .p2align 4 .globl foo0 @@ -28,10 +28,8 @@ movzx esi, WORD PTR [esp+16] # b, b # testcase.c:9: u16 x = __builtin_add_overflow_p (a, g, (u16) 0); add eax, ecx # tmp110, g.0_1 - movzx edx, ax # tmp111, tmp110 - setc bl #, _8 - cmp eax, edx # tmp110, tmp111 mov eax, 1 # tmp118, + setc bl #, _8 cmovne ebx, eax # _8,, _8, tmp118 # testcase.c:10: g -= g / b; mov eax, ecx # tmp119, g.0_1 The "cmovne" instruction is using the Z flag from a different comparison. $ x86_64-pc-linux-gnu-gcc -v Using built-in specs. COLLECT_GCC=/repo/gcc-trunk/binary-latest-amd64/bin/x86_64-pc-linux-gnu-gcc COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r14-5940-20231128183456-g3d104d93a70-checking-yes-rtl-df-extra-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++ --enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra --with-cloog --with-ppl --with-isl --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --with-ld=/usr/bin/x86_64-pc-linux-gnu-ld --with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch --prefix=/repo/gcc-trunk//binary-trunk-r14-5940-20231128183456-g3d104d93a70-checking-yes-rtl-df-extra-amd64 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 14.0.0 20231128 (experimental) (GCC) ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz @ 2023-11-29 8:02 ` zsojka at seznam dot cz 2023-11-29 10:45 ` [Bug rtl-optimization/112760] " ubizjak at gmail dot com ` (6 subsequent siblings) 7 siblings, 0 replies; 9+ messages in thread From: zsojka at seznam dot cz @ 2023-11-29 8:02 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 --- Comment #1 from Zdenek Sojka <zsojka at seznam dot cz> --- Created attachment 56716 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56716&action=edit more complex testcase, with less compiler flags Attached a testcase that needs only -O2 -mavx; might be a different issue, though. $ x86_64-pc-linux-gnu-gcc -m32 -O2 -mavx testcase.c $ ./a.out Aborted $ diff -u a-testcase.GOOD.s a-testcase.BAD.s --- a-testcase.GOOD.s 2023-11-29 08:53:43.058791568 +0100 +++ a-testcase.BAD.s 2023-11-29 08:52:39.878792460 +0100 @@ -4,7 +4,7 @@ # compiled by GNU C version 14.0.0 20231128 (experimental), GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP # GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 -# options passed: -m32 -masm=intel -mtune=generic -march=x86-64 -O2 +# options passed: -m32 -mavx -masm=intel -mtune=generic -march=x86-64 -O2 .text .p2align 4 .globl foo0 @@ -37,19 +37,19 @@ rol ax, 8 # _5, # testcase.c:11: u64 u64_1 = __builtin_bswap16 (SHL (u64_0, u8_0)) % u16_0; div bx # u16_0 -# testcase.c:12: u8 u8_1 = __builtin_add_overflow_p (u8_0, u8_0, u8_0); - mov eax, ecx # u8_0, u8_0 # testcase.c:13: u32 u32_1 = foo0_u32_0 & u16_0; movzx ebx, bx # u16_0, u16_0 # testcase.c:12: u8 u8_1 = __builtin_add_overflow_p (u8_0, u8_0, u8_0); - add al, cl # u8_0, u8_0 + add al, al # u8_0, u8_0 +# testcase.c:14: u32 u32_2 = __builtin_sub_overflow_p (0, u64_1, (u8) 0); + movzx edx, dx # _6, tmp127 +# testcase.c:12: u8 u8_1 = __builtin_add_overflow_p (u8_0, u8_0, u8_0); setc al #, _15 # testcase.c:14: u32 u32_2 = __builtin_sub_overflow_p (0, u64_1, (u8) 0); xor ecx, ecx # tmp133 # testcase.c:13: u32 u32_1 = foo0_u32_0 & u16_0; and ebx, DWORD PTR foo0_u32_0 # u32_1, foo0_u32_0 # testcase.c:14: u32 u32_2 = __builtin_sub_overflow_p (0, u64_1, (u8) 0); - movzx edx, dx # _6, tmp127 sub ecx, edx # tmp132, _6 setb dl #, _18 and ecx, -256 # tmp132, Here, the problem is with: # testcase.c:12: u8 u8_1 = __builtin_add_overflow_p (u8_0, u8_0, u8_0); add al, al # u8_0, u8_0 due to the: -# testcase.c:12: u8 u8_1 = __builtin_add_overflow_p (u8_0, u8_0, u8_0); - mov eax, ecx # u8_0, u8_0 there is no "u8_0" in eax Maybe the compiler tries to use an AVX instruction, that is in the end not generated? ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz 2023-11-29 8:02 ` [Bug target/112760] " zsojka at seznam dot cz @ 2023-11-29 10:45 ` ubizjak at gmail dot com 2023-12-01 12:22 ` [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 jakub at gcc dot gnu.org ` (5 subsequent siblings) 7 siblings, 0 replies; 9+ messages in thread From: ubizjak at gmail dot com @ 2023-11-29 10:45 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization Last reconfirmed| |2023-11-29 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Target Milestone|--- |14.0 --- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- With the original testcase, ce1 pass is if-converting: 20: flags:CCZ=cmp(r110:SI,r111:SI) REG_DEAD r111:SI REG_DEAD r110:SI 21: pc={(flags:CCZ==0)?L23:pc} REG_DEAD flags:CCZ 39: NOTE_INSN_BASIC_BLOCK 5 22: r103:HI=0x1 23: L23: with: IF-THEN-JOIN block found, pass 2, test 2, then 5, join 6 scanning new insn with uid = 45. scanning new insn with uid = 44. scanning new insn with uid = 46. if-conversion succeeded through noce_try_cmove Removing jump 21. deleting insn with uid = 21. deleting insn with uid = 22. to: 20: flags:CCZ=cmp(r110:SI,r111:SI) REG_DEAD r111:SI REG_DEAD r110:SI 45: r118:HI=0x1 44: flags:CCZ=cmp(r110:SI,r111:SI) 46: r103:HI={(flags:CCZ==0)?r103:HI:r118:HI} And things go downhill from here. Before postreload we have: 20: flags:CCZ=cmp(ax:SI,dx:SI) REG_UNUSED flags:CCZ 44: flags:CCZ=cmp(ax:SI,dx:SI) REG_DEAD dx:SI REG_DEAD ax:SI 62: ax:HI=0x1 REG_EQUIV 0x1 46: bx:HI={(flags:CCZ==0)?bx:HI:ax:HI} REG_DEAD flags:CCZ REG_DEAD ax:HI and in posteload pass (insn 44) is removed: 20: flags:CCZ=cmp(ax:SI,dx:SI) REG_UNUSED flags:CCZ 62: ax:HI=0x1 REG_EQUIV 0x1 46: bx:HI={(flags:CCZ==0)?bx:HI:ax:HI} REG_DEAD flags:CCZ REG_DEAD ax:HI here comes pro_and_epilogue pass that detects "unused" (insn 20) and removes it: df_analyze called deleting insn with uid = 20. Confirmed as RTL optimization problem. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz 2023-11-29 8:02 ` [Bug target/112760] " zsojka at seznam dot cz 2023-11-29 10:45 ` [Bug rtl-optimization/112760] " ubizjak at gmail dot com @ 2023-12-01 12:22 ` jakub at gcc dot gnu.org 2023-12-01 12:45 ` jakub at gcc dot gnu.org ` (4 subsequent siblings) 7 siblings, 0 replies; 9+ messages in thread From: jakub at gcc dot gnu.org @ 2023-12-01 12:22 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[14 Regression] wrong code |[14 Regression] wrong code |with -O2 -fno-dce |with -O2 -fno-dce |-fno-guess-branch-probabili |-fno-guess-branch-probabili |ty -m8bit-idiv -mavx |ty -m8bit-idiv -mavx |--param=max-cse-insns=0 and |--param=max-cse-insns=0 and |__builtin_add_overflow_p() |__builtin_add_overflow_p() | |since r14-5355 CC| |jakub at gcc dot gnu.org, | |rsandifo at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r14-5355-g3cd3a09b3f91a1d023cb180763d40598d6bb274b ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz ` (2 preceding siblings ...) 2023-12-01 12:22 ` [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 jakub at gcc dot gnu.org @ 2023-12-01 12:45 ` jakub at gcc dot gnu.org 2023-12-01 12:55 ` jakub at gcc dot gnu.org ` (3 subsequent siblings) 7 siblings, 0 replies; 9+ messages in thread From: jakub at gcc dot gnu.org @ 2023-12-01 12:45 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-bisection | --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- In reload dump I see no changes (except function_decl/var_decl addresses), in vzeroupper, postreload, split2, ree and cmpelim dumps a bunch of extra REG_DEAD notes here and there in r14-5355 compared to r14-5354, and finally pro_and_epilogue deletes (insn 20 19 62 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 0 ax [110]) (reg:SI 1 dx [111]))) "pr112760.c":6:22 11 {*cmpsi_1} (expr_list:REG_UNUSED (reg:CCZ 17 flags) (nil))) insn. In reload dump there is: (insn 20 19 44 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 0 ax [110]) (reg:SI 1 dx [111]))) "pr112760.c":6:22 11 {*cmpsi_1} (nil)) (insn 44 20 62 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 0 ax [110]) (reg:SI 1 dx [111]))) "pr112760.c":6:22 11 {*cmpsi_1} (nil)) (insn 62 44 46 2 (set (reg:HI 0 ax [118]) (const_int 1 [0x1])) "pr112760.c":6:22 86 {*movhi_internal} (expr_list:REG_EQUIV (const_int 1 [0x1]) (nil))) (insn 46 62 25 2 (set (reg:HI 3 bx [orig:103 _8+2 ] [103]) (if_then_else:HI (eq (reg:CCZ 17 flags) (const_int 0 [0])) (reg:HI 3 bx [orig:103 _8+2 ] [103]) (reg:HI 0 ax [118]))) "pr112760.c":6:22 1381 {*movhicc_noc} (nil)) so the insn 20 is indeed useless and in vzeroupper pass that was correctly marked in the notes: (insn 20 19 44 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 0 ax [110]) (reg:SI 1 dx [111]))) "pr112760.c":6:22 11 {*cmpsi_1} (expr_list:REG_UNUSED (reg:CCZ 17 flags) (nil))) (insn 44 20 62 2 (set (reg:CCZ 17 flags) (compare:CCZ (reg:SI 0 ax [110]) (reg:SI 1 dx [111]))) "pr112760.c":6:22 11 {*cmpsi_1} (expr_list:REG_DEAD (reg:SI 1 dx [111]) (expr_list:REG_DEAD (reg:SI 0 ax [110]) (nil)))) (insn 62 44 46 2 (set (reg:HI 0 ax [118]) (const_int 1 [0x1])) "pr112760.c":6:22 86 {*movhi_internal} (expr_list:REG_EQUIV (const_int 1 [0x1]) (nil))) (insn 46 62 25 2 (set (reg:HI 3 bx [orig:103 _8+2 ] [103]) (if_then_else:HI (eq (reg:CCZ 17 flags) (const_int 0 [0])) (reg:HI 3 bx [orig:103 _8+2 ] [103]) (reg:HI 0 ax [118]))) "pr112760.c":6:22 1381 {*movhicc_noc} (expr_list:REG_DEAD (reg:CCZ 17 flags) (expr_list:REG_DEAD (reg:HI 0 ax [118]) (nil)))) But then postreload deletes insn 44 rather than 20 and keeps the notes around unchanged. Insn 20 is deleted in #2 0x0000000000cce9df in copyprop_hardreg_forward_1 (bb=<basic_block 0x7fffea2f7c60 (2)>, vd=0x3bd2be0) at ../../gcc/regcprop.cc:829 #3 0x0000000000ccfe1c in copyprop_hardreg_forward_bb_without_debug_insn (bb=<basic_block 0x7fffea2f7c60 (2)>) at ../../gcc/regcprop.cc:1235 #4 0x0000000000d5b371 in prepare_shrink_wrap (entry_block=<basic_block 0x7fffea2f7c60 (2)>) at ../../gcc/shrink-wrap.cc:451 #5 0x0000000000d5bb70 in try_shrink_wrapping (entry_edge=0x7fffffffd900, prologue_seq=0x7fffe9f25240) at ../../gcc/shrink-wrap.cc:674 #6 0x00000000008b4320 in thread_prologue_and_epilogue_insns () at ../../gcc/function.cc:6056 and regcprop.cc documents it relies on up to date REG_DEAD/REG_UNUSED notes; after all the removal happens in /* Detect obviously dead sets (via REG_UNUSED notes) and remove them. */ if (set && !RTX_FRAME_RELATED_P (insn) && NONJUMP_INSN_P (insn) && !may_trap_p (set) && find_reg_note (insn, REG_UNUSED, SET_DEST (set)) && !side_effects_p (SET_SRC (set)) && !side_effects_p (SET_DEST (set))) { bool last = insn == BB_END (bb); delete_insn (insn); if (last) break; continue; } and regcprop.cc calls df_note_add_problem (); before calling df_analyze (). Except in the pro_and_epilogue case it is done elsewhere and it just calls into the regcprop.cc functions. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz ` (3 preceding siblings ...) 2023-12-01 12:45 ` jakub at gcc dot gnu.org @ 2023-12-01 12:55 ` jakub at gcc dot gnu.org 2023-12-06 8:59 ` cvs-commit at gcc dot gnu.org ` (2 subsequent siblings) 7 siblings, 0 replies; 9+ messages in thread From: jakub at gcc dot gnu.org @ 2023-12-01 12:55 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 56753 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56753&action=edit gcc14-pr112760.patch Untested fix. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz ` (4 preceding siblings ...) 2023-12-01 12:55 ` jakub at gcc dot gnu.org @ 2023-12-06 8:59 ` cvs-commit at gcc dot gnu.org 2023-12-06 9:01 ` jakub at gcc dot gnu.org 2023-12-06 18:33 ` pinskia at gcc dot gnu.org 7 siblings, 0 replies; 9+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2023-12-06 8:59 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 --- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>: https://gcc.gnu.org/g:e44ed92dbbe9d4e5c23f486cd2f77a6f9ee513c5 commit r14-6210-ge44ed92dbbe9d4e5c23f486cd2f77a6f9ee513c5 Author: Jakub Jelinek <jakub@redhat.com> Date: Wed Dec 6 09:59:12 2023 +0100 i386: Move vzeroupper pass from after reload pass to after postreload_cse [PR112760] Regardless of the outcome of the REG_UNUSED discussions, I think it is a good idea to move the vzeroupper pass one pass later. As can be seen in the multiple PRs and as postreload.cc documents, reload/LRA is known to create dead statements quite often, which is the reason why we have postreload_cse pass at all. Doing vzeroupper pass before such cleanup means the pass including df_analyze for it needs to process more instructions than needed and because mode switching adds note problem, also higher chance of having stale REG_UNUSED notes. And, I really don't see why vzeroupper can't wait until those cleanups are done. 2023-12-06 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/112760 * config/i386/i386-passes.def (pass_insert_vzeroupper): Insert after pass_postreload_cse rather than pass_reload. * config/i386/i386-features.cc (rest_of_handle_insert_vzeroupper): Adjust comment for it. * gcc.dg/pr112760.c: New test. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz ` (5 preceding siblings ...) 2023-12-06 8:59 ` cvs-commit at gcc dot gnu.org @ 2023-12-06 9:01 ` jakub at gcc dot gnu.org 2023-12-06 18:33 ` pinskia at gcc dot gnu.org 7 siblings, 0 replies; 9+ messages in thread From: jakub at gcc dot gnu.org @ 2023-12-06 9:01 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- This is now latent, we need to decide about the updating and usability of REG_UNUSED notes, but after moving the pass it shouldn't trigger on this testcase. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz ` (6 preceding siblings ...) 2023-12-06 9:01 ` jakub at gcc dot gnu.org @ 2023-12-06 18:33 ` pinskia at gcc dot gnu.org 7 siblings, 0 replies; 9+ messages in thread From: pinskia at gcc dot gnu.org @ 2023-12-06 18:33 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112760 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution|--- |DUPLICATE --- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The REG_UNUSED vs single_set issue is being tracked in PR 40209 . *** This bug has been marked as a duplicate of bug 40209 *** ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-12-06 18:33 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-11-29 7:42 [Bug target/112760] New: [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() zsojka at seznam dot cz 2023-11-29 8:02 ` [Bug target/112760] " zsojka at seznam dot cz 2023-11-29 10:45 ` [Bug rtl-optimization/112760] " ubizjak at gmail dot com 2023-12-01 12:22 ` [Bug rtl-optimization/112760] [14 Regression] wrong code with -O2 -fno-dce -fno-guess-branch-probability -m8bit-idiv -mavx --param=max-cse-insns=0 and __builtin_add_overflow_p() since r14-5355 jakub at gcc dot gnu.org 2023-12-01 12:45 ` jakub at gcc dot gnu.org 2023-12-01 12:55 ` jakub at gcc dot gnu.org 2023-12-06 8:59 ` cvs-commit at gcc dot gnu.org 2023-12-06 9:01 ` jakub at gcc dot gnu.org 2023-12-06 18:33 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).