Skip to content

Commit 0830e47

Browse files
Merge branch 'llvm:main' into gh-101657
2 parents 40e4888 + a8344a9 commit 0830e47

File tree

380 files changed

+2132
-16033
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

380 files changed

+2132
-16033
lines changed

clang/docs/CommandGuide/clang.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,14 @@ Language Selection and Mode Options
155155
156156
ISO C 2023 with GNU extensions
157157

158+
| ``c2y``
159+
160+
ISO C 202y
161+
162+
| ``gnu2y``
163+
164+
ISO C 202y with GNU extensions
165+
158166
The default C language standard is ``gnu17``, except on PS4, where it is
159167
``gnu99``.
160168

clang/include/clang/Basic/LangStandards.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ LANGSTANDARD(c2y, "c2y",
105105
LANGSTANDARD(gnu2y, "gnu2y",
106106
C, "Working Draft for ISO C2y with GNU extensions",
107107
LineComment | C99 | C11 | C17 | C23 | C2y | Digraphs | GNUMode | HexFloat)
108-
108+
// TODO: Add the iso9899:202y alias once ISO publishes the standard.
109109

110110
// C++ modes
111111
LANGSTANDARD(cxx98, "c++98",

clang/lib/AST/ASTImporter.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2628,11 +2628,12 @@ ExpectedDecl ASTNodeImporter::VisitNamespaceDecl(NamespaceDecl *D) {
26282628
if (!Name) {
26292629
// This is an anonymous namespace. Adopt an existing anonymous
26302630
// namespace if we can.
2631-
// FIXME: Not testable.
2632-
if (auto *TU = dyn_cast<TranslationUnitDecl>(DC))
2631+
DeclContext *EnclosingDC = DC->getEnclosingNamespaceContext();
2632+
if (auto *TU = dyn_cast<TranslationUnitDecl>(EnclosingDC))
26332633
MergeWithNamespace = TU->getAnonymousNamespace();
26342634
else
2635-
MergeWithNamespace = cast<NamespaceDecl>(DC)->getAnonymousNamespace();
2635+
MergeWithNamespace =
2636+
cast<NamespaceDecl>(EnclosingDC)->getAnonymousNamespace();
26362637
} else {
26372638
SmallVector<NamedDecl *, 4> ConflictingDecls;
26382639
auto FoundDecls = Importer.findDeclsInToCtx(DC, Name);

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5843,7 +5843,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
58435843
Triple.getArch() != llvm::Triple::x86_64)
58445844
D.Diag(diag::err_drv_unsupported_opt_for_target)
58455845
<< Name << Triple.getArchName();
5846-
} else if (Name == "LIBMVEC-X86") {
5846+
} else if (Name == "libmvec") {
58475847
if (Triple.getArch() != llvm::Triple::x86 &&
58485848
Triple.getArch() != llvm::Triple::x86_64)
58495849
D.Diag(diag::err_drv_unsupported_opt_for_target)

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
934934
std::optional<StringRef> OptVal =
935935
llvm::StringSwitch<std::optional<StringRef>>(ArgVecLib->getValue())
936936
.Case("Accelerate", "Accelerate")
937-
.Case("LIBMVEC", "LIBMVEC-X86")
937+
.Case("libmvec", "LIBMVEC-X86")
938938
.Case("MASSV", "MASSV")
939939
.Case("SVML", "SVML")
940940
.Case("SLEEF", "sleefgnuabi")

clang/lib/Driver/ToolChains/Flang.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ void Flang::addTargetOptions(const ArgList &Args,
484484
Triple.getArch() != llvm::Triple::x86_64)
485485
D.Diag(diag::err_drv_unsupported_opt_for_target)
486486
<< Name << Triple.getArchName();
487-
} else if (Name == "LIBMVEC-X86") {
487+
} else if (Name == "libmvec") {
488488
if (Triple.getArch() != llvm::Triple::x86 &&
489489
Triple.getArch() != llvm::Triple::x86_64)
490490
D.Diag(diag::err_drv_unsupported_opt_for_target)

clang/test/Driver/fveclib.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %clang -### -c -fveclib=none %s 2>&1 | FileCheck --check-prefix=CHECK-NOLIB %s
22
// RUN: %clang -### -c -fveclib=Accelerate %s 2>&1 | FileCheck --check-prefix=CHECK-ACCELERATE %s
3-
// RUN: %clang -### -c -fveclib=libmvec %s 2>&1 | FileCheck --check-prefix=CHECK-libmvec %s
3+
// RUN: %clang -### -c --target=x86_64-unknown-linux-gnu -fveclib=libmvec %s 2>&1 | FileCheck --check-prefix=CHECK-libmvec %s
44
// RUN: %clang -### -c -fveclib=MASSV %s 2>&1 | FileCheck --check-prefix=CHECK-MASSV %s
55
// RUN: %clang -### -c -fveclib=Darwin_libsystem_m %s 2>&1 | FileCheck --check-prefix=CHECK-DARWIN_LIBSYSTEM_M %s
66
// RUN: %clang -### -c --target=aarch64 -fveclib=SLEEF %s 2>&1 | FileCheck --check-prefix=CHECK-SLEEF %s
@@ -21,7 +21,7 @@
2121

2222
// RUN: not %clang --target=x86 -c -fveclib=SLEEF %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s
2323
// RUN: not %clang --target=x86 -c -fveclib=ArmPL %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s
24-
// RUN: not %clang --target=aarch64 -c -fveclib=LIBMVEC-X86 %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s
24+
// RUN: not %clang --target=aarch64 -c -fveclib=libmvec %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s
2525
// RUN: not %clang --target=aarch64 -c -fveclib=SVML %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s
2626
// CHECK-ERROR: unsupported option {{.*}} for target
2727

@@ -37,7 +37,7 @@
3737

3838
/* Verify that the correct vector library is passed to LTO flags. */
3939

40-
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=LIBMVEC -flto %s 2>&1 | FileCheck --check-prefix=CHECK-LTO-LIBMVEC %s
40+
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=libmvec -flto %s 2>&1 | FileCheck --check-prefix=CHECK-LTO-LIBMVEC %s
4141
// CHECK-LTO-LIBMVEC: "-plugin-opt=-vector-library=LIBMVEC-X86"
4242

4343
// RUN: %clang -### --target=powerpc64-unknown-linux-gnu -fveclib=MASSV -flto %s 2>&1 | FileCheck --check-prefix=CHECK-LTO-MASSV %s
@@ -58,8 +58,8 @@
5858

5959
/* Verify that -fmath-errno is set correctly for the vector library. */
6060

61-
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=LIBMVEC %s 2>&1 | FileCheck --check-prefix=CHECK-ERRNO-LIBMVEC %s
62-
// CHECK-ERRNO-LIBMVEC: "-fveclib=LIBMVEC"
61+
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fveclib=libmvec %s 2>&1 | FileCheck --check-prefix=CHECK-ERRNO-LIBMVEC %s
62+
// CHECK-ERRNO-LIBMVEC: "-fveclib=libmvec"
6363
// CHECK-ERRNO-LIBMVEC-SAME: "-fmath-errno"
6464

6565
// RUN: %clang -### --target=powerpc64-unknown-linux-gnu -fveclib=MASSV %s 2>&1 | FileCheck --check-prefix=CHECK-ERRNO-MASSV %s
@@ -110,7 +110,7 @@
110110
// CHECK-ENABLED-LAST: math errno enabled by '-ffp-model=strict' after it was implicitly disabled by '-fveclib=ArmPL', this may limit the utilization of the vector library [-Wmath-errno-enabled-with-veclib]
111111

112112
/* Verify no warning when math-errno is re-enabled for a different veclib (that does not imply -fno-math-errno). */
113-
// RUN: %clang -### --target=aarch64-linux-gnu -fveclib=ArmPL -fmath-errno -fveclib=LIBMVEC %s 2>&1 | FileCheck --check-prefix=CHECK-REPEAT-VECLIB %s
113+
// RUN: %clang -### --target=aarch64-linux-gnu -fveclib=ArmPL -fmath-errno -fveclib=Accelerate %s 2>&1 | FileCheck --check-prefix=CHECK-REPEAT-VECLIB %s
114114
// CHECK-REPEAT-VECLIB-NOT: math errno enabled
115115

116116
/// Verify that vectorized routines library is being linked in.

clang/unittests/AST/ASTImporterTest.cpp

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10456,6 +10456,79 @@ TEST_P(ASTImporterOptionSpecificTestBase,
1045610456
EXPECT_EQ(ToFr1Imp, ToFr1);
1045710457
}
1045810458

10459+
struct ImportAndMergeAnonymousNamespace
10460+
: public ASTImporterOptionSpecificTestBase {
10461+
protected:
10462+
void test(const char *ToCode, const char *FromCode) {
10463+
Decl *ToTU = getToTuDecl(ToCode, Lang_CXX11);
10464+
Decl *FromTU = getTuDecl(FromCode, Lang_CXX11);
10465+
auto *FromNS = FirstDeclMatcher<NamespaceDecl>().match(
10466+
FromTU, namespaceDecl(isAnonymous()));
10467+
auto *ToNS = FirstDeclMatcher<NamespaceDecl>().match(
10468+
ToTU, namespaceDecl(isAnonymous()));
10469+
auto *FromF = FirstDeclMatcher<FunctionDecl>().match(
10470+
FromTU, functionDecl(hasName("f")));
10471+
auto *ImportedF = Import(FromF, Lang_CXX11);
10472+
EXPECT_TRUE(ImportedF);
10473+
EXPECT_EQ(ImportedF->getDeclContext(), ToNS);
10474+
auto *ImportedNS = Import(FromNS, Lang_CXX11);
10475+
EXPECT_EQ(ImportedNS, ToNS);
10476+
}
10477+
};
10478+
10479+
TEST_P(ImportAndMergeAnonymousNamespace, NamespaceInTU) {
10480+
const char *ToCode =
10481+
R"(
10482+
namespace {
10483+
}
10484+
)";
10485+
const char *FromCode =
10486+
R"(
10487+
namespace {
10488+
void f();
10489+
}
10490+
)";
10491+
test(ToCode, FromCode);
10492+
}
10493+
10494+
TEST_P(ImportAndMergeAnonymousNamespace, NamespaceInLinkageSpec) {
10495+
const char *ToCode =
10496+
R"(
10497+
extern "C" {
10498+
namespace {
10499+
}
10500+
}
10501+
)";
10502+
const char *FromCode =
10503+
R"(
10504+
extern "C" {
10505+
namespace {
10506+
void f();
10507+
}
10508+
}
10509+
)";
10510+
test(ToCode, FromCode);
10511+
}
10512+
10513+
TEST_P(ImportAndMergeAnonymousNamespace, NamespaceInNamespace) {
10514+
const char *ToCode =
10515+
R"(
10516+
namespace X {
10517+
namespace {
10518+
}
10519+
}
10520+
)";
10521+
const char *FromCode =
10522+
R"(
10523+
namespace X {
10524+
namespace {
10525+
void f();
10526+
}
10527+
}
10528+
)";
10529+
test(ToCode, FromCode);
10530+
}
10531+
1045910532
INSTANTIATE_TEST_SUITE_P(ParameterizedTests, ASTImporterLookupTableTest,
1046010533
DefaultTestValuesForRunOptions);
1046110534

