Skip to content

Commit f3b54b0

Browse files
authored
Merge branch 'llvm:main' into main
2 parents dbcf8b4 + 5f86456 commit f3b54b0

File tree

461 files changed

+29567
-13837
lines changed

Some content is hidden

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

461 files changed

+29567
-13837
lines changed

.ci/monolithic-linux.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ runtime_targets="${4}"
2929
runtime_targets_needs_reconfig="${5}"
3030
enable_cir="${6}"
3131

32-
lit_args="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests"
32+
lit_args="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests --succinct"
3333

3434
start-group "CMake"
3535
export PIP_BREAK_SYSTEM_PACKAGES=1
@@ -65,12 +65,12 @@ cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \
6565
start-group "ninja"
6666

6767
# Targets are not escaped as they are passed as separate arguments.
68-
ninja -C "${BUILD_DIR}" -k 0 ${targets}
68+
ninja -C "${BUILD_DIR}" -k 0 ${targets} |& tee ninja.log
6969

7070
if [[ "${runtime_targets}" != "" ]]; then
7171
start-group "ninja Runtimes"
7272

73-
ninja -C "${BUILD_DIR}" ${runtime_targets}
73+
ninja -C "${BUILD_DIR}" ${runtime_targets} |& tee ninja_runtimes.log
7474
fi
7575

7676
# Compiling runtimes with just-built Clang and running their tests
@@ -85,7 +85,8 @@ if [[ "${runtime_targets_needs_reconfig}" != "" ]]; then
8585

8686
start-group "ninja Runtimes C++26"
8787

88-
ninja -C "${BUILD_DIR}" ${runtime_targets_needs_reconfig}
88+
ninja -C "${BUILD_DIR}" ${runtime_targets_needs_reconfig} \
89+
|& tee ninja_runtimes_needs_reconfig1.log
8990

9091
start-group "CMake Runtimes Clang Modules"
9192

@@ -96,5 +97,6 @@ if [[ "${runtime_targets_needs_reconfig}" != "" ]]; then
9697

9798
start-group "ninja Runtimes Clang Modules"
9899

99-
ninja -C "${BUILD_DIR}" ${runtime_targets_needs_reconfig}
100+
ninja -C "${BUILD_DIR}" ${runtime_targets_needs_reconfig} \
101+
|& tee ninja_runtimes_needs_reconfig2.log
100102
fi

.ci/monolithic-windows.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \
3939
-D LLVM_ENABLE_ASSERTIONS=ON \
4040
-D LLVM_BUILD_EXAMPLES=ON \
4141
-D COMPILER_RT_BUILD_LIBFUZZER=OFF \
42-
-D LLVM_LIT_ARGS="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests" \
42+
-D LLVM_LIT_ARGS="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests --succinct" \
4343
-D COMPILER_RT_BUILD_ORC=OFF \
4444
-D CMAKE_C_COMPILER_LAUNCHER=sccache \
4545
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache \
@@ -51,4 +51,4 @@ cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \
5151
start-group "ninja"
5252

5353
# Targets are not escaped as they are passed as separate arguments.
54-
ninja -C "${BUILD_DIR}" -k 0 ${targets}
54+
ninja -C "${BUILD_DIR}" -k 0 ${targets} |& tee ninja.log

.git-blame-ignore-revs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,6 @@ a3a007ad5fa20abc90ead4e1030b481bf109b4cf
143143
b7e332d3f59f567b1999fbcc660d7837cba8e406
144144
6056f942abe83b05406df8b04e95ec37a3d160b5
145145
906295b8a31c8dac5aa845864c0bca9f02f86184
146+
147+
# [mlir][tensor][linalg] Move Pack/UnPack Ops to Linalg
148+
517800e37e8d3a4ee84214bef65e227612c2a98b
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: MLIR SPIR-V Tests
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
workflow_dispatch:
8+
pull_request:
9+
paths:
10+
- 'mlir/include/mlir/Dialect/SPIRV/**'
11+
- 'mlir/lib/Dialect/SPIRV/**'
12+
- 'mlir/include/mlir/Target/SPIRV/**'
13+
- 'mlir/lib/Target/SPIRV/**'
14+
- 'mlir/test/Target/SPIRV/**'
15+
- '.github/workflows/mlir-spirv-tests.yml'
16+
17+
concurrency:
18+
# Skip intermediate builds: always.
19+
# Cancel intermediate builds: only if it is a pull request build.
20+
group: ${{ github.workflow }}-${{ github.ref }}
21+
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
22+
23+
jobs:
24+
check_spirv:
25+
if: github.repository_owner == 'llvm'
26+
name: Test MLIR SPIR-V
27+
uses: ./.github/workflows/llvm-project-tests.yml
28+
with:
29+
build_target: check-mlir
30+
projects: mlir
31+
extra_cmake_args: '-DLLVM_TARGETS_TO_BUILD="host" -DLLVM_INCLUDE_SPIRV_TOOLS_TESTS=ON'
32+
os_list: '["ubuntu-24.04"]'

