Skip to content

Commit

Permalink
tests: add regression test for #rust-lang#135332
Browse files Browse the repository at this point in the history
  • Loading branch information
jieyouxu committed Jan 18, 2025
1 parent 8e59cf9 commit de6bd26
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
other::big_function();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
proc::declare_big_function!();
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extern crate proc_macro;
use proc_macro::TokenStream;

#[proc_macro]
pub fn declare_big_function(_input: TokenStream) -> TokenStream {
include_str!("./generated.rs").parse().unwrap()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
//! Regression test for <https://github.com/rust-lang/rust/issues/135332>.
//!
//! We can't simply drop debuginfo location spans when LLVM's location discriminator value limit is
//! reached. Otherwise, with `-Z verify-llvm-ir`, LLVM will report a broken module for
//!
//! ```text
//! inlinable function call in a function with debug info must have a !dbg location
//! ```
//@ only-nightly: requires unstable rustc flag

#![deny(warnings)]

use run_make_support::{dynamic_lib_name, rfs, rust_lib_name, rustc};

// Generate a program that has a *lot*
fn generate_program(n: u32) -> String {
let mut program = String::from("pub type BigType = Vec<Vec<String>>;\n\n");
program.push_str("pub fn big_function() -> BigType {\n");
program.push_str(" vec![\n");
for i in 1..=n {
program.push_str(&format!("vec![\"string{}\".to_owned()],\n", i));
}
program.push_str(" ]\n");
program.push_str("}\n");
program
}

fn main() {
// The reported threshold is around 1366, but let's bump it to around 1500 to be less sensitive.
rfs::write("generated.rs", generate_program(1500));

rustc()
.input("proc.rs")
.crate_type("proc-macro")
.edition("2021")
.opt_level("3")
.arg("-Cdebuginfo=line-tables-only")
.arg("-Clto=fat")
.arg("-Zdylib-lto")
.arg("-Zverify-llvm-ir")
.run();
rustc()
.extern_("proc", dynamic_lib_name("proc"))
.input("other.rs")
.crate_type("rlib")
.edition("2021")
.opt_level("3")
.arg("-Cdebuginfo=line-tables-only")
.arg("-Clto=fat")
.arg("-Zverify-llvm-ir")
.run();
rustc()
.extern_("other", rust_lib_name("other"))
.input("main.rs")
.edition("2021")
.opt_level("3")
.arg("-Cdebuginfo=line-tables-only")
.arg("-Clto=fat")
.arg("-Zverify-llvm-ir")
.run();
}

0 comments on commit de6bd26

Please sign in to comment.