[llvm-dev] CloneFunction during LTO leads to seg fault?
Scott A. Carr via llvm-dev
llvm-dev at lists.llvm.org
Tue Feb 9 10:24:58 PST 2016
Hello,
I'm writing an LTO pass and I'd like to be able to duplicate a function
(with debugging info). I'm trying to accomplish this with CloneFunction
but it's leading to a seg fault in ld.
I've whittled down my problem so that it occurs in this small pass [1].
If I run this pass with opt, I get the expected result (i.e. a valid
program that calls main twice). If I run the pass during LTO, ld seg
faults. Here is a pastebin of when ld seg faults in lldb [2].
If I set the third parameter of CloneFunction (ModuleLevelChanges) to
false, then then compilation will complete -- but I lose debugging
information in the cloned function. I really want to preserve the debug
info.
Any idea what is wrong? Is this a bug? Usually when I screw up the
module the verifier catches the problem. This is getting to I think
CodeGen then crashing.
I've found that the module itself needs to be non-trivial to cause the
crash. Here is the module I'm testing with [3].
In case it is relevant: to get my pass to run during LTO I added
"PM.add(createHelloPass())" to
PassMangerBuilder::populateLTOPassManager. I'm using binutils-gold on
Linux (Ubuntu 14.04 LTS).
Thank you,
Scott A. Carr
PhD Candidate
Purdue University
[1] http://pastebin.com/uL6QMtcT
[2] http://pastebin.com/i1gd0gE6
[3] http://pastebin.com/GEG0F8kU
More information about the llvm-dev
mailing list