http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51771

Aldy Hernandez <aldyh at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-06-01
     Ever Confirmed|0                           |1

--- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> 2012-06-01 
16:39:12 UTC ---
This is a mental note for whenever we decide to pick this up again...

The current approach with the returns-twice patch is a bit heavy handed, as the
register allocator will more-or-less give up across returns-twice.  With the
appropriate abnormal edges, the allocator will get more exact info.  Whether or
not it's able to do anything extra with this info is a different story... 
That's why, we should drop this to ultra low priority-- the returns-twice
approach is good enough.

However, when someone gets bored, the way to debug this is with any trivial
testcase:

  int glob;
  foo()
  {
    __transaction_atomic { glob=666; }
  }

If one reverts the returns-twice patch referenced in this PR, one sees the
abnormal edges all the way up to *.c.*t.optimized.  The edges get corrupted
somewhere in the RTL passes.

Reply via email to