Do not mangle intrinsics in any way!
authorChris Lattner <sabre@nondot.org>
Mon, 5 Apr 2004 20:17:53 +0000 (20:17 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 5 Apr 2004 20:17:53 +0000 (20:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12673 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/Mangler.cpp
lib/VMCore/Mangler.cpp

index 0982efd8cd9e4a196cda586df5fe982ea0cf5e37..0705c9b608c6cad457e7570d33c4e67331c65edf 100644 (file)
@@ -56,13 +56,16 @@ std::string Mangler::getValueName(const Value *V) {
   std::string name;
   if (V->hasName()) { // Print out the label if it exists...
     // Name mangling occurs as follows:
+    // - If V is an intrinsic function, do not change name at all
     // - If V is not a global, mangling always occurs.
     // - Otherwise, mangling occurs when any of the following are true:
     //   1) V has internal linkage
     //   2) V's name would collide if it is not mangled.
     //
     const GlobalValue* gv = dyn_cast<GlobalValue>(V);
-    if (gv && !gv->hasInternalLinkage() && !MangledGlobals.count(gv)) {
+    if (gv && isa<Function>(gv) && cast<Function>(gv)->getIntrinsicID()) {
+      name = gv->getName(); // Is an intrinsic function
+    } else if (gv && !gv->hasInternalLinkage() && !MangledGlobals.count(gv)) {
       name = makeNameProper(gv->getName());
       if (AddUnderscorePrefix) name = "_" + name;
     } else {
index 0982efd8cd9e4a196cda586df5fe982ea0cf5e37..0705c9b608c6cad457e7570d33c4e67331c65edf 100644 (file)
@@ -56,13 +56,16 @@ std::string Mangler::getValueName(const Value *V) {
   std::string name;
   if (V->hasName()) { // Print out the label if it exists...
     // Name mangling occurs as follows:
+    // - If V is an intrinsic function, do not change name at all
     // - If V is not a global, mangling always occurs.
     // - Otherwise, mangling occurs when any of the following are true:
     //   1) V has internal linkage
     //   2) V's name would collide if it is not mangled.
     //
     const GlobalValue* gv = dyn_cast<GlobalValue>(V);
-    if (gv && !gv->hasInternalLinkage() && !MangledGlobals.count(gv)) {
+    if (gv && isa<Function>(gv) && cast<Function>(gv)->getIntrinsicID()) {
+      name = gv->getName(); // Is an intrinsic function
+    } else if (gv && !gv->hasInternalLinkage() && !MangledGlobals.count(gv)) {
       name = makeNameProper(gv->getName());
       if (AddUnderscorePrefix) name = "_" + name;
     } else {