[PATCH] D141596: [Driver] Add crtfastmath.o on Solaris if appropriate
This revision was automatically updated to reflect the committed changes. Closed by commit rG7c4a70f8f6f3: [Driver] Add crtfastmath.o on Solaris if appropriate (authored by ro). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D141596/new/ https://reviews.llvm.org/D141596 Files: clang/lib/Driver/ToolChains/Solaris.cpp clang/test/Driver/Inputs/solaris_sparc_tree/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crtfastmath.o clang/test/Driver/Inputs/solaris_sparc_tree/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9/crtfastmath.o clang/test/Driver/Inputs/solaris_x86_tree/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64/crtfastmath.o clang/test/Driver/Inputs/solaris_x86_tree/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/crtfastmath.o clang/test/Driver/solaris-ld.c Index: clang/test/Driver/solaris-ld.c === --- clang/test/Driver/solaris-ld.c +++ clang/test/Driver/solaris-ld.c @@ -114,3 +114,57 @@ // CHECK-RELOCATABLE-NOT: "-l // CHECK-RELOCATABLE-NOT: /crt{{[^.]+}}.o // CHECK-RELOCATABLE-NOT: /values-{{[^.]+}}.o + +// Check that crtfastmath.o is linked with -ffast-math. + +// Check sparc-sun-solaris2.11, 32bit +// RUN: %clang --target=sparc-sun-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-SPARC32 %s +// RUN: %clang --target=sparc-sun-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-SPARC32 %s +// CHECK-CRTFASTMATH-SPARC32: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-SPARC32: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-SPARC32-NOT: crtfastmath.o + +// Check sparc-pc-solaris2.11, 64bit +// RUN: %clang -m64 --target=sparc-sun-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-SPARC64 %s +// RUN: %clang -m64 --target=sparc-sun-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-SPARC64 %s +// CHECK-CRTFASTMATH-SPARC64: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-SPARC64: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-SPARC64-NOT: crtfastmath.o + +// Check i386-pc-solaris2.11, 32bit +// RUN: %clang --target=i386-pc-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-X32 %s +// RUN: %clang --target=i386-pc-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-X32 %s +// CHECK-CRTFASTMATH-X32: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-X32: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-X32-NOT: crtfastmath.o + +// Check i386-pc-solaris2.11, 64bit +// RUN: %clang -m64 --target=i386-pc-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-X64 %s +// RUN: %clang -m64 --target=i386-pc-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-X64 %s +// CHECK-CRTFASTMATH-X64: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-X64: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-X64-NOT: crtfastmath.o Index: clang/lib/Driver/ToolChains/Solaris.cpp === --- clang/lib/Driver/ToolChains/Solaris.cpp +++ clang/lib/Driver/ToolChains/Solaris.cpp @@ -115,6 +115,8 @@ Args.MakeArgString(getToolChain().GetFilePath(values_xpg))); CmdArgs.push_back( Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); +// Add crtfastmath.o if available and fast math is enabled. +getToolChain().addFastMathRuntimeIfAvailable(Args, CmdArgs); } getToolChain().AddFilePathLibArgs(Args, CmdArgs); Index: clang/test/Driver/solaris-ld.c === --- clang/test/Driver/solaris-ld.c +++ clang/test/Driver/solaris-ld.c @@ -114,3 +114,57 @@ // CHECK-RELOCATABLE-NOT: "-l // CHECK-RELOCATABLE-NOT: /crt{{[^.]+}}.o //
[PATCH] D141596: [Driver] Add crtfastmath.o on Solaris if appropriate
MaskRay accepted this revision. MaskRay added a comment. This revision is now accepted and ready to land. LGTM. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D141596/new/ https://reviews.llvm.org/D141596 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D141596: [Driver] Add crtfastmath.o on Solaris if appropriate
ro created this revision. ro added a reviewer: MaskRay. ro added a project: clang. Herald added subscribers: jrtc27, fedor.sergeev, jyknight. Herald added a project: All. ro requested review of this revision. `Flang :: Driver/fast_math.f90` `FAIL`s on Solaris because `crtfastmath.o` is missing from the link line. This patch adds it as appropriate. Tested on `amd64-pc-solaris2.11`. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D141596 Files: clang/lib/Driver/ToolChains/Solaris.cpp clang/test/Driver/Inputs/solaris_sparc_tree/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crtfastmath.o clang/test/Driver/Inputs/solaris_sparc_tree/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9/crtfastmath.o clang/test/Driver/Inputs/solaris_x86_tree/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64/crtfastmath.o clang/test/Driver/Inputs/solaris_x86_tree/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/crtfastmath.o clang/test/Driver/solaris-ld.c Index: clang/test/Driver/solaris-ld.c === --- clang/test/Driver/solaris-ld.c +++ clang/test/Driver/solaris-ld.c @@ -114,3 +114,57 @@ // CHECK-RELOCATABLE-NOT: "-l // CHECK-RELOCATABLE-NOT: /crt{{[^.]+}}.o // CHECK-RELOCATABLE-NOT: /values-{{[^.]+}}.o + +// Check that crtfastmath.o is linked with -ffast-math. + +// Check sparc-sun-solaris2.11, 32bit +// RUN: %clang --target=sparc-sun-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-SPARC32 %s +// RUN: %clang --target=sparc-sun-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-SPARC32 %s +// CHECK-CRTFASTMATH-SPARC32: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-SPARC32: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-SPARC32-NOT: crtfastmath.o + +// Check sparc-pc-solaris2.11, 64bit +// RUN: %clang -m64 --target=sparc-sun-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-SPARC64 %s +// RUN: %clang -m64 --target=sparc-sun-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_sparc_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-SPARC64 %s +// CHECK-CRTFASTMATH-SPARC64: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-SPARC64: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-SPARC64-NOT: crtfastmath.o + +// Check i386-pc-solaris2.11, 32bit +// RUN: %clang --target=i386-pc-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-X32 %s +// RUN: %clang --target=i386-pc-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-X32 %s +// CHECK-CRTFASTMATH-X32: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-X32: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-X32-NOT: crtfastmath.o + +// Check i386-pc-solaris2.11, 64bit +// RUN: %clang -m64 --target=i386-pc-solaris2.11 -### %s \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH-X64 %s +// RUN: %clang -m64 --target=i386-pc-solaris2.11 -### %s -ffast-math \ +// RUN:--gcc-toolchain="" \ +// RUN:--sysroot=%S/Inputs/solaris_x86_tree 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH-X64 %s +// CHECK-CRTFASTMATH-X64: "-isysroot" "[[SYSROOT:[^"]+]]" +// CHECK-CRTFASTMATH-X64: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64{{/|}}crtfastmath.o" +// CHECK-NOCRTFASTMATH-X64-NOT: crtfastmath.o Index: clang/lib/Driver/ToolChains/Solaris.cpp === --- clang/lib/Driver/ToolChains/Solaris.cpp +++ clang/lib/Driver/ToolChains/Solaris.cpp @@ -115,6 +115,8 @@ Args.MakeArgString(getToolChain().GetFilePath(values_xpg))); CmdArgs.push_back( Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); +// Add crtfastmath.o if available and fast math is enabled. +getToolChain().addFastMathRuntimeIfAvailable(Args, CmdArgs); } getToolChain().AddFilePathLibArgs(Args, CmdArgs); Index: clang/test/Driver/solaris-ld.c === --- clang/test/Driver/solaris-ld.c +++