Reassociation destroys nsw/nuw flags from BinOps that are changed. If the expression in at the end of a tree that was altered, but didn't change itself the flags do not need to be removed though. For example, if %a, %b and %c are reassociated in
%x = add nsw i32 %a, %c %y = add nsw i32 %x, %b %z = add nsw i32 %y, %d
The value of %y and so add %y %d remains the same, and %z needn't drop the nsw flags.
https://alive2.llvm.org/ce/z/_juAiV
As a side note, I don't think we need to do this bit either for unchanged expressions.