Author: aaronenyeshi Date: Fri Mar 15 10:31:51 2019 New Revision: 356277 URL: http://llvm.org/viewvc/llvm-project?rev=356277&view=rev Log: [HIP-Clang] propagate -mllvm options to opt and llc
Change the HIP Toolchain to pass the OPT_mllvm options into OPT and LLC stages. Added a lit test to verify the command args. Reviewers: yaxunl Differential Revision: https://reviews.llvm.org/D59316 Added: cfe/trunk/test/Driver/hip-toolchain-mllvm.hip Modified: cfe/trunk/lib/Driver/ToolChains/HIP.cpp Modified: cfe/trunk/lib/Driver/ToolChains/HIP.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/HIP.cpp?rev=356277&r1=356276&r2=356277&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/HIP.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/HIP.cpp Fri Mar 15 10:31:51 2019 @@ -140,6 +140,11 @@ const char *AMDGCN::Linker::constructOpt } OptArgs.push_back("-mtriple=amdgcn-amd-amdhsa"); OptArgs.push_back(Args.MakeArgString("-mcpu=" + SubArchName)); + + for (const Arg *A : Args.filtered(options::OPT_mllvm)) { + OptArgs.push_back(A->getValue(0)); + } + OptArgs.push_back("-o"); std::string TmpFileName = C.getDriver().GetTemporaryPath( OutputFilePrefix.str() + "-optimized", "bc"); @@ -177,6 +182,10 @@ const char *AMDGCN::Linker::constructLlc if(!Features.empty()) LlcArgs.push_back(Args.MakeArgString(MAttrString)); + for (const Arg *A : Args.filtered(options::OPT_mllvm)) { + LlcArgs.push_back(A->getValue(0)); + } + // Add output filename LlcArgs.push_back("-o"); std::string LlcOutputFileName = Added: cfe/trunk/test/Driver/hip-toolchain-mllvm.hip URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/hip-toolchain-mllvm.hip?rev=356277&view=auto ============================================================================== --- cfe/trunk/test/Driver/hip-toolchain-mllvm.hip (added) +++ cfe/trunk/test/Driver/hip-toolchain-mllvm.hip Fri Mar 15 10:31:51 2019 @@ -0,0 +1,36 @@ +// REQUIRES: clang-driver +// REQUIRES: x86-registered-target +// REQUIRES: amdgpu-registered-target + +// RUN: %clang -### -target x86_64-linux-gnu \ +// RUN: -x hip --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -mllvm -amdgpu-function-calls=0 \ +// RUN: %s 2>&1 | FileCheck %s + +// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" +// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" +// CHECK-SAME: {{.*}} "-target-cpu" "gfx803" +// CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} + +// CHECK: [[OPT:".*opt"]] {{".*-gfx803-linked.*bc"}} "-mtriple=amdgcn-amd-amdhsa" +// CHECK-SAME: "-mcpu=gfx803" "-amdgpu-function-calls=0" +// CHECK-SAME: "-o" [[OPT_803_BC:".*-gfx803-optimized.*bc"]] + +// CHECK: [[LLC: ".*llc"]] [[OPT_803_BC]] +// CHECK-SAME: "-mtriple=amdgcn-amd-amdhsa" "-filetype=obj" +// CHECK-SAME: {{.*}} "-mcpu=gfx803" +// CHECK-SAME: "-amdgpu-function-calls=0" "-o" {{".*-gfx803-.*o"}} + +// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" +// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" +// CHECK-SAME: {{.*}} "-target-cpu" "gfx900" +// CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} + +// CHECK: [[OPT]] {{".*-gfx900-linked.*bc"}} "-mtriple=amdgcn-amd-amdhsa" +// CHECK-SAME: "-mcpu=gfx900" "-amdgpu-function-calls=0" +// CHECK-SAME: "-o" [[OPT_900_BC:".*-gfx900-optimized.*bc"]] + +// CHECK: [[LLC]] [[OPT_900_BC]] +// CHECK-SAME: "-mtriple=amdgcn-amd-amdhsa" "-filetype=obj" +// CHECK-SAME: {{.*}} "-mcpu=gfx900" +// CHECK-SAME: "-amdgpu-function-calls=0" "-o" {{".*-gfx900-.*o"}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits