Skip to content

Commit 44fb857

Browse files
committed
Auto merge of #127674 - jhpratt:rollup-0dxy3k7, r=jhpratt
Rollup of 3 pull requests Successful merges: - #127654 (Fix incorrect NDEBUG handling in LLVM bindings) - #127661 (Stabilize io_slice_advance) - #127668 (Improved slice documentation) r? `@ghost` `@rustbot` modify labels: rollup
2 parents 0065384 + f011913 commit 44fb857

File tree

6 files changed

+64
-38
lines changed

6 files changed

+64
-38
lines changed

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2057,7 +2057,7 @@ extern "C" {
20572057
AddrOpsCount: c_uint,
20582058
DL: &'a DILocation,
20592059
InsertAtEnd: &'a BasicBlock,
2060-
) -> &'a Value;
2060+
);
20612061

20622062
pub fn LLVMRustDIBuilderCreateEnumerator<'a>(
20632063
Builder: &DIBuilder<'a>,

compiler/rustc_llvm/build.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,8 @@ fn main() {
197197
cfg.define("LLVM_RUSTLLVM", None);
198198
}
199199

200-
if tracked_env_var_os("LLVM_NDEBUG").is_some() {
200+
if tracked_env_var_os("LLVM_ASSERTIONS").is_none() {
201201
cfg.define("NDEBUG", None);
202-
cfg.debug(false);
203202
}
204203

205204
rerun_if_changed_anything_in_dir(Path::new("llvm-wrapper"));

compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp

+6-11
Original file line numberDiff line numberDiff line change
@@ -1137,20 +1137,15 @@ LLVMRustDIBuilderGetOrCreateArray(LLVMRustDIBuilderRef Builder,
11371137
Builder->getOrCreateArray(ArrayRef<Metadata *>(DataValue, Count)).get());
11381138
}
11391139

