diff options
author | Florian Hahn <flo@fhahn.com> | 2022-08-26 15:09:46 +0100 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2022-08-26 15:09:46 +0100 |
commit | ec37ecbc6299781ebafeaa8a41413d08578577dd (patch) | |
tree | 11caa5fd802c76bde3d9d4d696280000f497cdc2 /llvm/lib/Transforms/Utils/LCSSA.cpp | |
parent | 8360174fb1a2d0ed759bb0a97708add44deddf92 (diff) | |
download | llvm-ec37ecbc6299781ebafeaa8a41413d08578577dd.zip llvm-ec37ecbc6299781ebafeaa8a41413d08578577dd.tar.gz llvm-ec37ecbc6299781ebafeaa8a41413d08578577dd.tar.bz2 |
[LCSSA] Skip updating users in unreachable blocks.
Don't waste time trying to update users in unreachable blocks.
Diffstat (limited to 'llvm/lib/Transforms/Utils/LCSSA.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LCSSA.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/LCSSA.cpp b/llvm/lib/Transforms/Utils/LCSSA.cpp index 6de59f9..020a40b 100644 --- a/llvm/lib/Transforms/Utils/LCSSA.cpp +++ b/llvm/lib/Transforms/Utils/LCSSA.cpp @@ -111,6 +111,10 @@ bool llvm::formLCSSAForInstructions(SmallVectorImpl<Instruction *> &Worklist, Instruction *User = cast<Instruction>(U.getUser()); BasicBlock *UserBB = User->getParent(); + // Skip uses in unreachable blocks. + if (!DT.isReachableFromEntry(UserBB)) + continue; + // For practical purposes, we consider that the use in a PHI // occurs in the respective predecessor block. For more info, // see the `phi` doc in LangRef and the LCSSA doc. |