Skip to content

Commit 2f3a56b

Browse files
yxsamliuDavid Salinas
authored and
David Salinas
committed
Reland "[CUDA][HIP] Use the same default language std as C++""
Cherry-pick 8ef0448 Reland after fixing regression in lldb. Differential Revision: https://reviews.llvm.org/D155539 Change-Id: I82e215178e171c7fd14add76d6dc99411a6b21d0
1 parent 5d192f2 commit 2f3a56b

File tree

7 files changed

+19
-23
lines changed

7 files changed

+19
-23
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,9 @@ RISC-V Support
378378

379379
CUDA/HIP Language Changes
380380
^^^^^^^^^^^^^^^^^^^^^^^^^
381+
- Clang has been updated to align its default language standard for CUDA/HIP with
382+
that of C++. The standard has now been enhanced to gnu++17, supplanting the
383+
previously used c++14.
381384

382385
CUDA Support
383386
^^^^^^^^^^^^

clang/include/clang/Basic/LangStandards.def

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,6 @@ LANGSTANDARD_ALIAS_DEPR(openclcpp10, "CLC++")
200200
LANGSTANDARD_ALIAS_DEPR(openclcpp10, "CLC++1.0")
201201
LANGSTANDARD_ALIAS_DEPR(openclcpp2021, "CLC++2021")
202202

203-
// CUDA
204-
LANGSTANDARD(cuda, "cuda", CUDA, "NVIDIA CUDA(tm)",
205-
LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | Digraphs)
206-
207-
// HIP
208-
LANGSTANDARD(hip, "hip", HIP, "HIP",
209-
LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | Digraphs)
210-
211203
// HLSL
212204
LANGSTANDARD(hlsl, "hlsl",
213205
HLSL, "High Level Shader Language",

clang/lib/Basic/LangStandards.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ LangStandard::Kind clang::getDefaultLanguageStandard(clang::Language Lang,
5454
return LangStandard::lang_opencl12;
5555
case Language::OpenCLCXX:
5656
return LangStandard::lang_openclcpp10;
57-
case Language::CUDA:
58-
return LangStandard::lang_cuda;
5957
case Language::Asm:
6058
case Language::C:
6159
// The PS4 uses C99 as the default C standard.
@@ -66,13 +64,13 @@ LangStandard::Kind clang::getDefaultLanguageStandard(clang::Language Lang,
6664
return LangStandard::lang_gnu11;
6765
case Language::CXX:
6866
case Language::ObjCXX:
67+
case Language::CUDA:
68+
case Language::HIP:
6969
if (T.isPS())
7070
return LangStandard::lang_gnucxx14;
7171
return LangStandard::lang_gnucxx17;
7272
case Language::RenderScript:
7373
return LangStandard::lang_c99;
74-
case Language::HIP:
75-
return LangStandard::lang_hip;
7674
case Language::HLSL:
7775
return LangStandard::lang_hlsl2021;
7876
}

clang/test/CodeGenCUDA/long-double.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: -aux-triple x86_64-unknown-gnu-linux -fcuda-is-device \
77
// RUN: -emit-llvm -o - %s 2>&1 | FileCheck %s
88

9-
// CHECK: @_ZN15infinity_helperIeE5valueE = {{.*}} double 0x47EFFFFFD586B834, align 8
9+
// CHECK: @_ZN15infinity_helperIeE5valueE = {{.*}} double 0x47EFFFFFD586B834,{{.*}} align 8
1010
// CHECK: @size = {{.*}} i32 8
1111

1212
#include "Inputs/cuda.h"

clang/test/Driver/unknown-std.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
// RUN: not %clang %s -std=foobar -c 2>&1 | FileCheck --match-full-lines %s
66
// RUN: not %clang -x objective-c++ %s -std=foobar -c 2>&1 | FileCheck --match-full-lines %s
7-
// RUN: not %clang -x cuda -nocudainc -nocudalib --cuda-path=%S/Inputs/CUDA/usr/local/cuda %s -std=foobar -c 2>&1 | FileCheck --match-full-lines --check-prefix=CHECK --check-prefix=CUDA %s
7+
// RUN: not %clang -x cuda -nocudainc -nocudalib --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
8+
// RUN: %s -std=foobar -c 2>&1 | FileCheck --match-full-lines %s
9+
// RUN: not %clang -x hip -nocudainc -nocudalib %s -std=foobar -c 2>&1 \
10+
// RUN: | FileCheck --match-full-lines %s
811

912
// CHECK: error: invalid value 'foobar' in '-std=foobar'
1013
// CHECK-NEXT: note: use 'c++98' or 'c++03' for 'ISO C++ 1998 with amendments' standard

clang/test/Preprocessor/lang-std.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
// UNSUPPORTED: target={{.*-(ps4|ps5)}}
21
/// Test default standards.
3-
/// PS4/PS5 default to gnu++14.
2+
/// CUDA/HIP uses the same default standards as C++.
43

5-
// RUN: %clang_cc1 -dM -E %s | FileCheck --check-prefix=CXX17 %s
6-
// RUN: %clang_cc1 -dM -E -x cuda %s | FileCheck --check-prefix=CXX14 %s
7-
// RUN: %clang_cc1 -dM -E -x hip %s | FileCheck --check-prefix=CXX14 %s
4+
// RUN: %clang_cc1 -dM -E %s | grep __cplusplus >%T-cpp-std.txt
5+
// RUN: %clang_cc1 -dM -E -x cuda %s | grep __cplusplus >%T-cuda-cuda.txt
6+
// RUN: %clang_cc1 -dM -E -x hip %s | grep __cplusplus >%T-hip-std.txt
7+
// RUN: diff %T-cpp-std.txt %T-cuda-cuda.txt
8+
// RUN: diff %T-cpp-std.txt %T-hip-std.txt
89

910
// RUN: %clang_cc1 -dM -E -x cuda -std=c++14 %s | FileCheck --check-prefix=CXX14 %s
11+
// RUN: %clang_cc1 -dM -E -x cuda -std=c++17 %s | FileCheck --check-prefix=CXX17 %s
1012
// RUN: %clang_cc1 -dM -E -x hip -std=c++98 %s | FileCheck --check-prefix=CXX98 %s
1113

1214
// CXX98: #define __cplusplus 199711L

lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -484,9 +484,6 @@ static void ParseLangArgs(LangOptions &Opts, InputKind IK, const char *triple) {
484484
case clang::Language::OpenCLCXX:
485485
LangStd = LangStandard::lang_openclcpp10;
486486
break;
487-
case clang::Language::CUDA:
488-
LangStd = LangStandard::lang_cuda;
489-
break;
490487
case clang::Language::Asm:
491488
case clang::Language::C:
492489
case clang::Language::ObjC:
@@ -496,8 +493,9 @@ static void ParseLangArgs(LangOptions &Opts, InputKind IK, const char *triple) {
496493
case clang::Language::ObjCXX:
497494
LangStd = LangStandard::lang_gnucxx98;
498495
break;
496+
case clang::Language::CUDA:
499497
case clang::Language::HIP:
500-
LangStd = LangStandard::lang_hip;
498+
LangStd = LangStandard::lang_gnucxx17;
501499
break;
502500
case clang::Language::HLSL:
503501
LangStd = LangStandard::lang_hlsl;

0 commit comments

Comments
 (0)