[all-commits] [llvm/llvm-project] 766945: [X86][FastISel] Fix with.overflow eflags clobber (...
Nikita Popov via All-commits
all-commits at lists.llvm.org
Mon Mar 29 14:09:10 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 7669455df49e6fc8ae7d9f4bd4ee95bb20e7eb6e
https://github.com/llvm/llvm-project/commit/7669455df49e6fc8ae7d9f4bd4ee95bb20e7eb6e
Author: Nikita Popov <nikita.ppv at gmail.com>
Date: 2021-03-29 (Mon, 29 Mar 2021)
Changed paths:
M llvm/lib/Target/X86/X86FastISel.cpp
M llvm/test/CodeGen/X86/pr49587.ll
Log Message:
-----------
[X86][FastISel] Fix with.overflow eflags clobber (PR49587)
If the successor block has a phi node, then additional moves may
be inserted into predecessors, which may clobber eflags. Don't try
to fold the with.overflow result into the branch in that case.
This is done by explicitly checking for any phis in successor
blocks, not sure if there's some more principled way to address
this. Other fused compare and branch patterns avoid the issue by
emitting the comparison when handling the branch, so that no
instructions may be inserted in between. In this case, the
with.overflow call is emitted separately (and I don't think this
is avoidable, as it will generally have at least two users).
Fixes https://bugs.llvm.org/show_bug.cgi?id=49587.
Differential Revision: https://reviews.llvm.org/D98600
More information about the All-commits
mailing list