Add TargetLibraryInfo in LTO passes builder
authorYi Jiang <yjiang@apple.com>
Thu, 12 Dec 2013 01:37:39 +0000 (01:37 +0000)
committerYi Jiang <yjiang@apple.com>
Thu, 12 Dec 2013 01:37:39 +0000 (01:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197105 91177308-0d34-0410-b5e6-96231b3b80d8

lib/LTO/LTOCodeGenerator.cpp
test/LTO/triple-init.ll [new file with mode: 0644]

index 779b4a26174ca8d48a0b033792d079c4586be11a..7d5d82a93cc199400e41ef2f4cc93bf8c20a35b7 100644 (file)
@@ -460,6 +460,10 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
 
   // Add an appropriate DataLayout instance for this module...
   passes.add(new DataLayout(*TargetMach->getDataLayout()));
+
+  // Add appropriate TargetLibraryInfo for this module. 
+  passes.add(new TargetLibraryInfo(Triple(TargetMach->getTargetTriple())));
+
   TargetMach->addAnalysisPasses(passes);
 
   // Enabling internalize here would use its AllButMain variant. It
diff --git a/test/LTO/triple-init.ll b/test/LTO/triple-init.ll
new file mode 100644 (file)
index 0000000..b2c6dd8
--- /dev/null
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s >%t1
+; RUN: llvm-lto -exported-symbol=_main  -o %t2 %t1
+; RUN: llvm-nm %t2 | FileCheck %s 
+
+; Will remove XFAIL if r196544 is resubmitted. 
+; XFAIL: *
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
+
+target triple = "x86_64-apple-macosx10.9"
+
+declare double @pow(double, double)
+
+define double @main(double %x) {
+; We check that LTO will be aware of target triple and apply pow to __exp10 transformation.
+; CHECK: U ___exp10
+  %retval = call double @pow(double 10.0, double %x)
+  ret double %retval
+}