Displaying 20 results from an estimated 10000 matches similar to: "Deleting function IR after codegen"
2016 Mar 08
3
Deleting function IR after codegen
YES. My use of LLVM involves an app that JITs program after program and will quickly swamp memory if everything is retained. It is crucial to aggressively throw everything away but the functions we still need to execute.
I've been faking it with old JIT (llvm 3.4/3.5) by using a custom subclass of JITMemoryManager that squirrels away the jitted binary code so that when I free the Modules,
2016 Mar 08
2
Deleting function IR after codegen
Thanks for the pointer, it's always helpful to be able to see how another project solved similar problems.
> On Mar 8, 2016, at 11:24 AM, Andy Ayers <andya at microsoft.com> wrote:
>
> FWIW, LLILC (https://github.com/dotnet/llilc) uses MCJIT with a custom memory manager to hold onto the binary bits and discard the rest.
>
> As far as I know it doesn't leak, though
2016 Mar 08
3
Deleting function IR after codegen
> On Mar 8, 2016, at 11:50 AM, Eric Christopher <echristo at gmail.com> wrote:
>
>
>
>
> I could attach a patch, but first i’d really like to know if anyone is fundamentally opposed to this.
>
>
> Not necessarily. I think that any information that isn't being serialized in MI right now for a function could be as well. Definitely something for GlobalISel
2016 May 12
2
Deleting function IR after codegen
----- Original Message -----
> From: "Chandler Carruth" <chandlerc at gmail.com>
> To: "Quentin Colombet" <qcolombet at apple.com>, "Eric Christopher"
> <echristo at gmail.com>
> Cc: "Pete Cooper" <peter_cooper at apple.com>, "Duncan P. N. Exon Smith"
> <dexonsmith at apple.com>, "Hal Finkel"
2016 Feb 05
6
Reducing DWARF emitter memory consumption
Hi all,
We have profiled [1] the memory usage in LLVM when LTO'ing Chromium, and
we've found that one of the top consumers of memory is the DWARF emitter in
lib/CodeGen/AsmPrinter/Dwarf*. I've been reading the DWARF emitter code and
I have a few ideas in mind for how to reduce its memory consumption. One
idea I've had is to restructure the emitter so that (for the most part) it
2014 Jun 24
4
[LLVMdev] Any way get debug output of generated assembly from MCJIT without completely redoing CodeGen?
Hello all,
I'm trying to hack MCJIT::emitObject to optionally output the corresponding text assembly associated with the object code being emitted (if a debug flag is set in the app/dev environment which is hosting LLVM).
I attempted to do this by adding another AsmPrinter pass to the PassManager, but this runs into all sorts of problems because there's only once MCContext and one
2010 Mar 27
2
[LLVMdev] Static code generation - is it gone from LLVM 2.7?
Chris Lattner wrote:
> On Mar 27, 2010, at 12:49 PM, Peter Shugalev wrote:
>
>>>> New method of emitting object code is ok for me. But it is still
>>>> experimental, isn't it?
>>> Yes.
>> Thank you for answers!
>>
>> Now there is a way to implement what I'd like to. But it would be MUCH
>> better if
2010 Mar 27
0
[LLVMdev] Static code generation - is it gone from LLVM 2.7?
On Mar 27, 2010, at 12:49 PM, Peter Shugalev wrote:
>>>
>>> New method of emitting object code is ok for me. But it is still
>>> experimental, isn't it?
>>
>> Yes.
>
> Thank you for answers!
>
> Now there is a way to implement what I'd like to. But it would be MUCH
> better if LLVMTargetMachine::addPassesToEmitFile could take
2010 Mar 27
3
[LLVMdev] Static code generation - is it gone from LLVM 2.7?
Chris Lattner wrote:
> On Mar 27, 2010, at 11:56 AM, Peter Shugalev wrote:
>
>>>> What exactly is expected to be coming? Will it be the same way MachO is
>>>> currently implemented but with some flexibility to supply my own class
>>>> to do actual object output? Or just a return of old ObjectCodeEmitter?
>>> We're integrating a full assembler
2010 Jul 28
3
[LLVMdev] Function-at-a-time Processing
We process very large programs and it is not unusual for the IR for some
compilation unit to exceed system memory. With some hacking in LLVM 2.5
I was able to coax LLVM to generate asm for each functioin as it was
processed and then completely forget about it (i.e. delete it) and move
on to the next function.
This required a bit of hackery. I had to create two pass managers, one
for the module
2010 Mar 29
0
[LLVMdev] Static code generation - is it gone from LLVM 2.7?
On Mar 27, 2010, at 1:50 PM, Peter Shugalev wrote:
> Chris Lattner wrote:
>> On Mar 27, 2010, at 12:49 PM, Peter Shugalev wrote:
>>
>>>>> New method of emitting object code is ok for me. But it is still
>>>>> experimental, isn't it?
>>>> Yes.
>>> Thank you for answers!
>>>
>>> Now there is a way to implement
2013 Dec 04
2
[LLVMdev] DwarfDebug problems
In a pass I’m working on, I’ve done some manipulation of several functions, replacing them with new copies with different types, etc.
The LLVM IR passes the verifier, but when I have debug symbols enabled (“-g”), I get the following error when Clang generates the Dwarf info (using a very recent build of LLVM/Clang from Git mirror):
> Assertion failed: (TheCU && "Unable to find
2016 Feb 06
2
Reducing DWARF emitter memory consumption
Thanks, I'll look into that. (Though earlier you told me that debug info
for types could be extended while walking the IR, so I wouldn't have thought
that would have worked.)
Peter
On Fri, Feb 05, 2016 at 03:52:19PM -0800, David Blaikie wrote:
> Will look more closely soon - but I'd really try just writing out type
> units to MC as soon as they're done. It should be
2014 Jun 24
2
[LLVMdev] Any way get debug output of generated assembly from MCJIT without completely redoing CodeGen?
Yeah, that's probably how I'd do it.
Might be useful if you guys want to contribute that as a command line
option Kevin.
-eric
On Tue, Jun 24, 2014 at 3:03 PM, Kevin Modzelewski <kmod at dropbox.com> wrote:
> We do this in Pyston using a JITEventListener that just disassembles the
> output; it's "it works let's move on"-quality:
>
2011 Sep 05
2
[LLVMdev] Internal API Changes
So, I just sync'd to LLVM tip and added the call to DIBuilder::finalize().
But even with that change I am getting an error when I try to run llc:
Assertion failed: (TheCU && "Unable to find compile unit!"), function
endFunction, file
/Users/talin/Projects/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp, line 1306.
And looking at the .bc dissassembly, I see there are indeed
2013 Dec 04
2
[LLVMdev] DwarfDebug problems
In your transform I'd take a look at things like the individual basic
blocks you're replacing and the functions you're replacing and making
sure that the various lexical blocks are being changed at the same
time...
-eric
On Tue, Dec 3, 2013 at 11:12 PM, David Blaikie <dblaikie at gmail.com> wrote:
> On Tue, Dec 3, 2013 at 10:07 PM, Brandon Holt <bholt at
2016 Sep 24
4
RFC: ConstantData should not have use-lists
r261464 added a type called ConstantData to the Value hierarchy. This
is a parent type for constants with no operands, such as i32 0 and null.
Since then, I've removed most instances of iterating through the
use-lists of an instance of ConstantData. I'd like to make this
illegal. Since the users of ConstantData are spread across an
LLVMContext, most code that looks at the users is
2013 Dec 04
2
[LLVMdev] DwarfDebug problems
Thanks for the quick response.
I wrote some code to search “llvm.dbg.cu” for the function (right before the failed assertion):
if (TheCU == nullptr) {
errs() << "compile unit: " << TheCU << "\n scopeNode(" << FnScope->getScopeNode() << ") => " << *FnScope->getScopeNode() << "\n";
auto fn =
2013 Dec 04
0
[LLVMdev] DwarfDebug problems
On Tue, Dec 3, 2013 at 9:04 PM, Brandon Holt <bholt at cs.washington.edu> wrote:
> In a pass I’m working on, I’ve done some manipulation of several functions, replacing them with new copies with different types, etc.
>
> The LLVM IR passes the verifier, but when I have debug symbols enabled (“-g”), I get the following error when Clang generates the Dwarf info (using a very recent
2010 Apr 16
2
[LLVMdev] Intro to the MC Project
I do have an opinion, but don't have enough time to comment in much depth. The approximate approach I had in mind sounds like what you describe, though, the JITObjectWriter is the core piece, the other pieces probably fall into place as it becomes obvious if they are needed.
It should be pretty straightforward to bring up something which works for running code with no external symbols, if you