1140-
extern "C" LLVMValueRef LLVMRustDIBuilderInsertDeclareAtEnd(
1140+
extern "C" void LLVMRustDIBuilderInsertDeclareAtEnd(
11411141
LLVMRustDIBuilderRef Builder, LLVMValueRef V, LLVMMetadataRef VarInfo,
11421142
uint64_t *AddrOps, unsigned AddrOpsCount, LLVMMetadataRef DL,
11431143
LLVMBasicBlockRef InsertAtEnd) {
1144-
auto Result = Builder->insertDeclare(
1145-
unwrap(V), unwrap<DILocalVariable>(VarInfo),
1146-
Builder->createExpression(
1147-
llvm::ArrayRef<uint64_t>(AddrOps, AddrOpsCount)),
1148-
DebugLoc(cast<MDNode>(unwrap(DL))), unwrap(InsertAtEnd));
1149-
#if LLVM_VERSION_GE(19, 0)
1150-
return wrap(Result.get<llvm::Instruction *>());
1151-
#else
1152-
return wrap(Result);
1153-
#endif
1144+
Builder->insertDeclare(unwrap(V), unwrap<DILocalVariable>(VarInfo),
1145+
Builder->createExpression(
1146+
llvm::ArrayRef<uint64_t>(AddrOps, AddrOpsCount)),
1147+
DebugLoc(cast<MDNode>(unwrap(DL))),
1148+
unwrap(InsertAtEnd));
11541149
}
11551150

11561151
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerator(

library/core/src/slice/iter.rs

+50-10
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,9 @@ pub(super) trait SplitIter: DoubleEndedIterator {
388388
/// ```
389389
/// let slice = [10, 40, 33, 20];
390390
/// let mut iter = slice.split(|num| num % 3 == 0);
391+
/// assert_eq!(iter.next(), Some(&[10, 40][..]));
392+
/// assert_eq!(iter.next(), Some(&[20][..]));
393+
/// assert_eq!(iter.next(), None);
391394
/// ```
392395
///
393396
/// [`split`]: slice::split
@@ -541,6 +544,9 @@ impl<T, P> FusedIterator for Split<'_, T, P> where P: FnMut(&T) -> bool {}
541544
/// ```
542545
/// let slice = [10, 40, 33, 20];
543546
/// let mut iter = slice.split_inclusive(|num| num % 3 == 0);
547+
/// assert_eq!(iter.next(), Some(&[10, 40, 33][..]));
548+
/// assert_eq!(iter.next(), Some(&[20][..]));
549+
/// assert_eq!(iter.next(), None);
544550
/// ```
545551
///
546552
/// [`split_inclusive`]: slice::split_inclusive
@@ -914,7 +920,10 @@ impl<T, P> FusedIterator for SplitInclusiveMut<'_, T, P> where P: FnMut(&T) -> b
914920
///
915921
/// ```
916922
/// let slice = [11, 22, 33, 0, 44, 55];
917-
/// let iter = slice.rsplit(|num| *num == 0);
923+
/// let mut iter = slice.rsplit(|num| *num == 0);
924+
/// assert_eq!(iter.next(), Some(&[44, 55][..]));
925+
/// assert_eq!(iter.next(), Some(&[11, 22, 33][..]));
926+
/// assert_eq!(iter.next(), None);
918927
/// ```
919928
///
920929
/// [`rsplit`]: slice::rsplit
@@ -1134,7 +1143,10 @@ impl<T, I: SplitIter<Item = T>> Iterator for GenericSplitN<I> {
11341143
///
11351144
/// ```
11361145
/// let slice = [10, 40, 30, 20, 60, 50];
1137-
/// let iter = slice.splitn(2, |num| *num % 3 == 0);
1146+
/// let mut iter = slice.splitn(2, |num| *num % 3 == 0);
1147+
/// assert_eq!(iter.next(), Some(&[10, 40][..]));
1148+
/// assert_eq!(iter.next(), Some(&[20, 60, 50][..]));
1149+
/// assert_eq!(iter.next(), None);
11381150
/// ```
11391151
///
11401152
/// [`splitn`]: slice::splitn
@@ -1175,7 +1187,10 @@ where
11751187
///
11761188
/// ```
11771189
/// let slice = [10, 40, 30, 20, 60, 50];
1178-
/// let iter = slice.rsplitn(2, |num| *num % 3 == 0);
1190+
/// let mut iter = slice.rsplitn(2, |num| *num % 3 == 0);
1191+
/// assert_eq!(iter.next(), Some(&[50][..]));
1192+
/// assert_eq!(iter.next(), Some(&[10, 40, 30, 20][..]));
1193+
/// assert_eq!(iter.next(), None);
11791194
/// ```
11801195
///
11811196
/// [`rsplitn`]: slice::rsplitn
@@ -1300,7 +1315,11 @@ forward_iterator! { RSplitNMut: T, &'a mut [T] }
13001315
///
13011316
/// ```
13021317
/// let slice = ['r', 'u', 's', 't'];
1303-
/// let iter = slice.windows(2);
1318+
/// let mut iter = slice.windows(2);
1319+
/// assert_eq!(iter.next(), Some(&['r', 'u'][..]));
1320+
/// assert_eq!(iter.next(), Some(&['u', 's'][..]));
1321+
/// assert_eq!(iter.next(), Some(&['s', 't'][..]));
1322+
/// assert_eq!(iter.next(), None);
13041323
/// ```
13051324
///
13061325
/// [`windows`]: slice::windows
@@ -1448,7 +1467,11 @@ unsafe impl<'a, T> TrustedRandomAccessNoCoerce for Windows<'a, T> {
14481467
///
14491468
/// ```
14501469
/// let slice = ['l', 'o', 'r', 'e', 'm'];
1451-
/// let iter = slice.chunks(2);
1470+
/// let mut iter = slice.chunks(2);
1471+
/// assert_eq!(iter.next(), Some(&['l', 'o'][..]));
1472+
/// assert_eq!(iter.next(), Some(&['r', 'e'][..]));
1473+
/// assert_eq!(iter.next(), Some(&['m'][..]));
1474+
/// assert_eq!(iter.next(), None);
14521475
/// ```
14531476
///
14541477
/// [`chunks`]: slice::chunks
@@ -1819,7 +1842,10 @@ unsafe impl<T> Sync for ChunksMut<'_, T> where T: Sync {}
18191842
///
18201843
/// ```
18211844
/// let slice = ['l', 'o', 'r', 'e', 'm'];
1822-
/// let iter = slice.chunks_exact(2);
1845+
/// let mut iter = slice.chunks_exact(2);
1846+
/// assert_eq!(iter.next(), Some(&['l', 'o'][..]));
1847+
/// assert_eq!(iter.next(), Some(&['r', 'e'][..]));
1848+
/// assert_eq!(iter.next(), None);
18231849
/// ```
18241850
///
18251851
/// [`chunks_exact`]: slice::chunks_exact
@@ -2163,7 +2189,11 @@ unsafe impl<T> Sync for ChunksExactMut<'_, T> where T: Sync {}
21632189
/// #![feature(array_windows)]
21642190
///
21652191
/// let slice = [0, 1, 2, 3];
2166-
/// let iter = slice.array_windows::<2>();
2192+
/// let mut iter = slice.array_windows::<2>();
2193+
/// assert_eq!(iter.next(), Some(&[0, 1]));
2194+
/// assert_eq!(iter.next(), Some(&[1, 2]));
2195+
/// assert_eq!(iter.next(), Some(&[2, 3]));
2196+
/// assert_eq!(iter.next(), None);
21672197
/// ```
21682198
///
21692199
/// [`array_windows`]: slice::array_windows
@@ -2285,7 +2315,10 @@ impl<T, const N: usize> ExactSizeIterator for ArrayWindows<'_, T, N> {
22852315
/// #![feature(array_chunks)]
22862316
///
22872317
/// let slice = ['l', 'o', 'r', 'e', 'm'];
2288-
/// let iter = slice.array_chunks::<2>();
2318+
/// let mut iter = slice.array_chunks::<2>();
2319+
/// assert_eq!(iter.next(), Some(&['l', 'o']));
2320+
/// assert_eq!(iter.next(), Some(&['r', 'e']));
2321+
/// assert_eq!(iter.next(), None);
22892322
/// ```
22902323
///
22912324
/// [`array_chunks`]: slice::array_chunks
@@ -2526,7 +2559,11 @@ unsafe impl<'a, T, const N: usize> TrustedRandomAccessNoCoerce for ArrayChunksMu
25262559
///
25272560
/// ```
25282561
/// let slice = ['l', 'o', 'r', 'e', 'm'];
2529-
/// let iter = slice.rchunks(2);
2562+
/// let mut iter = slice.rchunks(2);
2563+
/// assert_eq!(iter.next(), Some(&['e', 'm'][..]));
2564+
/// assert_eq!(iter.next(), Some(&['o', 'r'][..]));
2565+
/// assert_eq!(iter.next(), Some(&['l'][..]));
2566+
/// assert_eq!(iter.next(), None);
25302567
/// ```
25312568
///
25322569
/// [`rchunks`]: slice::rchunks
@@ -2892,7 +2929,10 @@ unsafe impl<T> Sync for RChunksMut<'_, T> where T: Sync {}
28922929
///
28932930
/// ```
28942931
/// let slice = ['l', 'o', 'r', 'e', 'm'];
2895-
/// let iter = slice.rchunks_exact(2);
2932+
/// let mut iter = slice.rchunks_exact(2);
2933+
/// assert_eq!(iter.next(), Some(&['e', 'm'][..]));
2934+
/// assert_eq!(iter.next(), Some(&['o', 'r'][..]));
2935+
/// assert_eq!(iter.next(), None);
28962936
/// ```
28972937
///
28982938
/// [`rchunks_exact`]: slice::rchunks_exact

library/std/src/io/mod.rs

+4-12
Original file line numberDiff line numberDiff line change
@@ -1256,8 +1256,6 @@ impl<'a> IoSliceMut<'a> {
12561256
/// # Examples
12571257
///
12581258
/// ```
1259-
/// #![feature(io_slice_advance)]
1260-
///
12611259
/// use std::io::IoSliceMut;
12621260
/// use std::ops::Deref;
12631261
///
@@ -1268,7 +1266,7 @@ impl<'a> IoSliceMut<'a> {
12681266
/// buf.advance(3);
12691267
/// assert_eq!(buf.deref(), [1; 5].as_ref());
12701268
/// ```
1271-
#[unstable(feature = "io_slice_advance", issue = "62726")]
1269+
#[stable(feature = "io_slice_advance", since = "CURRENT_RUSTC_VERSION")]
12721270
#[inline]
12731271
pub fn advance(&mut self, n: usize) {
12741272
self.0.advance(n)
@@ -1290,8 +1288,6 @@ impl<'a> IoSliceMut<'a> {
12901288
/// # Examples
12911289
///
12921290
/// ```
1293-
/// #![feature(io_slice_advance)]
1294-
///
12951291
/// use std::io::IoSliceMut;
12961292
/// use std::ops::Deref;
12971293
///
@@ -1309,7 +1305,7 @@ impl<'a> IoSliceMut<'a> {
13091305
/// assert_eq!(bufs[0].deref(), [2; 14].as_ref());
13101306
/// assert_eq!(bufs[1].deref(), [3; 8].as_ref());
13111307
/// ```
1312-
#[unstable(feature = "io_slice_advance", issue = "62726")]
1308+
#[stable(feature = "io_slice_advance", since = "CURRENT_RUSTC_VERSION")]
13131309
#[inline]
13141310
pub fn advance_slices(bufs: &mut &mut [IoSliceMut<'a>], n: usize) {
13151311
// Number of buffers to remove.
@@ -1400,8 +1396,6 @@ impl<'a> IoSlice<'a> {
14001396
/// # Examples
14011397
///
14021398
/// ```
1403-
/// #![feature(io_slice_advance)]
1404-
///
14051399
/// use std::io::IoSlice;
14061400
/// use std::ops::Deref;
14071401
///
@@ -1412,7 +1406,7 @@ impl<'a> IoSlice<'a> {
14121406
/// buf.advance(3);
14131407
/// assert_eq!(buf.deref(), [1; 5].as_ref());
14141408
/// ```
1415-
#[unstable(feature = "io_slice_advance", issue = "62726")]
1409+
#[stable(feature = "io_slice_advance", since = "CURRENT_RUSTC_VERSION")]
14161410
#[inline]
14171411
pub fn advance(&mut self, n: usize) {
14181412
self.0.advance(n)
@@ -1434,8 +1428,6 @@ impl<'a> IoSlice<'a> {
14341428
/// # Examples
14351429
///
14361430
/// ```
1437-
/// #![feature(io_slice_advance)]
1438-
///
14391431
/// use std::io::IoSlice;
14401432
/// use std::ops::Deref;
14411433
///
@@ -1452,7 +1444,7 @@ impl<'a> IoSlice<'a> {
14521444
/// IoSlice::advance_slices(&mut bufs, 10);
14531445
/// assert_eq!(bufs[0].deref(), [2; 14].as_ref());
14541446
/// assert_eq!(bufs[1].deref(), [3; 8].as_ref());
1455-
#[unstable(feature = "io_slice_advance", issue = "62726")]
1447+
#[stable(feature = "io_slice_advance", since = "CURRENT_RUSTC_VERSION")]
14561448
#[inline]
14571449
pub fn advance_slices(bufs: &mut &mut [IoSlice<'a>], n: usize) {
14581450
// Number of buffers to remove.

src/bootstrap/src/core/build_steps/compile.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1213,8 +1213,8 @@ fn rustc_llvm_env(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelect
12131213
if builder.config.llvm_use_libcxx {
12141214
cargo.env("LLVM_USE_LIBCXX", "1");
12151215
}
1216-
if builder.config.llvm_optimize && !builder.config.llvm_release_debuginfo {
1217-
cargo.env("LLVM_NDEBUG", "1");
1216+
if builder.config.llvm_assertions {
1217+
cargo.env("LLVM_ASSERTIONS", "1");
12181218
}
12191219
}
12201220

0 commit comments

Comments
 (0)