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 | 7075d6f2f2fe328b93b4c08c5086f02c825accda (patch) | |
tree | 93b6055ed35ccc6d253d5b374ef2ae3044873c3d /lib/Target/CBackend/Writer.cpp | |
parent | 42d0b455ec221fa8049944a3e6427a503859eae2 (diff) |
Add #line support for CBE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26621 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CBackend/Writer.cpp')
-rw-r--r-- | lib/Target/CBackend/Writer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index 4db462dbec..57723b44ca 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/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; + } } } |