diff options
Diffstat (limited to 'lib/Transforms/Scalar/CodeGenPrepare.cpp')
-rw-r--r-- | lib/Transforms/Scalar/CodeGenPrepare.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index 166d9d6ee3..e3e634339e 100644 --- a/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -1014,6 +1014,13 @@ bool CodeGenPrepare::OptimizeInst(Instruction *I) { MadeChange = true; OptimizeInst(NC); } + } else if (CallInst *CI = dyn_cast<CallInst>(I)) { + if (TLI && isa<InlineAsm>(CI->getCalledValue())) { + // Sink address computing for memory operands into the block. + MadeChange |= OptimizeInlineAsmInst(I, &(*CI), SunkAddrs); + } else { + MadeChange |= OptimizeCallInst(CI); + } } return MadeChange; |