Skip to content

Commit c1bc5e5

Browse files
Improve cache quality for eh_personality.
1 parent a9b5c63 commit c1bc5e5

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/librustc_trans/context.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -927,26 +927,26 @@ impl<'b, 'tcx> CrateContext<'b, 'tcx> {
927927
// `rust_eh_personality` function, but rather we wired it up to the
928928
// CRT's custom personality function, which forces LLVM to consider
929929
// landing pads as "landing pads for SEH".
930+
if let Some(llpersonality) = self.local().eh_personality.get() {
931+
return llpersonality
932+
}
930933
let tcx = self.tcx();
931-
match tcx.lang_items.eh_personality() {
934+
let llfn = match tcx.lang_items.eh_personality() {
932935
Some(def_id) if !base::wants_msvc_seh(self.sess()) => {
933936
Callee::def(self, def_id, tcx.intern_substs(&[])).reify(self)
934937
}
935938
_ => {
936-
if let Some(llpersonality) = self.local().eh_personality.get() {
937-
return llpersonality
938-
}
939939
let name = if base::wants_msvc_seh(self.sess()) {
940940
"__CxxFrameHandler3"
941941
} else {
942942
"rust_eh_personality"
943943
};
944944
let fty = Type::variadic_func(&[], &Type::i32(self));
945-
let f = declare::declare_cfn(self, name, fty);
946-
self.local().eh_personality.set(Some(f));
947-
f
945+
declare::declare_cfn(self, name, fty)
948946
}
949-
}
947+
};
948+
self.local().eh_personality.set(Some(llfn));
949+
llfn
950950
}
951951

952952
// Returns a ValueRef of the "eh_unwind_resume" lang item if one is defined,

0 commit comments

Comments
 (0)