The is from discussion in https://reviews.llvm.org/D104247#inline-993387
The contract and reassoc flags shouldn't imply each other .
All the aggressive fsub fusion reassociate operations,
we should guard them with reassoc flag check.
| Paths 
 |  Differential  D104723  
[DAGCombine] Check reassoc flags in aggressive fsub fusion ClosedPublic Authored by jsji on Jun 22 2021, 9:54 AM. 
Details 
 Summary The is from discussion in https://reviews.llvm.org/D104247#inline-993387 The contract and reassoc flags shouldn't imply each other . All the aggressive fsub fusion reassociate operations, 
Diff Detail 
 Event TimelineHerald added subscribers: kerbowa, hiraditya, nhaehnle and 2 others.  ·  View Herald TranscriptJun 22 2021, 9:54 AM 
 This revision is now accepted and ready to land.Jun 22 2021, 10:10 AM 
 jsji added inline comments. 
 
 This revision was landed with ongoing or failed builds.Jun 23 2021, 7:00 AM Closed by commit rGc125af82a5ff: [DAGCombine] Check reassoc flags in aggressive fsub fusion (authored by jsji).  ·  Explain Why This revision was automatically updated to reflect the committed changes. foad added inline comments. 
 
Revision Contents 
 
 
 
Diff 353722 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
 
 llvm/test/CodeGen/AMDGPU/fpext-free.ll
 llvm/test/CodeGen/PowerPC/fma-assoc.ll
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
foldable is a rather generic and widely used term.
I'd suggest isContractableAndReassociableFMUL()