[llvm] [SimplifyCFG][JumpThreading] Don't duplicate inline-asm instructions (PR #71571)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 8 08:03:03 PST 2023
================
@@ -491,8 +491,10 @@ static unsigned getJumpThreadDuplicationCost(const TargetTransformInfo *TTI,
// Blocks with NoDuplicate are modelled as having infinite cost, so they
// are never duplicated.
+ // Conservatively disallow inline-asm instructions. Duplicating inline-asm
+ // instructions can potentially create duplicate labels.
if (const CallInst *CI = dyn_cast<CallInst>(I))
- if (CI->cannotDuplicate() || CI->isConvergent())
+ if (CI->cannotDuplicate() || CI->isConvergent() || CI->isInlineAsm())
----------------
nikic wrote:
*If* we want to say that inline asm cannot be duplicated, then that should be part of `cannotDuplicate()`, not a separate query. There are a number of other places checking cannotDuplicate().
https://github.com/llvm/llvm-project/pull/71571
More information about the llvm-commits
mailing list