fneg combining attempts to turn it into fadd(fneg(A), fneg(0)), but
creating the new fadd folds to just fneg(A). When A has multiple uses,
this confuses it and you get an assert. Fixed.
Change-Id: I0ddc9b7286abe78edc0cd8d734fdeb05ff09821c
Differential D60633
[AMDGPU] Avoid DAG combining assert with fneg(fadd(A,0)) tpr on Apr 12 2019, 1:14 PM. Authored by
Details fneg combining attempts to turn it into fadd(fneg(A), fneg(0)), but Change-Id: I0ddc9b7286abe78edc0cd8d734fdeb05ff09821c
Diff Detail
Event Timeline
Comment Actions I have cut down the test a bit more and put it into fneg-combines.ll. I did not manage to repro any problems with the other cases that I added fixes for. I don't have a massive amount of time to spend on this. Would you prefer I land it as is, without tests for the other cases, or remove the precautionary fix for those cases and wait for someone else to possibly encounter them? Comment Actions In either case, you should open a bug somewhere to look at this again.
|
I think it would be slightly safer to check != ISD::FADD, in case some other fold decided to do something else