https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79752
--- Comment #5 from acsawdey at gcc dot gnu.org --- Author: acsawdey Date: Tue Mar 14 14:43:03 2017 New Revision: 246127 URL: https://gcc.gnu.org/viewcvs?rev=246127&root=gcc&view=rev Log: This showed up in power9 code for __divkf3 software float support and caused a divd to be emitted where we needed a divdu. Index: gcc/config/rs6000/rs6000.md =================================================================== --- gcc/config/rs6000/rs6000.md (revision 246123) +++ gcc/config/rs6000/rs6000.md (working copy) @@ -3063,8 +3063,8 @@ && ! reg_mentioned_p (operands[3], operands[1]) && ! reg_mentioned_p (operands[3], operands[2])" [(set (match_dup 0) - (div:GPR (match_dup 1) - (match_dup 2))) + (udiv:GPR (match_dup 1) + (match_dup 2))) (set (match_dup 3) (mult:GPR (match_dup 0) (match_dup 2))) 2017-03-14 Aaron Sawdey <acsaw...@linux.vnet.ibm.com> Backport from mainline 2017-02-28 Aaron Sawdey <acsaw...@linux.vnet.ibm.com> PR target/79752 * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit udiv rather than div since input pattern is unsigned. Modified: branches/gcc-6-branch/gcc/ChangeLog branches/gcc-6-branch/gcc/config/rs6000/rs6000.md