https://gcc.gnu.org/g:5a9a70a5837aba373e3f36a89943c52e37a19809
commit 5a9a70a5837aba373e3f36a89943c52e37a19809 Author: Michael Matz <m...@suse.de> Date: Tue Jul 9 02:20:10 2024 +0200 x86-ssw: don't clobber flags Diff: --- gcc/config/i386/i386.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index 33e69e96008d..734802dbed4f 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -10878,8 +10878,12 @@ ix86_components_for_bb (basic_block bb) } static void -ix86_disqualify_components (sbitmap, edge, sbitmap, bool) +ix86_disqualify_components (sbitmap components, edge e, sbitmap, bool) { + /* If the flags are needed at the start of e->dest then we can't insert + our stack adjustment insns (they default to flag-clobbering add/sub). */ + if (bitmap_bit_p (DF_LIVE_IN (e->dest), FLAGS_REG)) + bitmap_clear_bit (components, SW_FRAME); } static void