Skip to content

Commit ee6de87

Browse files
Merge branch 'main' into main
2 parents e065eff + 8fb33a4 commit ee6de87

File tree

101 files changed

+2711
-356
lines changed

Some content is hidden

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

101 files changed

+2711
-356
lines changed

.github/workflows/containers/github-action-ci-windows/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ RUN powershell -Command \
9090
RUN git config --system core.longpaths true & \
9191
git config --global core.autocrlf false
9292
93-
ARG RUNNER_VERSION=2.328.0
93+
ARG RUNNER_VERSION=2.329.0
9494
ENV RUNNER_VERSION=$RUNNER_VERSION
9595
9696
RUN powershell -Command \

.github/workflows/containers/github-action-ci/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ WORKDIR /home/gha
9999

100100
FROM ci-container AS ci-container-agent
101101

102-
ENV GITHUB_RUNNER_VERSION=2.328.0
102+
ENV GITHUB_RUNNER_VERSION=2.329.0
103103

104104
RUN mkdir actions-runner && \
105105
cd actions-runner && \

clang/include/clang/Sema/Template.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ enum class TemplateSubstitutionKind : char {
205205

206206
/// Add a new outmost level to the multi-level template argument
207207
/// list.
208-
/// A 'Final' substitution means that Subst* nodes won't be built
209-
/// for the replacements.
208+
/// A 'Final' substitution means that these Args don't need to be
209+
/// resugared later.
210210
void addOuterTemplateArguments(Decl *AssociatedDecl, ArgList Args,
211211
bool Final) {
212212
assert(!NumRetainedOuterLevels &&

clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
#include "clang/Analysis/Analyses/LifetimeSafety/FactsGenerator.h"
1010
#include "clang/Analysis/Analyses/LifetimeSafety/LifetimeAnnotations.h"
1111
#include "clang/Analysis/Analyses/PostOrderCFGView.h"
12+
#include "llvm/Support/Casting.h"
1213
#include "llvm/Support/TimeProfiler.h"
1314

1415
namespace clang::lifetimes::internal {
16+
using llvm::isa_and_present;
1517

1618
static bool isGslPointerType(QualType QT) {
1719
if (const auto *RD = QT->getAsCXXRecordDecl()) {
@@ -108,7 +110,7 @@ void FactsGenerator::VisitCXXMemberCallExpr(const CXXMemberCallExpr *MCE) {
108110
// Specifically for conversion operators,
109111
// like `std::string_view p = std::string{};`
110112
if (isGslPointerType(MCE->getType()) &&
111-
isa<CXXConversionDecl>(MCE->getCalleeDecl())) {
113+
isa_and_present<CXXConversionDecl>(MCE->getCalleeDecl())) {
112114
// The argument is the implicit object itself.
113115
handleFunctionCall(MCE, MCE->getMethodDecl(),
114116
{MCE->getImplicitObjectArgument()},

clang/lib/Sema/SemaConcept.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,9 @@ ConstraintSatisfactionChecker::SubstitutionInTemplateArguments(
606606
Constraint.mappingOccurenceList();
607607
// The empty MLTAL situation should only occur when evaluating non-dependent
608608
// constraints.
609-
if (!MLTAL.getNumSubstitutedLevels())
610-
MLTAL.addOuterTemplateArguments(TD, {}, /*Final=*/false);
611-
SubstitutedOuterMost =
612-
llvm::to_vector_of<TemplateArgument>(MLTAL.getOutermost());
609+
if (MLTAL.getNumSubstitutedLevels())
610+
SubstitutedOuterMost =
611+
llvm::to_vector_of<TemplateArgument>(MLTAL.getOutermost());
613612
unsigned Offset = 0;
614613
for (unsigned I = 0, MappedIndex = 0; I < Used.size(); I++) {
615614
TemplateArgument Arg;
@@ -627,8 +626,10 @@ ConstraintSatisfactionChecker::SubstitutionInTemplateArguments(
627626
if (Offset < SubstitutedOuterMost.size())
628627
SubstitutedOuterMost.erase(SubstitutedOuterMost.begin() + Offset);
629628

630-
MLTAL.replaceOutermostTemplateArguments(TD, SubstitutedOuterMost);
631-
return std::move(MLTAL);
629+
MultiLevelTemplateArgumentList SubstitutedTemplateArgs;
630+
SubstitutedTemplateArgs.addOuterTemplateArguments(TD, SubstitutedOuterMost,
631+
/*Final=*/false);
632+
return std::move(SubstitutedTemplateArgs);
632633
}
633634

634635
ExprResult ConstraintSatisfactionChecker::EvaluateSlow(

clang/test/SemaTemplate/concepts.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1416,6 +1416,31 @@ concept IsEntitySpec =
14161416

14171417
}
14181418

1419+
namespace case8 {
1420+
1421+
template <class T>
1422+
struct type_identity {
1423+
using type = T;
1424+
};
1425+
1426+
template <typename Inner>
1427+
struct Cat {};
1428+
1429+
template <typename T>
1430+
concept CatConcept = requires {
1431+
[]<class Inner>(type_identity<Cat<Inner>>) {}(type_identity<T>{});
1432+
};
1433+
1434+
template <typename Dummy>
1435+
struct Feeder {
1436+
template <CatConcept Dummy2>
1437+
void feed() noexcept {}
1438+
};
1439+
1440+
void main() { Feeder<int>{}.feed<Cat<int>>(); }
1441+
1442+
}
1443+
14191444
}
14201445

14211446
namespace GH162125 {

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,17 @@ struct AddrOfOpConversion : public fir::FIROpConversion<fir::AddrOfOp> {
176176
llvm::LogicalResult
177177
matchAndRewrite(fir::AddrOfOp addr, OpAdaptor adaptor,
178178
mlir::ConversionPatternRewriter &rewriter) const override {
179+
180+
if (auto gpuMod = addr->getParentOfType<mlir::gpu::GPUModuleOp>()) {
181+
auto global = gpuMod.lookupSymbol<mlir::LLVM::GlobalOp>(addr.getSymbol());
182+
assert(global && "Expect global in gpu module");
183+
replaceWithAddrOfOrASCast(rewriter, addr->getLoc(), global.getAddrSpace(),
184+
getProgramAddressSpace(rewriter),
185+
global.getSymName(),
186+
convertType(addr.getType()), addr);
187+
return mlir::success();
188+
}
189+
179190
auto global = addr->getParentOfType<mlir::ModuleOp>()
180191
.lookupSymbol<mlir::LLVM::GlobalOp>(addr.getSymbol());
181192
replaceWithAddrOfOrASCast(
@@ -3231,7 +3242,8 @@ struct GlobalOpConversion : public fir::FIROpConversion<fir::GlobalOp> {
32313242

32323243
if (global.getDataAttr() &&
32333244
*global.getDataAttr() == cuf::DataAttribute::Constant)
3234-
TODO(global.getLoc(), "CUDA Fortran CONSTANT variable code generation");
3245+
g.setAddrSpace(
3246+
static_cast<unsigned>(mlir::NVVM::NVVMMemorySpace::Constant));
32353247

32363248
rewriter.eraseOp(global);
32373249
return mlir::success();

flang/test/Fir/CUDA/cuda-code-gen.mlir

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,3 +284,31 @@ module attributes {gpu.container_module, dlti.dl_spec = #dlti.dl_spec<#dlti.dl_e
284284
// CHECK-LABEL: llvm.func @_QQxxx()
285285
// CHECK: llvm.alloca %{{.*}} x !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8, array<2 x array<3 x i64>>)> {alignment = 8 : i64} : (i32) -> !llvm.ptr
286286
// CHECK-NOT: llvm.call @_FortranACUFAllocDescriptor
287+
288+
// -----
289+
290+
module attributes {gpu.container_module, dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<f80, dense<128> : vector<2xi64>>, #dlti.dl_entry<i128, dense<128> : vector<2xi64>>, #dlti.dl_entry<i64, dense<64> : vector<2xi64>>, #dlti.dl_entry<!llvm.ptr<272>, dense<64> : vector<4xi64>>, #dlti.dl_entry<!llvm.ptr<271>, dense<32> : vector<4xi64>>, #dlti.dl_entry<!llvm.ptr<270>, dense<32> : vector<4xi64>>, #dlti.dl_entry<f128, dense<128> : vector<2xi64>>, #dlti.dl_entry<f64, dense<64> : vector<2xi64>>, #dlti.dl_entry<f16, dense<16> : vector<2xi64>>, #dlti.dl_entry<i32, dense<32> : vector<2xi64>>, #dlti.dl_entry<i16, dense<16> : vector<2xi64>>, #dlti.dl_entry<i8, dense<8> : vector<2xi64>>, #dlti.dl_entry<i1, dense<8> : vector<2xi64>>, #dlti.dl_entry<!llvm.ptr, dense<64> : vector<4xi64>>, #dlti.dl_entry<"dlti.endianness", "little">, #dlti.dl_entry<"dlti.stack_alignment", 128 : i64>>} {
291+
gpu.module @cuda_device_mod {
292+
fir.global @_QMkernelsEinitial_val {data_attr = #cuf.cuda<constant>} : i32 {
293+
%0 = fir.zero_bits i32
294+
fir.has_value %0 : i32
295+
}
296+
gpu.func @_QMkernelsPassign(%arg0: !fir.ref<!fir.array<?xi32>>) kernel {
297+
%c-1 = arith.constant -1 : index
298+
%c1_i32 = arith.constant 1 : i32
299+
%0 = arith.constant 1 : i32
300+
%1 = arith.addi %0, %c1_i32 : i32
301+
%2 = fir.address_of(@_QMkernelsEinitial_val) : !fir.ref<i32>
302+
%4 = fir.load %2 : !fir.ref<i32>
303+
%5 = fir.convert %1 : (i32) -> i64
304+
%6 = fircg.ext_array_coor %arg0(%c-1)<%5> : (!fir.ref<!fir.array<?xi32>>, index, i64) -> !fir.ref<i32>
305+
fir.store %4 to %6 : !fir.ref<i32>
306+
gpu.return
307+
}
308+
}
309+
}
310+
311+
// CHECK: llvm.mlir.global external @_QMkernelsEinitial_val() {addr_space = 4 : i32} : i32
312+
// CHECK-LABEL: gpu.func @_QMkernelsPassign
313+
// CHECK: %[[ADDROF:.*]] = llvm.mlir.addressof @_QMkernelsEinitial_val : !llvm.ptr<4>
314+
// CHECK: %{{.*}} = llvm.addrspacecast %[[ADDROF]] : !llvm.ptr<4> to !llvm.ptr

libcxx/test/benchmarks/bitset.bench.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,14 @@ BENCHMARK(BM_BitsetToString<262144>)->Arg(50)->Name("BM_BitsetToString<262144>/U
103103
BENCHMARK(BM_BitsetToString<524288>)->Arg(50)->Name("BM_BitsetToString<524288>/Uniform (50%)");
104104
BENCHMARK(BM_BitsetToString<1048576>)->Arg(50)->Name("BM_BitsetToString<1048576>/Uniform (50%)"); // 1 << 20
105105

106-
static void BM_ctor_ull(benchmark::State& state) {
106+
static void BM_Bitset_ctor_ull(benchmark::State& state) {
107107
unsigned long long val = (1ULL << state.range(0)) - 1;
108108
for (auto _ : state) {
109109
std::bitset<128> b(val);
110110
benchmark::DoNotOptimize(b);
111111
}
112112
}
113113

114-
BENCHMARK(BM_ctor_ull)->DenseRange(1, 63);
114+
BENCHMARK(BM_Bitset_ctor_ull)->DenseRange(1, 63);
115115

116116
BENCHMARK_MAIN();

libcxx/utils/ci/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ services:
2323
dockerfile: Dockerfile
2424
target: actions-builder
2525
args:
26-
GITHUB_RUNNER_VERSION: "2.328.0"
26+
GITHUB_RUNNER_VERSION: "2.329.0"
2727
<<: [*image_versions, *compiler_versions]
2828

2929
android-buildkite-builder:

0 commit comments

Comments
 (0)