bolt/include/bolt/Profile/DataAggregator.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,6 @@ class DataAggregator : public DataReader {
502502
/// entries).
503503
void imputeFallThroughs();
504504

505-
/// Register profiled functions for lite mode.
506-
void registerProfiledFunctions();
507-
508505
/// Debugging dump methods
509506
void dump() const;
510507
void dump(const PerfBranchSample &Sample) const;

bolt/lib/Profile/DataAggregator.cpp

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -581,26 +581,6 @@ void DataAggregator::imputeFallThroughs() {
581581
outs() << "BOLT-INFO: imputed " << InferredTraces << " traces\n";
582582
}
583583

584-
void DataAggregator::registerProfiledFunctions() {
585-
DenseSet<uint64_t> Addrs;
586-
for (const auto &Trace : llvm::make_first_range(Traces)) {
587-
if (Trace.Branch != Trace::FT_ONLY &&
588-
Trace.Branch != Trace::FT_EXTERNAL_ORIGIN)
589-
Addrs.insert(Trace.Branch);
590-
Addrs.insert(Trace.From);
591-
}
592-
593-
for (const auto [PC, _] : BasicSamples)
594-
Addrs.insert(PC);
595-
596-
for (const PerfMemSample &MemSample : MemSamples)
597-
Addrs.insert(MemSample.PC);
598-
599-
for (const uint64_t Addr : Addrs)
600-
if (BinaryFunction *Func = getBinaryFunctionContainingAddress(Addr))
601-
Func->setHasProfileAvailable();
602-
}
603-
604584
Error DataAggregator::preprocessProfile(BinaryContext &BC) {
605585
this->BC = &BC;
606586

@@ -623,7 +603,6 @@ Error DataAggregator::preprocessProfile(BinaryContext &BC) {
623603
exit(0);
624604
}
625605

626-
registerProfiledFunctions();
627606
return Error::success();
628607
}
629608

@@ -1368,6 +1347,10 @@ std::error_code DataAggregator::parseAggregatedLBREntry() {
13681347
}
13691348

13701349
const uint64_t FromOffset = Addr[0]->Offset;
1350+
BinaryFunction *FromFunc = getBinaryFunctionContainingAddress(FromOffset);
1351+
if (FromFunc)
1352+
FromFunc->setHasProfileAvailable();
1353+
13711354
int64_t Count = Counters[0];
13721355
int64_t Mispreds = Counters[1];
13731356

@@ -1378,6 +1361,11 @@ std::error_code DataAggregator::parseAggregatedLBREntry() {
13781361
return std::error_code();
13791362
}
13801363

1364+
const uint64_t ToOffset = Addr[1]->Offset;
1365+
BinaryFunction *ToFunc = getBinaryFunctionContainingAddress(ToOffset);
1366+
if (ToFunc)
1367+
ToFunc->setHasProfileAvailable();
1368+
13811369
/// For fall-through types, adjust locations to match Trace container.
13821370
if (Type == FT || Type == FT_EXTERNAL_ORIGIN || Type == FT_EXTERNAL_RETURN) {
13831371
Addr[2] = Location(Addr[1]->Offset); // Trace To
@@ -1625,6 +1613,9 @@ std::error_code DataAggregator::parseBranchEvents() {
16251613
Traces.reserve(TraceMap.size());
16261614
for (const auto &[Trace, Info] : TraceMap) {
16271615
Traces.emplace_back(Trace, Info);
1616+
for (const uint64_t Addr : {Trace.Branch, Trace.From})
1617+
if (BinaryFunction *BF = getBinaryFunctionContainingAddress(Addr))
1618+
BF->setHasProfileAvailable();
16281619
}
16291620
clear(TraceMap);
16301621

@@ -1685,6 +1676,9 @@ std::error_code DataAggregator::parseBasicEvents() {
16851676
continue;
16861677
++NumTotalSamples;
16871678

1679+
if (BinaryFunction *BF = getBinaryFunctionContainingAddress(Sample->PC))
1680+
BF->setHasProfileAvailable();
1681+
16881682
++BasicSamples[Sample->PC];
16891683
EventNames.insert(Sample->EventName);
16901684
}
@@ -1722,6 +1716,9 @@ std::error_code DataAggregator::parseMemEvents() {
17221716
if (std::error_code EC = Sample.getError())
17231717
return EC;
17241718

1719+
if (BinaryFunction *BF = getBinaryFunctionContainingAddress(Sample->PC))
1720+
BF->setHasProfileAvailable();
1721+
17251722
MemSamples.emplace_back(std::move(Sample.get()));
17261723
}
17271724

clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -555,15 +555,22 @@ bool NarrowingConversionsCheck::handleConditionalOperator(
555555
// We have an expression like so: `output = cond ? lhs : rhs`
556556
// From the point of view of narrowing conversion we treat it as two
557557
// expressions `output = lhs` and `output = rhs`.
558-
handleBinaryOperator(Context, CO->getLHS()->getExprLoc(), Lhs,
559-
*CO->getLHS());
560-
handleBinaryOperator(Context, CO->getRHS()->getExprLoc(), Lhs,
561-
*CO->getRHS());
558+
handleConditionalOperatorArgument(Context, Lhs, CO->getLHS());
559+
handleConditionalOperatorArgument(Context, Lhs, CO->getRHS());
562560
return true;
563561
}
564562
return false;
565563
}
566564

565+
void NarrowingConversionsCheck::handleConditionalOperatorArgument(
566+
const ASTContext &Context, const Expr &Lhs, const Expr *Arg) {
567+
if (const auto *ICE = llvm::dyn_cast<ImplicitCastExpr>(Arg))
568+
if (!Arg->getIntegerConstantExpr(Context))
569+
Arg = ICE->getSubExpr();
570+
571+
handleBinaryOperator(Context, Arg->getExprLoc(), Lhs, *Arg);
572+
}
573+
567574
void NarrowingConversionsCheck::handleImplicitCast(
568575
const ASTContext &Context, const ImplicitCastExpr &Cast) {
569576
if (Cast.getExprLoc().isMacroID())

clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ class NarrowingConversionsCheck : public ClangTidyCheck {
8585
bool handleConditionalOperator(const ASTContext &Context, const Expr &Lhs,
8686
const Expr &Rhs);
8787

88+
void handleConditionalOperatorArgument(const ASTContext &Context,
89+
const Expr &Lhs, const Expr *Arg);
8890
void handleImplicitCast(const ASTContext &Context,
8991
const ImplicitCastExpr &Cast);
9092

clang-tools-extra/docs/ReleaseNotes.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ Changes in existing checks
134134
<clang-tidy/checks/bugprone/infinite-loop>` check by adding detection for
135135
variables introduced by structured bindings.
136136

137+
- Improved :doc:`bugprone-narrowing-conversions
138+
<clang-tidy/checks/bugprone/narrowing-conversions>` check by fixing
139+
false positive from analysis of a conditional expression in C.
140+
137141
- Improved :doc:`bugprone-reserved-identifier
138142
<clang-tidy/checks/bugprone/reserved-identifier>` check by ignoring
139143
declarations in system headers.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// RUN: %check_clang_tidy %s bugprone-narrowing-conversions %t -- \
2+
// RUN: -- -target x86_64-unknown-linux
3+
4+
char test_char(int cond, char c) {
5+
char ret = cond > 0 ? ':' : c;
6+
return ret;
7+
}
8+
9+
short test_short(int cond, short s) {
10+
short ret = cond > 0 ? ':' : s;
11+
return ret;
12+
}
13+
14+
int test_int(int cond, int i) {
15+
int ret = cond > 0 ? ':' : i;
16+
return ret;
17+
}
18+
19+
void test(int cond, int i) {
20+
char x = cond > 0 ? ':' : i;
21+
// CHECK-MESSAGES: :[[@LINE-1]]:29: warning: narrowing conversion from 'int' to signed type 'char' is implementation-defined [bugprone-narrowing-conversions]
22+
}

0 commit comments

Comments
 (0)