diff options
| author | Chandler Carruth <chandlerc@gmail.com> | 2018-07-12 00:52:50 +0000 |
|---|---|---|
| committer | Chandler Carruth <chandlerc@gmail.com> | 2018-07-12 00:52:50 +0000 |
| commit | 1c8234f639d8e9c5a80a154e395069c4d6c32704 (patch) | |
| tree | 818803b6b82bc47d9ee8de05c223d40ca493da8a /llvm/lib | |
| parent | bf9abccacd2a37798b2058c9be0924efb75e248d (diff) | |
| download | bcm5719-llvm-1c8234f639d8e9c5a80a154e395069c4d6c32704.tar.gz bcm5719-llvm-1c8234f639d8e9c5a80a154e395069c4d6c32704.zip | |
[x86] Fix EFLAGS copy lowering to correctly handle walking past uses in
multiple successors where some of the uses end up killing the EFLAGS
register.
There was a bug where rather than skipping to the next basic block
queued up with uses once we saw a kill, we stopped processing the blocks
entirely. =/
Test case produces completely nonsensical code w/o this tiny fix.
This was found testing Speculative Load Hardening and split out of that
work.
Differential Revision: https://reviews.llvm.org/D49211
llvm-svn: 336874
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86FlagsCopyLowering.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86FlagsCopyLowering.cpp b/llvm/lib/Target/X86/X86FlagsCopyLowering.cpp index bc504824446..e8a8d88b67d 100644 --- a/llvm/lib/Target/X86/X86FlagsCopyLowering.cpp +++ b/llvm/lib/Target/X86/X86FlagsCopyLowering.cpp @@ -555,7 +555,7 @@ bool X86FlagsCopyLoweringPass::runOnMachineFunction(MachineFunction &MF) { // If the flags were killed, we're done with this block. if (FlagsKilled) - break; + continue; // Otherwise we need to scan successors for ones where the flags live-in // and queue those up for processing. |

