[committed] Disable ABS instruction on bfin port
I was looking at a regression on the bfin port with a recent change to the IRA and stumbled across this just doing a general port healthyness evaluation. The ABS instruction in the blackfin ISA is defined as saturating on INT_MIN, which is a bit unexpected. We certainly can't use it when -fwrapv is enabled. Given the failures on the C23 uabs tests, I'm inclined to just disable the pattern completely. Fixes pr23047, uabs-2 and uabs-3. While it's not a regression, it's the blackfin port, so I think we've got a higher degree of freedom here. Pushing to the trunk. gcc/ * config/bfin/bfin.md (abssi): Disable pattern.
This commit is contained in:
parent
198f4df07d
commit
3e08a4ecea
1 changed files with 9 additions and 6 deletions
|
@ -1440,12 +1440,15 @@
|
|||
"%0 = min(%1,%2)%!"
|
||||
[(set_attr "type" "dsp32")])
|
||||
|
||||
(define_insn "abssi2"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d")
|
||||
(abs:SI (match_operand:SI 1 "register_operand" "d")))]
|
||||
""
|
||||
"%0 = abs %1%!"
|
||||
[(set_attr "type" "dsp32")])
|
||||
;; The ABS instruction is defined as saturating. So at the least
|
||||
;; it is inappropriate for -fwrapv. This also fixes the C23 uabs
|
||||
;; tests.
|
||||
;;(define_insn "abssi2"
|
||||
;; [(set (match_operand:SI 0 "register_operand" "=d")
|
||||
;; (abs:SI (match_operand:SI 1 "register_operand" "d")))]
|
||||
;; ""
|
||||
;; "%0 = abs %1%!"
|
||||
;; [(set_attr "type" "dsp32")])
|
||||
|
||||
(define_insn "ssabssi2"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d")
|
||||
|
|
Loading…
Add table
Reference in a new issue