aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
authorBjörn Pettersson <bjorn.a.pettersson@ericsson.com>2024-04-29 07:56:49 +0200
committerGitHub <noreply@github.com>2024-04-29 07:56:49 +0200
commitb3c55b707110084a9f50a16aade34c3be6fa18da (patch)
tree12d02b86f874407e3cb1708220f87040064b6e9c /clang/lib/CodeGen/CodeGenFunction.cpp
parent6cd6bde3090a405e4091ef6f743cb2e56b376a55 (diff)
downloadllvm-b3c55b707110084a9f50a16aade34c3be6fa18da.zip
llvm-b3c55b707110084a9f50a16aade34c3be6fa18da.tar.gz
llvm-b3c55b707110084a9f50a16aade34c3be6fa18da.tar.bz2
[SelectionDAG] Handle more opcodes in canCreateUndefOrPoison (#84921)
[SelectionDAG] Handle more opcodes in canCreateUndefOrPoison Handle SELECT_CC similarly as SETCC. Handle these operations that only propagate poison/undef based on the input operands: SADDSAT, UADDSAT, SSUBSAT, USUBSAT, MULHU, MULHS, SMIN, SMAX, UMIN, UMAX These operations may create poison based on shift amount and exact flag being violated: SRL, SRA One goal here is to allow pushing freeze through these operations when allowed, as well as letting analyses such as isGuaranteedNotToBeUndefOrPoison to not break on such operations. Since some problems have been observed with pushing freeze through SRA/SRL we block that explicitly in DAGCombiner::visitFreeze now. That way we can still model SRA/SRL properly in SelectionDAG::canCreateUndefOrPoison, e.g. when used by isGuaranteedNotToBeUndefOrPoison, even if we do not want to push freeze through those instructions.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
0 files changed, 0 insertions, 0 deletions