This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, committed] PR/41812: revert wrong multiple definitions optimizations


In the MD problem I trimmed the solution to include the live registers
only. This however is wrong because the result of MD is used also to
process notes, while the live registers problem does not consider a register live if it is only used in notes.


In the PR testcase we have:

;; lr in 1 [1] 2 [2] 31 [31] 67 [ap] 113 [sfp] 154 180

   88 {r179:SF=float(r180:DI);clobber scratch;}
      REG_EQUAL: float(r155:DI)

Then because r155 is not live, it is not included in MD and a random
definition (0.0) is replaced in the REG_EQUAL note.

Luckily the optimization was committed as a separate patch, so the cause was easy to ascertain given the bisection result, and the reversion of the patch is trivial.

Paolo

Attachment: gcc-pr41812.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]