summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorJim Laskey <jlaskey@mac.com>2006-03-08 19:31:15 +0000
committerJim Laskey <jlaskey@mac.com>2006-03-08 19:31:15 +0000
commit8f0a95f664d09652ee59409e229e6a5bbed14534 (patch)
treecabf06bdc11113d6cd4d288cb3be4dd3e113cdb4 /llvm/lib/Target
parentd0eb1d12d262dce12ba2abd71b9a49b82eb77e1d (diff)
downloadbcm5719-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.cpp17
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;
+ }
}
}
OpenPOWER on IntegriCloud