https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86214
Christophe Lyon <clyon at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clyon at gcc dot gnu.org --- Comment #20 from Christophe Lyon <clyon at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #17) > Author: jakub > Date: Fri Jan 18 10:07:27 2019 > New Revision: 268067 > > URL: https://gcc.gnu.org/viewcvs?rev=268067&root=gcc&view=rev > Log: > PR tree-optimization/86214 > * tree-inline.h (struct copy_body_data): Add > add_clobbers_to_eh_landing_pads member. > * tree-inline.c (add_clobbers_to_eh_landing_pad): New function. > (copy_edges_for_bb): Call it if EH edge destination is < > id->add_clobbers_to_eh_landing_pads. Fix a comment typo. > (expand_call_inline): Set id->add_clobbers_to_eh_landing_pads > if flag_stack_reuse != SR_NONE and clear it afterwards. > > * g++.dg/opt/pr86214-1.C: New test. > * g++.dg/opt/pr86214-2.C: New test. > > Added: > trunk/gcc/testsuite/g++.dg/opt/pr86214-1.C > trunk/gcc/testsuite/g++.dg/opt/pr86214-2.C > Modified: > trunk/gcc/ChangeLog > trunk/gcc/testsuite/ChangeLog > trunk/gcc/tree-inline.c > trunk/gcc/tree-inline.h Hi Jakub, Since you committed this patch, I've noticed regressions on some arm targets: FAIL: 23_containers/list/requirements/exception/basic.cc execution test libstdc++.log has this: spawn [open ...] N10__gnu_test12functor_base19iterator_operationsINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEEEE end count 2 N10__gnu_test12functor_base25const_iterator_operationsINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEEEE end count 3 N10__gnu_test12functor_base11erase_pointINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1ELb0EEE end count 4 N10__gnu_test12functor_base11erase_rangeINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1ELb0EEE end count 5 N10__gnu_test12functor_base12insert_pointINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1ELb0EEE end count 6 N10__gnu_test12functor_base7emplaceINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb0EEE end count 7 N10__gnu_test12functor_base13emplace_pointINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1ELb0ELb0EEE end count 8 N10__gnu_test12functor_base13emplace_frontINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1EEE end count 9 N10__gnu_test12functor_base12emplace_backINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1EEE end count 10 N10__gnu_test12functor_base9pop_frontINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1EEE end count 11 N10__gnu_test12functor_base8pop_backINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1EEE end count 12 N10__gnu_test12functor_base10push_frontINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1EEE end count 13 N10__gnu_test12functor_base9push_backINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb1EEE end count 14 N10__gnu_test12functor_base6rehashINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEELb0EEE end count 15 N10__gnu_test12functor_base4swapINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS4_21throw_allocator_limitIS5_EEEEEE end count 16 qemu: uncaught target signal 11 (Segmentation fault) - core dumped The qemu trace does not seem very helpful (and is probably incomplete): IN: _ZN10__gnu_test12basic_safetyINSt7__cxx114listIN9__gnu_cxx17throw_value_limitENS3_21throw_allocator_limitIS4_EEEEE3runEv 0x0001c724: e5943008 ldr r3, [r4, #8] 0x0001c728: e59d2010 ldr r2, [sp, #0x10] 0x0001c72c: e59d101c ldr r1, [sp, #0x1c] 0x0001c730: e3530000 cmp r3, #0 0x0001c734: e5987000 ldr r7, [r8] 0x0001c738: e5812000 str r2, [r1] 0x0001c73c: e5896000 str r6, [sb] 0x0001c740: e5882000 str r2, [r8] 0x0001c744: 0a000510 beq #0x1db8c ---------------- IN: 0x40adc6bc: e0849009 add sb, r4, sb 0x40adc6c0: e59f29c8 ldr r2, [pc, #0x9c8] 0x40adc6c4: e5993004 ldr r3, [sb, #4] 0x40adc6c8: e08f2002 add r2, pc, r2 0x40adc6cc: e3833001 orr r3, r3, #1 0x40adc6d0: e1550002 cmp r5, r2 0x40adc6d4: e59da018 ldr sl, [sp, #0x18] 0x40adc6d8: e5893004 str r3, [sb, #4] 0x40adc6dc: 0a000002 beq #0x40adc6ec ---------------- IN: 0x40adc6ec: e59f39a0 ldr r3, [pc, #0x9a0] 0x40adc6f0: e2846008 add r6, r4, #8 0x40adc6f4: e08f3003 add r3, pc, r3 0x40adc6f8: e593102c ldr r1, [r3, #0x2c] 0x40adc6fc: e3510000 cmp r1, #0 0x40adc700: 1affff13 bne #0x40adc354 ---------------- IN: 0x40adc704: e1a00006 mov r0, r6 0x40adc708: e28dd044 add sp, sp, #0x44 0x40adc70c: e8bd8ff0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} ---------------- IN: 0x40adc6ac: e085240c add r2, r5, ip, lsl #8 0x40adc6b0: e2822028 add r2, r2, #0x28 0x40adc6b4: e3a03001 mov r3, #1 0x40adc6b8: eaffffce b #0x40adc5f8 I've noticed this on: arm-none-linux-gnueabihf --with-mode arm --with-cpu cortex-a9 --with-fpu vfp RUNTESTFLAGS: -march=armv5t arm-none-linux-gnueabihf --with-mode arm --with-cpu arm10tdmi --with-fpu vfp arm-none-linux-gnueabihf --with-mode arm --with-cpu cortex-a5 --with-fpu vfpv3-d16-fp16 armeb-none-linux-gnueabihf --with-mode arm --with-cpu cortex-a9 --with-fpu vfpv3-d16-fp16 Other arm-none-linux-gnueabihf configs I test still run fine.