diff options
-rw-r--r-- | lib/CodeGen/BackendUtil.cpp | 6 | ||||
-rw-r--r-- | test/CodeGen/libcalls-fno-builtin.c | 27 |
2 files changed, 33 insertions, 0 deletions
diff --git a/lib/CodeGen/BackendUtil.cpp b/lib/CodeGen/BackendUtil.cpp index d175bd5e08..d9bdc325c1 100644 --- a/lib/CodeGen/BackendUtil.cpp +++ b/lib/CodeGen/BackendUtil.cpp @@ -351,6 +351,12 @@ bool EmitAssemblyHelper::AddEmitPasses(BackendAction Action, // Create the code generator passes. PassManager *PM = getCodeGenPasses(); + // Add LibraryInfo. + TargetLibraryInfo *TLI = new TargetLibraryInfo(); + if (!CodeGenOpts.SimplifyLibCalls) + TLI->disableAllFunctions(); + PM->add(TLI); + // Normal mode, emit a .s or .o file by running the code generator. Note, // this also adds codegenerator level optimization passes. TargetMachine::CodeGenFileType CGFT = TargetMachine::CGFT_AssemblyFile; diff --git a/test/CodeGen/libcalls-fno-builtin.c b/test/CodeGen/libcalls-fno-builtin.c new file mode 100644 index 0000000000..41f0b38c67 --- /dev/null +++ b/test/CodeGen/libcalls-fno-builtin.c @@ -0,0 +1,27 @@ +// RUN: %clang_cc1 -S -O3 -fno-builtin -o - %s | FileCheck %s + +double ceil(double x); +double copysign(double,double); +double cos(double x); +double fabs(double x); +double floor(double x); + +double t1(double x) { return ceil(x); } +// CHECK: t1 +// CHECK: ceil + +double t2(double x, double y) { return copysign(x,y); } +// CHECK: t2 +// CHECK: copysign + +double t3(double x) { return cos(x); } +// CHECK: t3 +// CHECK: cos + +double t4(double x) { return fabs(x); } +// CHECK: t4 +// CHECK: fabs + +double t5(double x) { return floor(x); } +// CHECK: t5 +// CHECK: floor |