Fix spellnig error
[oota-llvm.git] / lib / CodeGen / AsmPrinter.cpp
index c00d4d197c8fc01da4894e3688038a62f7290750..3265a99c05d28a557ae3d88860837f7aefb3fde4 100644 (file)
@@ -192,14 +192,23 @@ bool AsmPrinter::doFinalization(Module &M) {
                                          E = CMM->begin(); I != E; )
     (*--I)->finishAssembly(O, *this, *TAI);
 
+  // If we don't have any trampolines, then we don't require stack memory
+  // to be executable. Some targets have a directive to declare this.
+  Function* InitTrampolineIntrinsic = M.getFunction("llvm.init.trampoline");
+  if (!InitTrampolineIntrinsic || InitTrampolineIntrinsic->use_empty())
+    if (TAI->getNonexecutableStackDirective())
+      O << TAI->getNonexecutableStackDirective() << "\n";
+
   delete Mang; Mang = 0;
   return false;
 }
 
 std::string AsmPrinter::getCurrentFunctionEHName(const MachineFunction *MF) {
   assert(MF && "No machine function?");
-  return Mang->makeNameProper(MF->getFunction()->getName() + ".eh",
-                              TAI->getGlobalPrefix());
+  std::string Name = MF->getFunction()->getName();
+  if (Name.empty())
+    Name = Mang->getValueName(MF->getFunction());
+  return Mang->makeNameProper(Name + ".eh", TAI->getGlobalPrefix());
 }
 
 void AsmPrinter::SetupMachineFunction(MachineFunction &MF) {
@@ -1065,6 +1074,11 @@ void AsmPrinter::EmitGlobalConstant(const Constant *CV, bool Packed) {
   const Type *type = CV->getType();
   printDataDirective(type);
   EmitConstantValueOnly(CV);
+  if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) {
+    O << "\t\t\t"
+      << TAI->getCommentString()
+      << " 0x" << CI->getValue().toStringUnsigned(16);
+  }
   O << "\n";
 }
 
@@ -1426,3 +1440,10 @@ void AsmPrinter::printDataDirective(const Type *type) {
   }
 }
 
+void AsmPrinter::printSuffixedName(std::string &Name, const char* Suffix) {
+  if (Name[0]=='\"')
+    O << "\"" << TAI->getPrivateGlobalPrefix() << 
+         Name.substr(1, Name.length()-2) << Suffix << "\"";
+  else
+    O << TAI->getPrivateGlobalPrefix() << Name << Suffix;
+}