[Bug tree-optimization/124099] [16 Regression] emutls not handling replacement in returns correctly happens since r16-7504
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Feb 15 08:25:44 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124099
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pinskia@gcc.gnu.org>:
https://gcc.gnu.org/g:7e8e4dac65ba37ff7511d7897fa50a00e1d3479a
commit r16-7521-g7e8e4dac65ba37ff7511d7897fa50a00e1d3479a
Author: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
Date: Sat Feb 14 11:33:01 2026 -0800
forwprop: Fix copy prop aggregates into return statements slightly
[PR124099]
So a few more restrictions are needed here.
First we don't need to change if the return statement is already
a RESULT_DECL nor deference of the RESULT_DECL.
Second proping a global variable into the return is ok for the most
part except enumtls does not know how to expand that correctly and things
go down hill. So restrict to non global vars now.
Bootstrapped and tested on x86_64-linux-gnu.
Also tested the testcase with TLS turned off so enumtls ran.
PR tree-optimization/124099
gcc/ChangeLog:
* tree-ssa-forwprop.cc (optimize_agr_copyprop_return): Don't do
anything
if the return is already result decl or a deference of result decl.
Also reject non local var decls.
gcc/testsuite/ChangeLog:
* gcc.dg/torture/tls-return-1.c: New test.
Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
More information about the Gcc-bugs
mailing list