This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/11969] -foptimize-sibling-calls from -O2 creates bad code
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Sep 2003 15:52:37 -0000
- Subject: [Bug optimization/11969] -foptimize-sibling-calls from -O2 creates bad code
- References: <20030818162309.11969.grhoten@jtcsv.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11969
------- Additional Comments From steven at gcc dot gnu dot org 2003-09-06 15:52 -------
Here are all the replacements that replace_call_placeholder
does with "-O2 -fno-unit-at-a-time":
sibcall_use_sibcall:
getWeightByte -> getWeightTrail
incWeight -> setWeightByte
sibcall_use_normal:
incWeight -> getWeightByte
incWeight -> setWeightByte
lengthenRange -> setWeightTrail
lengthenRange -> setWeightTrail
getWeightRanges -> lengthOfWeight
getWeightRanges -> lengthOfWeight
getWeightRanges -> truncateWeight
getWeightRanges -> memset
getWeightRanges -> memset
getWeightRanges -> getWeightTrail
getWeightRanges -> getWeightTrail
getWeightRanges -> setWeightTrail
getWeightRanges -> truncateWeight
getWeightRanges -> incWeightTrail
getWeightRanges -> getWeightTrail
getWeightRanges -> setWeightTrail
getWeightRanges -> decWeightTrail
getWeightRanges -> truncateWeight
getWeightRanges -> decWeightTrail
getWeightRanges -> incWeight
getWeightRanges -> getWeightTrail
getWeightRanges -> getWeightTrail
getWeightRanges -> getWeightByte
getWeightRanges -> getWeightByte
ucol_allocWeights_2_6 -> getWeightRanges
ucol_allocWeights_2_6 -> lengthenRange
ucol_allocWeights_2_6 -> getWeightByte
ucol_allocWeights_2_6 -> setWeightByte
ucol_allocWeights_2_6 -> incWeight
ucol_allocWeights_2_6 -> truncateWeight
ucol_allocWeights_2_6 -> incWeight
ucol_allocWeights_2_6 -> lengthenRange
ucol_allocWeights_2_6 -> lengthenRange
ucol_allocWeights_2_6 -> qsort
So there are only two sibcalls, and all the other "potentials" are replaced with
normal calls.
If this problem is real, then the sibcall incWeight -> setWeightByte may be the
cause of it. But the RTL for this looks quite OK AFAICT... :-\