Re: avr_rtx_cost for DImode values?
Georg-Johann Lay <[email protected]>
| Newsgroups | gmane.comp.hardware.avr.gcc |
|---|---|
| Message-ID | <[email protected]> |
Am 03/18/2014 06:33 PM, schrieb Senthil Kumar Selvaraj: > Hi, > > I see that the avr_rtx_costs_1 function returns relative costs for a > variety of RTL codes, but only for non-DImode operands. For DImode, > it returns false, and gcc uses its idea of the cost plus the costs of > operands (found by recursing into the RTL expression) instead. > > Is there a reason why this has not been done? > > I was trying to debug compilation timeouts in the latest trunk test > results (http://gcc.gnu.org/ml/gcc-testresults/2014-03/msg01239.html) > - specifically > WARNING: program timed out. > FAIL: gcc.c-torture/execute/20041011-1.c compilation, -O1 I cannot reproduce this all 22 tests from execute.exp=20041011-1.c take around 6 seconds (including test suite overhead). > and found that expmed.c:choose_mult_variant takes a lot of time to > finish if a DImode value of -513 is provided. From my initial > analysis, it looks like it has to do with cost values being off for > DImode RTL operations (making MULT in avr_rtx_costs_1 to return > twice the cost of SImode for DImode fixed the timeout). Has > someone seen or fixed something like this before? No. Even if the choice of a particular MUL strategy is not optimal, it should not hang the compiler. I suspect you are using a 64-bit host? (I am on 32 bit Linux). Johann