Skip to content

Commit 4b57d81

Browse files
committed
Auto merge of #147519 - Zalathar:rollup-o5f16uo, r=Zalathar
Rollup of 3 pull requests Successful merges: - #147446 (PassWrapper: use non-deprecated lookupTarget method) - #147473 (Do `x check` on various bootstrap tools in CI) - #147509 (remove intrinsic wrapper functions from LLVM bindings) r? `@ghost` `@rustbot` modify labels: rollup
2 parents acf2437 + 828dd0c commit 4b57d81

File tree

8 files changed

+53
-134
lines changed

8 files changed

+53
-134
lines changed

compiler/rustc_codegen_llvm/src/builder.rs

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,14 +1518,13 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
15181518
pub(crate) fn set_unpredictable(&mut self, inst: &'ll Value) {
15191519
self.set_metadata_node(inst, llvm::MD_unpredictable, &[]);
15201520
}
1521-
}
1522-
impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
1521+
15231522
pub(crate) fn minnum(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
1524-
unsafe { llvm::LLVMRustBuildMinNum(self.llbuilder, lhs, rhs) }
1523+
self.call_intrinsic("llvm.minnum", &[self.val_ty(lhs)], &[lhs, rhs])
15251524
}
15261525

15271526
pub(crate) fn maxnum(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
1528-
unsafe { llvm::LLVMRustBuildMaxNum(self.llbuilder, lhs, rhs) }
1527+
self.call_intrinsic("llvm.maxnum", &[self.val_ty(lhs)], &[lhs, rhs])
15291528
}
15301529

15311530
pub(crate) fn insert_element(
@@ -1547,18 +1546,19 @@ impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
15471546
}
15481547

