jlebar created this revision. jlebar added a reviewer: tra. jlebar added subscribers: echristo, jhen, cfe-commits.
NVPTX doesn't support aliases, so don't generate them. http://reviews.llvm.org/D16499 Files: lib/Driver/Tools.cpp test/Driver/cuda-constructor-alias.cu Index: test/Driver/cuda-constructor-alias.cu =================================================================== --- /dev/null +++ test/Driver/cuda-constructor-alias.cu @@ -0,0 +1,13 @@ +// REQUIRES: clang-driver +// REQUIRES: x86-registered-target +// REQUIRES: nvptx-registered-target + +// Check that we don't pass -mconstructor-aliases to CUDA device-side +// compilation, but we do pass it to host-side compilation. + +// RUN: %clang -### %s 2>&1 | FileCheck %s +// CHECK: "-cc1" +// CHECK-NOT: "-fcuda-is-device" {{.*}}"-mconstructor-aliases" +// CHECK-NOT: "-mconstructor-aliases" {{.*}}"-fcuda-is-device" +// CHECK: "-cc1" +// CHECK-SAME: "-mconstructor-aliases" Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3965,9 +3965,11 @@ CmdArgs.push_back("Arguments"); } - // Enable -mconstructor-aliases except on darwin, where we have to - // work around a linker bug; see <rdar://problem/7651567>. - if (!getToolChain().getTriple().isOSDarwin()) + // Enable -mconstructor-aliases except on darwin, where we have to work around + // a linker bug (see <rdar://problem/7651567>), and CUDA device code, where + // aliases aren't supported. + if (!getToolChain().getTriple().isOSDarwin() && + !getToolChain().getTriple().isNVPTX()) CmdArgs.push_back("-mconstructor-aliases"); // Darwin's kernel doesn't support guard variables; just die if we
Index: test/Driver/cuda-constructor-alias.cu =================================================================== --- /dev/null +++ test/Driver/cuda-constructor-alias.cu @@ -0,0 +1,13 @@ +// REQUIRES: clang-driver +// REQUIRES: x86-registered-target +// REQUIRES: nvptx-registered-target + +// Check that we don't pass -mconstructor-aliases to CUDA device-side +// compilation, but we do pass it to host-side compilation. + +// RUN: %clang -### %s 2>&1 | FileCheck %s +// CHECK: "-cc1" +// CHECK-NOT: "-fcuda-is-device" {{.*}}"-mconstructor-aliases" +// CHECK-NOT: "-mconstructor-aliases" {{.*}}"-fcuda-is-device" +// CHECK: "-cc1" +// CHECK-SAME: "-mconstructor-aliases" Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -3965,9 +3965,11 @@ CmdArgs.push_back("Arguments"); } - // Enable -mconstructor-aliases except on darwin, where we have to - // work around a linker bug; see <rdar://problem/7651567>. - if (!getToolChain().getTriple().isOSDarwin()) + // Enable -mconstructor-aliases except on darwin, where we have to work around + // a linker bug (see <rdar://problem/7651567>), and CUDA device code, where + // aliases aren't supported. + if (!getToolChain().getTriple().isOSDarwin() && + !getToolChain().getTriple().isNVPTX()) CmdArgs.push_back("-mconstructor-aliases"); // Darwin's kernel doesn't support guard variables; just die if we
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits