Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lazy anon const default substs #4

Closed
wants to merge 73 commits into from
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
5e7fed1
Add a regression test for issue-63355
JohnTitor Jun 30, 2021
5c9bd9c
Recover from a misplaced inner doc comment
Aaron1011 Jul 2, 2021
34ff259
Add help on reinitialization between move and access
ptrojahn May 19, 2021
ae33a97
Set personality with LLVMSetPersonalityFn
tmiasko Jul 7, 2021
f612ba1
Use existing declaration of rust_eh_personality
tmiasko Jul 7, 2021
fd406a8
Give a helpful error for the mistake `..==`
inquisitivecrystal Jun 26, 2021
b56079e
Add diagnostics test for mistyped inclusive ranges
inquisitivecrystal Jul 11, 2021
e32ecee
Remove unnecessary CrateNum from Cache.externs
jyn514 Jul 5, 2021
a30fa08
Remove trival `impl Clean for CrateNum`
jyn514 Jul 5, 2021
7c98b3c
Keep metadata when using gc-sections with profile-generate.
JamieCunliffe Jul 8, 2021
dc639c9
Warn about useless assignments of variables/fields to themselves
FabianWolff Jul 14, 2021
47ea2ae
Separate encoding paths.
cjgillot Jun 24, 2021
c2d43e1
Simplify metadata decoding.
cjgillot Jun 27, 2021
1a90004
Added diagnostic items to functions for Clippy
xFrednet Jul 15, 2021
d38f2b0
Added diagnostic items to structs and traits for Clippy
xFrednet Jul 15, 2021
0d3d6f0
fix typo in compile_fail doctest
RalfJung Jul 16, 2021
774a79e
Mark `Option::insert` as must_use
oxalica Jul 16, 2021
ce59f1a
Consider all fields when comparing DllImports, to remove nondetermini…
ricobbe Jul 12, 2021
9b874c4
Check that const parameters of trait methods have compatible types
FabianWolff Jul 3, 2021
6ffb6c4
rustc_middle: remove redundant clone
matthiaskrgr Jul 16, 2021
67002db
Corrected symbol order after adding diagnostic items
xFrednet Jul 17, 2021
6e78d6c
Make the CrateNum part of the ExpnId.
cjgillot Jul 10, 2021
078dd37
Use LocalExpnId where possible.
cjgillot Jun 25, 2021
2fe37c5
Choose encoding format in caller code.
cjgillot Jun 27, 2021
37a13de
Encode ExpnId using ExpnHash for incr. comp.
cjgillot Jun 27, 2021
dbd2d77
Drop orig_id.
cjgillot Jun 27, 2021
41c1f39
Drop ExpnData::krate.
cjgillot Jun 27, 2021
a51b131
Always hash spans in expn.
cjgillot Jun 27, 2021
0f8573e
Pass ExpnData by reference.
cjgillot Jul 12, 2021
dddaa6d
Rename expn_info -> expn_data.
cjgillot Jul 15, 2021
b35ceee
Simplify Expn creation.
cjgillot Jul 15, 2021
68511b5
Auto merge of #86676 - cjgillot:localexpn, r=petrochenkov
bors Jul 17, 2021
d954a8e
Some perf optimizations and logging
jackh726 Jul 16, 2021
fa839b1
Add needs_normalization
jackh726 Jul 16, 2021
c7331d6
Auto merge of #87203 - jackh726:logging, r=nikomatsakis
bors Jul 17, 2021
eb0b95b
Auto merge of #87129 - FabianWolff:issue-75356, r=varkor
bors Jul 17, 2021
77d1559
Auto merge of #85686 - ptrojahn:loop_reinitialize, r=estebank
bors Jul 18, 2021
ddd5448
Compute a better `lint_node_id` during expansion
Aaron1011 Jul 14, 2021
2bd15a2
Add missing `visit_expr_field`
Aaron1011 Jul 15, 2021
d6e3c11
Add additional missing lint handling logic
Aaron1011 Jul 15, 2021
7ca089c
Only use `assign_id!` for ast nodes that support attributes
Aaron1011 Jul 17, 2021
1c1c794
Add test for `#[allow]` for warnings on attribute macro
Aaron1011 Jul 17, 2021
76300d5
Rollup merge of #86763 - JohnTitor:test-63355, r=oli-obk
JohnTitor Jul 18, 2021
469935f
Rollup merge of #86814 - Aaron1011:inner-doc-recover, r=estebank
JohnTitor Jul 18, 2021
783efd2
Rollup merge of #86843 - FabianWolff:issue-86820, r=lcnr
JohnTitor Jul 18, 2021
eef5108
Rollup merge of #86889 - jyn514:crate-cleanup, r=camelid
JohnTitor Jul 18, 2021
81d0b70
Rollup merge of #87092 - ricobbe:fix-raw-dylib-multiple-definitions, …
JohnTitor Jul 18, 2021
07faa2e
Rollup merge of #87170 - xFrednet:clippy-5393-add-diagnostic-items, r…
JohnTitor Jul 18, 2021
c1ee9a3
Rollup merge of #87183 - RalfJung:option-doctest, r=jyn514
JohnTitor Jul 18, 2021
810e478
Rollup merge of #87205 - matthiaskrgr:clippy_cln, r=oli-obk
JohnTitor Jul 18, 2021
3ab6b60
Auto merge of #87071 - inquisitivecrystal:inclusive-range, r=estebank
bors Jul 18, 2021
5a8a441
Auto merge of #87242 - JohnTitor:rollup-t9rmwpo, r=JohnTitor
bors Jul 18, 2021
81241cb
Move OnDiskCache to rustc_query_impl.
cjgillot Jun 28, 2021
5b92150
Remove deadlock virtual call.
cjgillot Jun 28, 2021
1807305
Auto merge of #86698 - cjgillot:modc, r=estebank
bors Jul 18, 2021
0fcd59a
update Miri
RalfJung Jul 18, 2021
331da58
Auto merge of #87252 - RalfJung:miri, r=RalfJung
bors Jul 18, 2021
dbd4fd5
feat(rustc_lint): add `dyn_drop`
notriddle Jul 3, 2021
83d3a94
Add `#![allow(dyn_drop)]` to test cases with `dyn Drop` in them
notriddle Jul 3, 2021
e054522
fix(clippy): add missing allow(dyn_drop)
notriddle Jul 18, 2021
5921685
Auto merge of #86950 - tmiasko:personality, r=nagisa
bors Jul 18, 2021
b548d9f
Auto merge of #87004 - JamieCunliffe:pgo-gc-sections, r=Mark-Simulacrum
bors Jul 18, 2021
10c0b00
Auto merge of #86848 - notriddle:notriddle/drop-dyn, r=varkor
bors Jul 19, 2021
0ecff8c
Auto merge of #87146 - Aaron1011:better-macro-lint, r=petrochenkov
bors Jul 19, 2021
83f0822
Auto merge of #87196 - oxalica:option-insert-must-use, r=joshtriplett
bors Jul 19, 2021
3372f27
require a `tcx` for `TypeVisitor`
lcnr Mar 13, 2021
1bc1691
make unevaluated const substs optional
lcnr Mar 15, 2021
2e13be1
add `tcx` to `fn walk`
lcnr Jul 17, 2021
80423d6
update `TypeFlags` to deal with missing ct substs
lcnr Jul 17, 2021
3ea3257
don't just compare `ty::Const`
lcnr Jul 19, 2021
d823155
check for cycles in `default_anon_const_substs`
lcnr Jul 19, 2021
4b8eae1
use `ty::Unevaluated` instead of def substs pair
lcnr Jul 19, 2021
ddae395
ignore const substs in `implicit_infer`
lcnr Jul 19, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion compiler/rustc_codegen_llvm/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -928,8 +928,12 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
pers_fn: &'ll Value,
num_clauses: usize,
) -> &'ll Value {
// Use LLVMSetPersonalityFn to set the personality. It supports arbitrary Consts while,
// LLVMBuildLandingPad requires the argument to be a Function (as of LLVM 12). The
// personality lives on the parent function anyway.
self.set_personality_fn(pers_fn);
unsafe {
llvm::LLVMBuildLandingPad(self.llbuilder, ty, pers_fn, num_clauses as c_uint, UNNAMED)
llvm::LLVMBuildLandingPad(self.llbuilder, ty, None, num_clauses as c_uint, UNNAMED)
}
}