@@ -10542,6 +10615,9 @@ INSTANTIATE_TEST_SUITE_P(ParameterizedTests, ImportMatrixType,
1054210615
INSTANTIATE_TEST_SUITE_P(ParameterizedTests, ImportTemplateParmDeclDefaultValue,
1054310616
DefaultTestValuesForRunOptions);
1054410617

10618+
INSTANTIATE_TEST_SUITE_P(ParameterizedTests, ImportAndMergeAnonymousNamespace,
10619+
DefaultTestValuesForRunOptions);
10620+
1054510621
// FIXME: Make ImportOpenCLPipe test work.
1054610622
// INSTANTIATE_TEST_SUITE_P(ParameterizedTests, ImportOpenCLPipe,
1054710623
// DefaultTestValuesForRunOptions);

flang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ static bool parseVectorLibArg(Fortran::frontend::CodeGenOptions &opts,
195195
std::optional<VectorLibrary> val =
196196
llvm::StringSwitch<std::optional<VectorLibrary>>(arg->getValue())
197197
.Case("Accelerate", VectorLibrary::Accelerate)
198-
.Case("LIBMVEC", VectorLibrary::LIBMVEC)
198+
.Case("libmvec", VectorLibrary::LIBMVEC)
199199
.Case("MASSV", VectorLibrary::MASSV)
200200
.Case("SVML", VectorLibrary::SVML)
201201
.Case("SLEEF", VectorLibrary::SLEEF)

flang/test/Driver/fveclib-codegen.f90

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
! test that -fveclib= is passed to the backend
2-
! RUN: %if aarch64-registered-target %{ %flang -S -Ofast -target aarch64-unknown-linux-gnu -fveclib=LIBMVEC -o - %s | FileCheck %s %}
3-
! RUN: %if x86-registered-target %{ %flang -S -Ofast -target x86_64-unknown-linux-gnu -fveclib=LIBMVEC -o - %s | FileCheck %s %}
2+
! RUN: %if aarch64-registered-target %{ %flang -S -Ofast -target aarch64-unknown-linux-gnu -fveclib=SLEEF -o - %s | FileCheck %s --check-prefix=SLEEF %}
3+
! RUN: %if x86-registered-target %{ %flang -S -Ofast -target x86_64-unknown-linux-gnu -fveclib=libmvec -o - %s | FileCheck %s %}
44
! RUN: %flang -S -Ofast -fveclib=NoLibrary -o - %s | FileCheck %s --check-prefix=NOLIB
55

66
subroutine sb(a, b)
@@ -9,6 +9,7 @@ subroutine sb(a, b)
99
do i=1,100
1010
! check that we used a vectorized call to powf()
1111
! CHECK: _ZGVbN4vv_powf
12+
! SLEEF: _ZGVnN4vv_powf
1213
! NOLIB: powf
1314
a(i) = a(i) ** b(i)
1415
end do

0 commit comments

Comments
 (0)