Displaying 20 results from an estimated 6000 matches similar to: "Fwd: extending liveness of 'this' pointer via FAKE_USE opcode"
2015 Sep 21
5
extending liveness of 'this' pointer via FAKE_USE opcode
Hello!
At Sony we've seen some serious customer interest in having the 'this' pointer visible throughout an entire function during
debugging. However, optimizations may eliminate it after its last use, so we've been looking for a way to artificially extend its
liverange to the end of the function.
So far, the most compelling way we can think of, and one we have used successfully
2015 Sep 22
2
extending liveness of 'this' pointer via FAKE_USE opcode
We thought about putting the 'this' pointer into memory but that would mean that even small member functions would acquire a stack frame (on architectures where leaf routines can get away without one), which may degrade performance considerably. You could apply some heuristics and determine when a store is unnecessary, but inlining may complicate things. A fake_use operation would be
2016 Jul 11
5
Preventing LLVM from optimizing out a variable
I have code along the lines of:
void foo(struct A *a) {
struct B *b = a->m_B;
/* do a whole bunch of things with b */
}
When LLVM generates code for this, it sees that after initializing b, a is
no longer used, so it is optimized out.
Unfortunately, for debug, I'd like the value for a to be kept around, if
only so that I can determine the value of b and go from there. I
2018 Jan 29
2
Debuggability of -O1 level
Hello all,
I've found an old post (November 2016)
http://lists.llvm.org/pipermail/llvm-dev/2016-November/107006.html which
discussed debug information for optimized code. At the end of that
discussion, Adrian broached the interest in making -O1 only enable
optimizations. I see in the code (
*clang/lib/Frontend/CompilerInvocation.cpp*, in function
*getOptimizationLevel*) that *-Og* option is
2018 Jul 12
2
debug_rnglists status
Hello Wolfgang and team,
I see that you are working on support of .debug_rnglists, I am
interested in the feature too, could you please point me out what else
left to be done so that I could help you?
--
Best Regards,
Victor Leschuk | Software Engineer | Access Softek
2018 Jan 29
2
Debuggability of -O1 level
My experience is that just running mem2reg (while disabling virtually all
other passes ) in O1 will substantially improve debuggability while giving
acceptable performance.
On Mon, Jan 29, 2018 at 11:39 AM, via llvm-dev <llvm-dev at lists.llvm.org>
wrote:
> (Remembering to +llvm-dev this time…)
>
>
>
> There has been some progress in the direction of improving debuggability
2018 Jan 29
0
Debuggability of -O1 level
(Remembering to +llvm-dev this time…)
There has been some progress in the direction of improving debuggability of optimized code, in the past year. There have been a number of patches to improve tracking of debug info in various passes, and some more general improvements such as work on the LiveDebugValues pass. I don't think anyone has done a specific analysis to identify passes that lose
2018 Jul 12
2
debug_rnglists status
Hi Victor,
The work Wolfgang is doing should get us to the "minimum syntactically
correct DWARF v5" stage, which we really wanted to have for LLVM 7.0.
That is, once we have .debug_rnglists and .debug_loclists done, you can
ask for DWARF 5 and get something that conforms to the spec. However,
it won't conform if you ask for type units (I'm working on that) or
split DWARF.
If
2018 Jan 29
2
Debuggability of -O1 level
Hi,
I'm not sure which passes exactly drop debug info, but it's likely that most of them do. If you're interested in working on this problem, I suggest experimenting with the debugify utility in opt. This tool can be used to identify passes which drop debug info and to generate targeted/reduced test cases for specific problems. To use it, you can add the '-enable-debugify'
2018 Feb 05
0
Debuggability of -O1 level
Hello Paul, François and Vedant,
Thank you all for your answers. And sorry for this late reply. I wanted to
dig more into the LLVM source code to get a better understanding of the
debug part of it before replying/asking more questions.
I have came across this
https://llvm.org/docs/SourceLevelDebugging.html#debugging-optimized-code
which stated that
"*Basically, the debug information allows
2012 Aug 15
3
[LLVMdev] MI bundle liveness attributes
On Aug 13, 2012, at 8:34 AM, Sergei Larin <slarin at codeaurora.org> wrote:
> Andy,
>
> Yes, this is what Arnold has suggested also, and from this point it looks
> like it should work, but it will require parsing the bundle every time we
> care to know whether this is a real use or a conditional def. This might
> become awkward... but I guess I should provide a better
2017 Jul 06
2
[DWARFv5] Reading the .debug_str_offsets section
> -----Original Message-----
> From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Pieb,
> Wolfgang via llvm-dev
> Sent: Wednesday, July 05, 2017 6:14 PM
> To: llvm-dev at lists.llvm.org
> Subject: Re: [llvm-dev] [DWARFv5] Reading the .debug_str_offsets section
>
> > -----Original Message-----
> > From: llvm-dev [mailto:llvm-dev-bounces at
2013 Oct 07
1
[LLVMdev] Subregister liveness tracking
I've been working on patches to improve subregister liveness tracking on
llvm and I wanted to inform the llvm community about the overal
design/motivation for them. I will send the patches to llvm-commits
later today.
Greetings
Matthias Braun
Subregisters in llvm
====================
Some targets can access registers in different ways resulting in wider or
narrower accesses. For
2013 Oct 08
2
[LLVMdev] Subregister liveness tracking
Currently it will always spill / restore the whole vreg but only
spilling the parts that are actually live would be a nice addition in
the future.
Looking at r192119': if "mtlo" writes to $LO and sets $HI to an
unpredictable value, then it should just have an additional (dead) def
operand for $hi, shouldn't it?
Greetings
Matthias
Am 10/8/13, 11:03 AM, schrieb Akira
2013 Oct 08
0
[LLVMdev] Subregister liveness tracking
What I didn't mention in r192119 is that mthi/lo clobbers the other
sub-register only if the contents of hi and lo are produced by mult or
other arithmetic instructions (div, madd, etc.) It doesn't have this
side-effect if it is produced by another mthi/lo. So I don't think making
mthi/lo clobber the other half would work.
For example, this is an illegal sequence of instructions,
2013 Oct 09
4
[LLVMdev] Subregister liveness tracking
On Oct 8, 2013, at 2:06 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> What I didn't mention in r192119 is that mthi/lo clobbers the other sub-register only if the contents of hi and lo are produced by mult or other arithmetic instructions (div, madd, etc.) It doesn't have this side-effect if it is produced by another mthi/lo. So I don't think making mthi/lo clobber the
2008 Jan 17
1
[LLVMdev] LiveInterval Questions
On Thursday 17 January 2008 13:03, Evan Cheng wrote:
> > So why does the live range extend throughout the entire basic block?
> >
> > %reg1055 doesn't appear anywhere else in the program so it shouldn't
> > be
> > live-in to the block.
>
> It could be a bug. Can you get me a test case?
I'll see if I can whittle it down. It's a pretty huge
2008 Jan 17
0
[LLVMdev] LiveInterval Questions
On Jan 16, 2008, at 11:49 AM, David Greene wrote:
> I had been assuming that give a LiveRange a, a.valno->def, if
> valid, would be the same as a.start. But this is apparently not
> always the case. For example:
>
> Predecessors according to CFG: 0x839d130 (#3) 0x8462780 (#35)
> 308 %reg1051 = MOV64rr %reg1227<kill>
> 312 %reg1052 = MOV64rr %reg1228<kill>
2008 Jan 16
4
[LLVMdev] LiveInterval Questions
I had been assuming that give a LiveRange a, a.valno->def, if
valid, would be the same as a.start. But this is apparently not
always the case. For example:
Predecessors according to CFG: 0x839d130 (#3) 0x8462780 (#35)
308 %reg1051 = MOV64rr %reg1227<kill>
312 %reg1052 = MOV64rr %reg1228<kill>
316 %reg1053 = MOV64rr %reg1229<kill>
320 %reg1054 = MOV64rr
2017 Jul 05
2
[DWARFv5] Reading the .debug_str_offsets section
There was some discussion about this in D34765, and I had a follow-up
chat with Wolfgang separately, plus spent a fair amount of time in
reading and thinking today. I thought I would write my understanding
all down here so we can reach a common understanding of how it ought
to work, and therefore what our code should do.
For any non-DWARF-experts who might be interested, in principle this