Expand Down
11 changes: 8 additions & 3 deletions compiler/rustc_codegen_llvm/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -386,11 +386,16 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
} else {
"rust_eh_personality"
};
let fty = self.type_variadic_func(&[], self.type_i32());
self.declare_cfn(name, llvm::UnnamedAddr::Global, fty)
if let Some(llfn) = self.get_declared_value(name) {
llfn
} else {
let fty = self.type_variadic_func(&[], self.type_i32());
let llfn = self.declare_cfn(name, llvm::UnnamedAddr::Global, fty);
attributes::apply_target_cpu_attr(self, llfn);
llfn
}
}
};
attributes::apply_target_cpu_attr(self, llfn);
self.eh_personality.set(Some(llfn));
llfn
}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_llvm/src/llvm/ffi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1165,7 +1165,7 @@ extern "C" {
pub fn LLVMBuildLandingPad(
B: &Builder<'a>,
Ty: &'a Type,
PersFn: &'a Value,
PersFn: Option<&'a Value>,
NumClauses: c_uint,
Name: *const c_char,
) -> &'a Value;
Expand Down
24 changes: 24 additions & 0 deletions src/test/ui/panic-runtime/incompatible-type.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Check that rust_eh_personality can have a different type signature than the
// one hardcoded in the compiler. Regression test for #70117. Used to fail with:
//
// Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
//
// build-pass
// compile-flags: --crate-type=lib -Ccodegen-units=1
#![no_std]
#![panic_runtime]
#![feature(panic_runtime)]
#![feature(rustc_attrs)]

pub struct DropMe;

impl Drop for DropMe {
fn drop(&mut self) {}
}

pub fn test(_: DropMe) {
unreachable!();
}

#[rustc_std_internal_symbol]
pub unsafe extern "C" fn rust_eh_personality() {}