diff options
author | Jim Laskey <jlaskey@mac.com> | 2006-03-08 19:31:15 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2006-03-08 19:31:15 +0000 |
commit | 8f0a95f664d09652ee59409e229e6a5bbed14534 (patch) | |
tree | cabf06bdc11113d6cd4d288cb3be4dd3e113cdb4 /llvm/lib/Target | |
parent | d0eb1d12d262dce12ba2abd71b9a49b82eb77e1d (diff) | |
download | bcm5719-llvm-8f0a95f664d09652ee59409e229e6a5bbed14534.tar.gz bcm5719-llvm-8f0a95f664d09652ee59409e229e6a5bbed14534.zip |
Add #line support for CBE.
llvm-svn: 26621
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/CBackend/Writer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Target/CBackend/Writer.cpp b/llvm/lib/Target/CBackend/Writer.cpp index 4db462dbecf..57723b44ca1 100644 --- a/llvm/lib/Target/CBackend/Writer.cpp +++ b/llvm/lib/Target/CBackend/Writer.cpp @@ -1598,6 +1598,7 @@ void CWriter::lowerIntrinsics(Function &F) { case Intrinsic::setjmp: case Intrinsic::longjmp: case Intrinsic::prefetch: + case Intrinsic::dbg_stoppoint: // We directly implement these intrinsics break; default: @@ -1687,6 +1688,22 @@ void CWriter::visitCallInst(CallInst &I) { writeOperand(I.getOperand(3)); Out << ")"; return; + case Intrinsic::dbg_stoppoint: { + // If we use writeOperand directly we get a "u" suffix which is rejected + // by gcc. + ConstantUInt *SI = cast<ConstantUInt>(I.getOperand(2)); + GlobalVariable *GV = cast<GlobalVariable>(I.getOperand(4)); + ConstantStruct *CS = cast<ConstantStruct>(GV->getInitializer()); + std::string FileName = CS->getOperand(4)->getStringValue(); + std::string Directory = CS->getOperand(5)->getStringValue(); + + Out << "\n#line " + << SI->getValue() + << " \"" << Directory << FileName << "\"\n"; + // Need to set result. + Out << "0"; + return; + } } } |