15491548
pub(crate) fn vector_reduce_fadd(&mut self, acc: &'ll Value, src: &'ll Value) -> &'ll Value {
1550-
unsafe { llvm::LLVMRustBuildVectorReduceFAdd(self.llbuilder, acc, src) }
1549+
self.call_intrinsic("llvm.vector.reduce.fadd", &[self.val_ty(src)], &[acc, src])
15511550
}
15521551
pub(crate) fn vector_reduce_fmul(&mut self, acc: &'ll Value, src: &'ll Value) -> &'ll Value {
1553-
unsafe { llvm::LLVMRustBuildVectorReduceFMul(self.llbuilder, acc, src) }
1552+
self.call_intrinsic("llvm.vector.reduce.fmul", &[self.val_ty(src)], &[acc, src])
15541553
}
15551554
pub(crate) fn vector_reduce_fadd_reassoc(
15561555
&mut self,
15571556
acc: &'ll Value,
15581557
src: &'ll Value,
15591558
) -> &'ll Value {
15601559
unsafe {
1561-
let instr = llvm::LLVMRustBuildVectorReduceFAdd(self.llbuilder, acc, src);
1560+
let instr =
1561+
self.call_intrinsic("llvm.vector.reduce.fadd", &[self.val_ty(src)], &[acc, src]);
15621562
llvm::LLVMRustSetAllowReassoc(instr);
15631563
instr
15641564
}
@@ -1569,43 +1569,49 @@ impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
15691569
src: &'ll Value,
15701570
) -> &'ll Value {
15711571
unsafe {
1572-
let instr = llvm::LLVMRustBuildVectorReduceFMul(self.llbuilder, acc, src);
1572+
let instr =
1573+
self.call_intrinsic("llvm.vector.reduce.fmul", &[self.val_ty(src)], &[acc, src]);
15731574
llvm::LLVMRustSetAllowReassoc(instr);
15741575
instr
15751576
}
15761577
}
15771578
pub(crate) fn vector_reduce_add(&mut self, src: &'ll Value) -> &'ll Value {
1578-
unsafe { llvm::LLVMRustBuildVectorReduceAdd(self.llbuilder, src) }
1579+
self.call_intrinsic("llvm.vector.reduce.add", &[self.val_ty(src)], &[src])
15791580
}
15801581
pub(crate) fn vector_reduce_mul(&mut self, src: &'ll Value) -> &'ll Value {
1581-
unsafe { llvm::LLVMRustBuildVectorReduceMul(self.llbuilder, src) }
1582+
self.call_intrinsic("llvm.vector.reduce.mul", &[self.val_ty(src)], &[src])
15821583
}
15831584
pub(crate) fn vector_reduce_and(&mut self, src: &'ll Value) -> &'ll Value {
1584-
unsafe { llvm::LLVMRustBuildVectorReduceAnd(self.llbuilder, src) }
1585+
self.call_intrinsic("llvm.vector.reduce.and", &[self.val_ty(src)], &[src])
15851586
}
15861587
pub(crate) fn vector_reduce_or(&mut self, src: &'ll Value) -> &'ll Value {
1587-
unsafe { llvm::LLVMRustBuildVectorReduceOr(self.llbuilder, src) }
1588+
self.call_intrinsic("llvm.vector.reduce.or", &[self.val_ty(src)], &[src])
15881589
}
15891590
pub(crate) fn vector_reduce_xor(&mut self, src: &'ll Value) -> &'ll Value {
1590-
unsafe { llvm::LLVMRustBuildVectorReduceXor(self.llbuilder, src) }
1591+
self.call_intrinsic("llvm.vector.reduce.xor", &[self.val_ty(src)], &[src])
15911592
}
15921593
pub(crate) fn vector_reduce_fmin(&mut self, src: &'ll Value) -> &'ll Value {
1593-
unsafe {
1594-
llvm::LLVMRustBuildVectorReduceFMin(self.llbuilder, src, /*NoNaNs:*/ false)
1595-
}
1594+
self.call_intrinsic("llvm.vector.reduce.fmin", &[self.val_ty(src)], &[src])
15961595
}
15971596
pub(crate) fn vector_reduce_fmax(&mut self, src: &'ll Value) -> &'ll Value {
1598-
unsafe {
1599-
llvm::LLVMRustBuildVectorReduceFMax(self.llbuilder, src, /*NoNaNs:*/ false)
1600-
}
1597+
self.call_intrinsic("llvm.vector.reduce.fmax", &[self.val_ty(src)], &[src])
16011598
}
16021599
pub(crate) fn vector_reduce_min(&mut self, src: &'ll Value, is_signed: bool) -> &'ll Value {
1603-
unsafe { llvm::LLVMRustBuildVectorReduceMin(self.llbuilder, src, is_signed) }
1600+
self.call_intrinsic(
1601+
if is_signed { "llvm.vector.reduce.smin" } else { "llvm.vector.reduce.umin" },
1602+
&[self.val_ty(src)],
1603+
&[src],
1604+
)
16041605
}
16051606
pub(crate) fn vector_reduce_max(&mut self, src: &'ll Value, is_signed: bool) -> &'ll Value {
1606-
unsafe { llvm::LLVMRustBuildVectorReduceMax(self.llbuilder, src, is_signed) }
1607+
self.call_intrinsic(
1608+
if is_signed { "llvm.vector.reduce.smax" } else { "llvm.vector.reduce.umax" },
1609+
&[self.val_ty(src)],
1610+
&[src],
1611+
)
16071612
}
1608-
1613+
}
1614+
impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
16091615
pub(crate) fn add_clause(&mut self, landing_pad: &'ll Value, clause: &'ll Value) {
16101616
unsafe {
16111617
llvm::LLVMAddClause(landing_pad, clause);

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2043,53 +2043,6 @@ unsafe extern "C" {
20432043
IsVolatile: bool,
20442044
) -> &'a Value;
20452045

2046-
pub(crate) fn LLVMRustBuildVectorReduceFAdd<'a>(
2047-
B: &Builder<'a>,
2048-
Acc: &'a Value,
2049-
Src: &'a Value,
2050-
) -> &'a Value;
2051-
pub(crate) fn LLVMRustBuildVectorReduceFMul<'a>(
2052-
B: &Builder<'a>,
2053-
Acc: &'a Value,
2054-
Src: &'a Value,
2055-
) -> &'a Value;
2056-
pub(crate) fn LLVMRustBuildVectorReduceAdd<'a>(B: &Builder<'a>, Src: &'a Value) -> &'a Value;
2057-
pub(crate) fn LLVMRustBuildVectorReduceMul<'a>(B: &Builder<'a>, Src: &'a Value) -> &'a Value;
2058-
pub(crate) fn LLVMRustBuildVectorReduceAnd<'a>(B: &Builder<'a>, Src: &'a Value) -> &'a Value;
2059-
pub(crate) fn LLVMRustBuildVectorReduceOr<'a>(B: &Builder<'a>, Src: &'a Value) -> &'a Value;
2060-
pub(crate) fn LLVMRustBuildVectorReduceXor<'a>(B: &Builder<'a>, Src: &'a Value) -> &'a Value;
2061-
pub(crate) fn LLVMRustBuildVectorReduceMin<'a>(
2062-
B: &Builder<'a>,
2063-
Src: &'a Value,
2064-
IsSigned: bool,
2065-
) -> &'a Value;
2066-
pub(crate) fn LLVMRustBuildVectorReduceMax<'a>(
2067-
B: &Builder<'a>,
2068-
Src: &'a Value,
2069-
IsSigned: bool,
2070-
) -> &'a Value;
2071-
pub(crate) fn LLVMRustBuildVectorReduceFMin<'a>(
2072-
B: &Builder<'a>,
2073-
Src: &'a Value,
2074-
IsNaN: bool,
2075-
) -> &'a Value;
2076-
pub(crate) fn LLVMRustBuildVectorReduceFMax<'a>(
2077-
B: &Builder<'a>,
2078-
Src: &'a Value,
2079-
IsNaN: bool,
2080-
) -> &'a Value;
2081-
2082-
pub(crate) fn LLVMRustBuildMinNum<'a>(
2083-
B: &Builder<'a>,
2084-
LHS: &'a Value,
2085-
RHS: &'a Value,
2086-
) -> &'a Value;
2087-
pub(crate) fn LLVMRustBuildMaxNum<'a>(
2088-
B: &Builder<'a>,
2089-
LHS: &'a Value,
2090-
RHS: &'a Value,
2091-
) -> &'a Value;
2092-
20932046
pub(crate) fn LLVMRustTimeTraceProfilerInitialize();
20942047

20952048
pub(crate) fn LLVMRustTimeTraceProfilerFinishThread();

compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,11 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
283283
std::string Error;
284284
auto Trip = Triple(Triple::normalize(TripleStr));
285285
const llvm::Target *TheTarget =
286+
#if LLVM_VERSION_GE(21, 0)
287+
TargetRegistry::lookupTarget(Trip, Error);
288+
#else
286289
TargetRegistry::lookupTarget(Trip.getTriple(), Error);
290+
#endif
287291
if (TheTarget == nullptr) {
288292
LLVMRustSetLastError(Error.c_str());
289293
return nullptr;

compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,69 +1475,6 @@ extern "C" void LLVMRustModuleInstructionStats(LLVMModuleRef M,
14751475
});
14761476
}
14771477

1478-
// Vector reductions:
1479-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceFAdd(LLVMBuilderRef B,
1480-
LLVMValueRef Acc,
1481-
LLVMValueRef Src) {
1482-
return wrap(unwrap(B)->CreateFAddReduce(unwrap(Acc), unwrap(Src)));
1483-
}
1484-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceFMul(LLVMBuilderRef B,
1485-
LLVMValueRef Acc,
1486-
LLVMValueRef Src) {
1487-
return wrap(unwrap(B)->CreateFMulReduce(unwrap(Acc), unwrap(Src)));
1488-
}
1489-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceAdd(LLVMBuilderRef B,
1490-
LLVMValueRef Src) {
1491-
return wrap(unwrap(B)->CreateAddReduce(unwrap(Src)));
1492-
}
1493-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceMul(LLVMBuilderRef B,
1494-
LLVMValueRef Src) {
1495-
return wrap(unwrap(B)->CreateMulReduce(unwrap(Src)));
1496-
}
1497-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceAnd(LLVMBuilderRef B,
1498-
LLVMValueRef Src) {
1499-
return wrap(unwrap(B)->CreateAndReduce(unwrap(Src)));
1500-
}
1501-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceOr(LLVMBuilderRef B,
1502-
LLVMValueRef Src) {
1503-
return wrap(unwrap(B)->CreateOrReduce(unwrap(Src)));
1504-
}
1505-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceXor(LLVMBuilderRef B,
1506-
LLVMValueRef Src) {
1507-
return wrap(unwrap(B)->CreateXorReduce(unwrap(Src)));
1508-
}
1509-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceMin(LLVMBuilderRef B,
1510-
LLVMValueRef Src,
1511-
bool IsSigned) {
1512-
return wrap(unwrap(B)->CreateIntMinReduce(unwrap(Src), IsSigned));
1513-
}
1514-
extern "C" LLVMValueRef LLVMRustBuildVectorReduceMax(LLVMBuilderRef B,
1515-
LLVMValueRef Src,
1516-
bool IsSigned) {
1517-
return wrap(unwrap(B)->CreateIntMaxReduce(unwrap(Src), IsSigned));
1518-
}
1519-
extern "C" LLVMValueRef
1520-
LLVMRustBuildVectorReduceFMin(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
1521-
Instruction *I = unwrap(B)->CreateFPMinReduce(unwrap(Src));
1522-
I->setHasNoNaNs(NoNaN);
1523-
return wrap(I);
1524-
}
1525-
extern "C" LLVMValueRef
1526-
LLVMRustBuildVectorReduceFMax(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
1527-
Instruction *I = unwrap(B)->CreateFPMaxReduce(unwrap(Src));
1528-
I->setHasNoNaNs(NoNaN);
1529-
return wrap(I);
1530-
}
1531-
1532-
extern "C" LLVMValueRef LLVMRustBuildMinNum(LLVMBuilderRef B, LLVMValueRef LHS,
1533-
LLVMValueRef RHS) {
1534-
return wrap(unwrap(B)->CreateMinNum(unwrap(LHS), unwrap(RHS)));
1535-
}
1536-
extern "C" LLVMValueRef LLVMRustBuildMaxNum(LLVMBuilderRef B, LLVMValueRef LHS,
1537-
LLVMValueRef RHS) {
1538-
return wrap(unwrap(B)->CreateMaxNum(unwrap(LHS), unwrap(RHS)));
1539-
}
1540-
15411478
// Transfers ownership of DiagnosticHandler unique_ptr to the caller.
15421479
extern "C" DiagnosticHandler *
15431480
LLVMRustContextGetDiagnosticHandler(LLVMContextRef C) {

src/bootstrap/src/core/build_steps/check.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,15 @@ tool_check_step!(Compiletest {
821821
default: false,
822822
});
823823

824+
// As with compiletest, rustdoc-gui-test is automatically built when running
825+
// relevant tests. So being able to check it is mainly useful for people
826+
// working on on rustdoc-gui-test itself, or on its compiletest dependency.
827+
tool_check_step!(RustdocGuiTest {
828+
path: "src/tools/rustdoc-gui-test",
829+
mode: Mode::ToolBootstrap,
830+
default: false,
831+
});
832+
824833
tool_check_step!(Linkchecker {
825834
path: "src/tools/linkchecker",
826835
mode: Mode::ToolBootstrap,

src/bootstrap/src/core/builder/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,7 @@ impl<'a> Builder<'a> {
10711071
check::Bootstrap,
10721072
check::RunMakeSupport,
10731073
check::Compiletest,
1074+
check::RustdocGuiTest,
10741075
check::FeaturesStatusDump,
10751076
check::CoverageDump,
10761077
check::Linkchecker,

src/ci/docker/host-x86_64/pr-check-1/Dockerfile

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,17 @@ COPY host-x86_64/pr-check-1/validate-toolstate.sh /scripts/
4040
# We disable optimized compiler built-ins because that requires a C toolchain for the target.
4141
# We also skip the x86_64-unknown-linux-gnu target as it is well-tested by other jobs.
4242
ENV SCRIPT \
43-
python3 ../x.py check bootstrap && \
43+
# Check some tools that aren't included in `x check` by default, to
44+
# ensure that maintainers can still do check builds locally.
45+
python3 ../x.py check \
46+
bootstrap \
47+
bump-stage0 \
48+
compiletest \
49+
coverage-dump \
50+
linkchecker \
51+
run-make-support \
52+
rustdoc-gui-test \
53+
&& \
4454
/scripts/check-default-config-profiles.sh && \
4555
python3 ../x.py build src/tools/build-manifest && \
4656
python3 ../x.py check --target=i686-pc-windows-gnu --host=i686-pc-windows-gnu && \

src/ci/docker/host-x86_64/pr-check-2/Dockerfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ RUN sh /scripts/sccache.sh
2828

2929
ENV SCRIPT \
3030
python3 ../x.py check && \
31-
python3 ../x.py check src/tools/bump-stage0 && \
3231
python3 ../x.py clippy ci --stage 2 && \
3332
python3 ../x.py test --stage 1 core alloc std test proc_macro && \
3433
python3 ../x.py test --stage 1 src/tools/compiletest && \

0 commit comments

Comments
 (0)