Mark intrinsic functions as llvm-specific.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 4 Jul 2014 15:58:00 +0000 (15:58 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 4 Jul 2014 15:58:00 +0000 (15:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212347 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Object/IRObjectFile.cpp
test/Object/mangle-ir.ll

index d01910811a65f5a2a7094f34fd02041013798456..0639c71d1b0caeb4d0413e70b74361a50c9e8ba7 100644 (file)
@@ -245,6 +245,11 @@ uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const {
       Res |= BasicSymbolRef::SF_FormatSpecific;
   }
 
+  if (auto *F = dyn_cast<Function>(GV)) {
+    if (F->getName().startswith("llvm."))
+      Res |= BasicSymbolRef::SF_FormatSpecific;
+  }
+
   return Res;
 }
 
index 725d788a19a39ad621ddb6b8c266bbad3e1cded9..5b3cd09cb7cec7874e1c0de6e6b0cabfa19bf657 100644 (file)
@@ -2,7 +2,13 @@
 
 target datalayout = "m:o"
 
+; CHECK-NOT: memcpy
 ; CHECK: T _f
+; CHECK-NOT: memcpy
+
 define void @f() {
+  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* null, i8* null, i64 0, i32 1, i1 false)
   ret void
 }
+
+declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1)