On 12/07/12 14:04, Richard Henderson wrote:
On 2012-12-05 15:06, Aldy Hernandez wrote:
PR rtl-optimization/51771
Revert:
* builtin-attrs.def (ATTR_RETURNS_TWICE, ATTR_TM_NOTHROW_RT_LIST): New.
* gtm-builtins.def (BUILT_IN_TM_START): Add returns-twice attrib.
Are we absolutely sure that the rtl edges are fixed?
Fixing only the gimple level edges doesn't really help the regsister allocator.
I'm actually sure that the rtl edges are NOT fixed in the rtl :).
All the back edges are removed prior to generating RTL in
gimple_expand_cfg(), seemingly by design:
/* At the moment not all abnormal edges match the RTL
representation. It is safe to remove them here as
find_many_sub_basic_blocks will rediscover them.
In the future we should get this fixed properly. */
What I was assuming was that the returns-twice kludge was papering over
some other issue, because we were never sure that the lack of edges was
actually causing the problem in the PR. I can't find any tests
(internal or external) that need the returns-twice hack.
I am hoping that by removing this hack we can find actual problems.
However, if you believe the RTL edge dropping in gimple_expand_cfg() is
problematic, I can look into fixing this, though it would be nice to
have a test I can work off of.
Aldy