Add #line support for CBE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26621 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp
index 4db462d..57723b4 100644
--- a/lib/Target/CBackend/CBackend.cpp
+++ b/lib/Target/CBackend/CBackend.cpp
@@ -1598,6 +1598,7 @@
           case Intrinsic::setjmp:
           case Intrinsic::longjmp:
           case Intrinsic::prefetch:
+          case Intrinsic::dbg_stoppoint:
             // We directly implement these intrinsics
             break;
           default:
@@ -1687,6 +1688,22 @@
         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;
+      }
       }
     }