mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Debug intrinsics must be skipped at the beginning and ends of blocks, lest they
affect the generated code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128217 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0d4b81519d
commit
9035484200
@ -617,7 +617,9 @@ bool CodeGenPrepare::DupRetToEnableTailCallOpts(ReturnInst *RI) {
|
||||
if (&*BI != RI)
|
||||
return false;
|
||||
} else {
|
||||
if (&*BB->begin() != RI)
|
||||
BasicBlock::iterator BI = BB->begin();
|
||||
while (isa<DbgInfoIntrinsic>(BI)) ++BI;
|
||||
if (&*BI != RI)
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -641,8 +643,10 @@ bool CodeGenPrepare::DupRetToEnableTailCallOpts(ReturnInst *RI) {
|
||||
BasicBlock::InstListType &InstList = (*PI)->getInstList();
|
||||
BasicBlock::InstListType::reverse_iterator RI = InstList.rbegin();
|
||||
BasicBlock::InstListType::reverse_iterator RE = InstList.rend();
|
||||
if (++RI == RE)
|
||||
do { ++RI; } while (RI != RE && isa<DbgInfoIntrinsic>(&*RI));
|
||||
if (RI == RE)
|
||||
continue;
|
||||
|
||||
CallInst *CI = dyn_cast<CallInst>(&*RI);
|
||||
if (CI && CI->use_empty() && TLI->mayBeEmittedAsTailCall(CI))
|
||||
TailCalls.push_back(CI);
|
||||
|
Loading…
x
Reference in New Issue
Block a user