enable fp-elim when debug info is disabled
This can almost be fully disabled, as it no longer breaks retrieving a backtrace on OS X as verified by @alexcrichton. However, it still breaks retrieving the values of parameters. This should be fixable in the future via a proper location list... Closes #7477
This commit is contained in:
parent
17c42db6d1
commit
cb263e875e
@ -128,6 +128,9 @@ pub fn run_passes(sess: Session,
|
||||
};
|
||||
let use_softfp = sess.opts.debugging_opts & session::USE_SOFTFP != 0;
|
||||
|
||||
// FIXME: #11906: Omitting frame pointers breaks retrieving the value of a parameter.
|
||||
let no_fp_elim = sess.opts.debuginfo;
|
||||
|
||||
let tm = sess.targ_cfg.target_strs.target_triple.with_c_str(|T| {
|
||||
sess.opts.target_cpu.with_c_str(|CPU| {
|
||||
sess.opts.target_feature.with_c_str(|Features| {
|
||||
@ -137,7 +140,8 @@ pub fn run_passes(sess: Session,
|
||||
lib::llvm::RelocPIC,
|
||||
OptLevel,
|
||||
true,
|
||||
use_softfp
|
||||
use_softfp,
|
||||
no_fp_elim
|
||||
)
|
||||
})
|
||||
})
|
||||
|
@ -1728,7 +1728,8 @@ pub fn LLVMRustCreateTargetMachine(Triple: *c_char,
|
||||
Reloc: RelocMode,
|
||||
Level: CodeGenOptLevel,
|
||||
EnableSegstk: bool,
|
||||
UseSoftFP: bool) -> TargetMachineRef;
|
||||
UseSoftFP: bool,
|
||||
NoFramePointerElim: bool) -> TargetMachineRef;
|
||||
pub fn LLVMRustDisposeTargetMachine(T: TargetMachineRef);
|
||||
pub fn LLVMRustAddAnalysisPasses(T: TargetMachineRef,
|
||||
PM: PassManagerRef,
|
||||
|
@ -68,7 +68,8 @@ LLVMRustCreateTargetMachine(const char *triple,
|
||||
Reloc::Model RM,
|
||||
CodeGenOpt::Level OptLevel,
|
||||
bool EnableSegmentedStacks,
|
||||
bool UseSoftFloat) {
|
||||
bool UseSoftFloat,
|
||||
bool NoFramePointerElim) {
|
||||
std::string Error;
|
||||
Triple Trip(Triple::normalize(triple));
|
||||
const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Trip.getTriple(),
|
||||
@ -79,7 +80,7 @@ LLVMRustCreateTargetMachine(const char *triple,
|
||||
}
|
||||
|
||||
TargetOptions Options;
|
||||
Options.NoFramePointerElim = true;
|
||||
Options.NoFramePointerElim = NoFramePointerElim;
|
||||
Options.EnableSegmentedStacks = EnableSegmentedStacks;
|
||||
Options.FloatABIType = FloatABI::Default;
|
||||
Options.UseSoftFloat = UseSoftFloat;
|
||||
|
@ -244,6 +244,3 @@ fn main() {
|
||||
while_expr(40, 41, 42);
|
||||
loop_expr(43, 44, 45);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user