HomePhabricator

[FPEnv] Fix chain handling for fpexcept.strict nodes

Authored by uweigand on Jan 13 2020, 5:37 AM.

Description

[FPEnv] Fix chain handling for fpexcept.strict nodes

We need to ensure that fpexcept.strict nodes are not optimized away even if
the result is unused. To do that, we need to chain them into the block's
terminator nodes, like already done for PendingExcepts.

This patch adds two new lists of pending chains, PendingConstrainedFP and
PendingConstrainedFPStrict to hold constrained FP intrinsic nodes without
and with fpexcept.strict markers. This allows not only to solve the above
problem, but also to relax chains a bit further by no longer flushing all
FP nodes before a store or other memory access. (They are still flushed
before nodes with other side effects.)

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D72341

Details

Committed
uweigandJan 13 2020, 5:38 AM
Reviewer
craig.topper
Differential Revision
D72341: [FPEnv] Fix chain handling for fpexcept.strict nodes
Parents
rGd7d88b9d8b3e: GlobalISel: Fix assertion on wide G_ZEXT sources
Branches
Unknown
Tags
Unknown