Displaying 20 results from an estimated 200 matches similar to: "[LLVMdev] [PATCH] [MachineSinking] Conservatively clear kill flags after coalescing."
2014 Sep 05
5
[LLVMdev] [PATCH] [MachineSinking] Conservatively clear kill flags after coalescing.
On Sep 5, 2014, at 10:21 AM, Juergen Ributzka <juergen at apple.com> wrote:
> clearKillFlags seems a little "overkill" to me. In this case you could just simply transfer the value of the kill flag from the SrcReg to the DstReg.
We are extending the live-range of SrcReg. I do not see how you could relate that to the kill flag of DstReg.
Therefore, I still think, this is the
2015 Oct 13
2
MachineSink optimization in code containing a setjmp
Hello LLVM-dev,
I think I've found an issue with the MachineSink optimization on a program
that uses setjmp. It looks like MachineSink will happily move a machine
instruction into a following machine basic block (not necessarily a
successor), even when that later block can be reached through a setjmp.
Here is some example debug output from llc that I'm seeing:
Sinking along critical
2018 May 08
3
DEBUG INFO: improve handling of DBG_VALUEs and DebugLocs in CodeGen
Hi, (Resent with proper subject line)
I recently found myself in trouble because the crash I had disappeared
with -g, so I could not debug the program. This happened because the
optimizer did not remember to consider DBG_VALUEs instruction so it
changed its behavior, and the bug went hiding.
I then started discussing this onhttps://reviews.llvm.org/D45878, and
2018 May 08
0
DEBUG INFO: improve handling of DBG_VALUEs and DebugLocs in CodeGen
> On May 7, 2018, at 11:29 PM, Jonas Paulsson via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hi, (Resent with proper subject line)
>
> I recently found myself in trouble because the crash I had disappeared
> with -g, so I could not debug the program. This happened because the
> optimizer did not remember to consider DBG_VALUEs
2011 Jun 02
2
[LLVMdev] MachineSink and EFLAGS
On Jun 2, 2011, at 12:58 PM, Bill Wendling wrote:
> On Jun 2, 2011, at 3:53 AM, Galanov, Sergey wrote:
>
>> Hi Bill.
>>
>> Thank you very much! Now I see my understanding was incorrect :) A dependence from a single physreg-defining instruction (like CMP or TEST) is allowed to be shared in several instructions unless that register is not clobbered (and this is what we
2011 Jun 03
2
[LLVMdev] MachineSink and EFLAGS
On Jun 3, 2011, at 2:59 AM, Galanov, Sergey wrote:
> Hi, Bill and Jakob.
>
> I don't quite understand. I am talking about CMOV_GR* instructions which are conservatively marked as clobbering EFLAGS in X86InstrCompiler.td. Doesn't that mean there cannot be any use of EFLAGS in subsequent instructions before it is defined by some other instruction?
>
> I also don't
2011 Jun 03
0
[LLVMdev] MachineSink and EFLAGS
Hi, Bill and Jakob.
I don't quite understand. I am talking about CMOV_GR* instructions which are conservatively marked as clobbering EFLAGS in X86InstrCompiler.td. Doesn't that mean there cannot be any use of EFLAGS in subsequent instructions before it is defined by some other instruction?
I also don't understand the remark about resetting EFLAGS. What kind of reset is meant? In case
2011 Jun 01
0
[LLVMdev] MachineSink and EFLAGS
On Jun 1, 2011, at 9:18 AM, Galanov, Sergey wrote:
> Hello.
>
> I am not sure this is the right place to ask but here is my question. About a year ago there was a fix of some obscure bug (rdar://problem/8030636 which is located on the internal Apple bugtracker I believe and so not available to the general public J)
> Some discussion can be found here:
2011 Jun 05
1
[LLVMdev] MachineSink and EFLAGS
Thanks for spelling it out, now I understand.
On Jun 5, 2011, at 6:11 AM, Galanov, Sergey wrote:
> Well, the point is CMOV_GR* are marked clobbering EFLAGS conservatively just in case they turn out to be lowered into a sequence containing XOR %reg,%reg which indeed clobbers EFLAGS. This means there might not be any instruction which actually uses this EFLAGS value.
This actually looks like a
2015 May 13
8
[LLVMdev] RFC: Convergent attribute
Below is a proposal for a new "convergent" intrinsic attribute and MachineInstr property, needed for correctly modeling many SPMD/SIMT programming models in LLVM. Comments and feedback welcome.
—Owen
In order to make LLVM more suitable for programming models variously called SPMD
and SIMT, we would like to propose a new intrinsic and MachineInstr annotation
called
2011 Jun 01
2
[LLVMdev] MachineSink and EFLAGS
Hello.
I am not sure this is the right place to ask but here is my question. About a year ago there was a fix of some obscure bug (rdar://problem/8030636 which is located on the internal Apple bugtracker I believe and so not available to the general public :))
Some discussion can be found here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20100531/102160.html. Unfortunately, no
2013 Sep 06
5
[LLVMdev] Extracting libmachine from libcodegen (bug 1121)
Hi,
One of the long-standing code clean-up bugs in Bugzilla is to extract
the Machine* code from the CodeGen library into a separate one, on
which CodeGen depends (
http://llvm.org/bugs/show_bug.cgi?id=1121).
I'd like to start working on this. The general approach I'm planning to take is:
1. Identify which code to move.
2. Eliminate all dependencies that the Machine code has on the
2020 Feb 24
5
[RFC] DebugInfo: A different way of specifying variable locations post-isel
Hi debuginfo cabal,
tl;dr: I'd like to know what people think about an alternative to
DBG_VALUE instructions describing variable locations in registers,
virtual or real. Before instruction selection in LLVM-IR we identify
the _values_ of variables [0] by the instruction that computes the
value; I believe we should be able to do the same post-isel, and it
would avoid having to analyse register
2017 Jul 27
2
GEP with a null pointer base
David,
-fsanitize=undefined sounds great, but is not quite what I want.
I recently ran into a problem with "CodeGen/MachineSink.cpp” [*], for a target
that has to expand Select into control flow.
The original IR had two select in a row that were based on the same condition,
so the CMP that sets the FLAGS reg in the second select was MCSE’ed to the
earlier CMP in the first
2017 Jul 28
2
GEP with a null pointer base
Dave,
The way I see it there should be just one pass that implements
deleting UB (maybe it would come to be called UBCE), and that one pass
should have a command line option simply for the reason than all passes
should have one.
Peter Lawrence.
> On Jul 26, 2017, at 10:02 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
>
> On Wed, Jul 26, 2017 at 9:23 PM
2020 Nov 06
2
[DebugInfo] A value-tracking variable location update
Hi debug-info folks,
Time for another update on the variable location "instruction referencing"
implementation I've been doing, see this RFC [0, 1] for background. It's now at
the point where I'd call it "done" (as far as software ever is), and so it's a
good time to look at what results it produces. And here are the
scores-on-the-doors using llvm-locstats, on
2015 May 14
2
[LLVMdev] RFC: Convergent attribute
Why is this a regalloc problem? I assume in the example below the "r0" is somehow forced by the ABI? Because otherwise moving the texture2d operation into the branch wouldn't matter as long as we assign different registers to the two branches and use a technique like lib/Target/R600/SIFixSGPRLiveRanges.cpp.
- Matthias
> On May 13, 2015, at 6:00 PM, Philip Reames <listmail at
2015 Aug 14
2
[LLVMdev] RFC: Convergent attribute
Hi Jingyue,
Convergent is not intended to prevent inlining. It’s tricky to formalize this inter-procedurally, but the intended interpretation is that a convergent operation cannot be move either into or out of a conditionally executed region. Normal inlining would not violate that.
I would imagine that it would make sense to use a combination of convergent and noduplicate for barrier-like
2020 Feb 25
2
[RFC] DebugInfo: A different way of specifying variable locations post-isel
Hi Vedant, thanks for the detailed response,
On Tue, Feb 25, 2020 at 7:23 AM Vedant Kumar <vedant_kumar at apple.com> wrote:
> > Finally, being forced to always specify both the machine location and
> > the program location at the same time (in a single DBG_VALUE)
> > introduces un-necessary burdens. In MachineSink, when we sink between
> > blocks an instruction that
2017 Jul 31
2
GEP with a null pointer base
Dave,
Dead code elimination is generally done in a pass called dead code elimination,
Can you give concrete examples why the same would not be true for UB code elimination ?
Yes, speculatively hoisting code requires it to be UB-free, but that has nothing to do with
UBCE deleting entire blocks of code because of the existence of UB. The former requires
an analysis proving UB-absense, the