Displaying 20 results from an estimated 30 matches for "dekruijf".
2010 Jul 18
2
[LLVMdev] MemoryDependenceAnalysis Bug or Feature?
...ns we're looking at a store, what this does
> is making the store *p depend on the load *p. This is correct -- you
> can't move store before load, otherwise load will start returning a
> different value.
>
> Eugene
>
> On Fri, Jul 16, 2010 at 5:43 PM, Marc de Kruijf <dekruijf at cs.wisc.edu>
> wrote:
> > Hello,
> >
> > I'm taking a really good look at the MemoryDependenceAnalysis pass, but
> I'm
> > slightly confused about one little thing. I think it's a bug but I'm not
> > confident enough to submit a bug report....
2010 Jul 18
0
[LLVMdev] MemoryDependenceAnalysis Bug or Feature?
...lobber for
MayAlias and Def for MustAlias? With the current logic DSE has to
check that SI->getPointerOperand() == DepLoad->getPointerOperand(),
though this is not strictly necessary -- they can be different values
but be MustAlias.
Eugene
On Sun, Jul 18, 2010 at 2:50 AM, Marc de Kruijf <dekruijf at cs.wisc.edu> wrote:
> Yes, I'm not arguing that there is a dependence, just that it's not a
> clobber dependence. The case of a load is already considered earlier in
> that function and with isLoad == false it returns MemDepResult::getDef().
> My question is: why should...
2010 Feb 26
0
[LLVMdev] BlockAddress is a "User"
My apologies. This problem was indeed with my changes to the backend. Next
time I will more carefully examine the source of the problem. :)
On Fri, Feb 26, 2010 at 12:40 PM, Marc de Kruijf <dekruijf at wisc.edu> wrote:
> I've been playing around with the new IndirectBr and BlockAddress types.
> I'm finding that in CodeGen, during "EliminateMostlyEmptyBlocks",
> BlockAddresses are not updated to point to the newly merged block if the
> original block was elimin...
2010 Feb 26
2
[LLVMdev] BlockAddress is a "User"
I've been playing around with the new IndirectBr and BlockAddress types.
I'm finding that in CodeGen, during "EliminateMostlyEmptyBlocks",
BlockAddresses are not updated to point to the newly merged block if the
original block was eliminated. This is causing me problems. Mind you, I'm
experimenting with this using the Sparc backend, which could be the source
of blame, but
2008 May 02
0
[LLVMdev] Pointer sizes, GetElementPtr, and offset sizes
On Fri, May 2, 2008 at 1:22 PM, Marc de Kruijf <dekruijf at cs.wisc.edu> wrote:
> The LLVA and LLVM papers motivate the GetElementPtr instruction by arguing
> that it abstracts implementation details, in particular pointer size, from
> the compiler. While it does this fine for pointer addresses, it does not
> manage it for address offsets...
2008 May 02
4
[LLVMdev] Pointer sizes, GetElementPtr, and offset sizes
The LLVA and LLVM papers motivate the GetElementPtr instruction by arguing
that it abstracts implementation details, in particular pointer size, from
the compiler. While it does this fine for pointer addresses, it does not
manage it for address offsets. Consider the following code:
$ cat test.c
int main() {
int *x[2];
int **y = &x[1];
return (y - x);
}
$ llvm-gcc -O3 -c test.c
2008 Jul 31
2
[LLVMdev] Unwinds Gone Wild
On Thu, Jul 31, 2008 at 2:19 AM, Duncan Sands <baldrick at free.fr> wrote:
> Hi,
>
> > Can anyone tell me if invoke/unwind is stable in 2.3? I'm seeing some
> > really weird stuff -- unwinds are ending up in seemingly arbitrary
> places...
> > definitely not inside the caller's unwind block My target is x86.
>
> codegen doesn't know how to
2010 Jul 17
0
[LLVMdev] MemoryDependenceAnalysis Bug or Feature?
Since isLoad == false means we're looking at a store, what this does
is making the store *p depend on the load *p. This is correct -- you
can't move store before load, otherwise load will start returning a
different value.
Eugene
On Fri, Jul 16, 2010 at 5:43 PM, Marc de Kruijf <dekruijf at cs.wisc.edu> wrote:
> Hello,
>
> I'm taking a really good look at the MemoryDependenceAnalysis pass, but I'm
> slightly confused about one little thing. I think it's a bug but I'm not
> confident enough to submit a bug report.
>
> Is there a reason why re...
2010 Jul 16
2
[LLVMdev] MemoryDependenceAnalysis Bug or Feature?
Hello,
I'm taking a really good look at the MemoryDependenceAnalysis pass, but I'm
slightly confused about one little thing. I think it's a bug but I'm not
confident enough to submit a bug report.
Is there a reason why read-only calls are considered to "clobber" pointers
in the non-load case (which is what gets returned due to the fall-through in
the switch -- see
2008 Aug 04
1
[LLVMdev] Assertion Failure: Not all catch info was assigned to a landing pad
I'm getting a very stubborn assertion failure that I don't understand.
After I insert a call to an externally defined function into an invoked
function, llc spits out the following assertion failure when I compile the
bytecode:
llc: SelectionDAGISel.cpp:4912: virtual bool
llvm::SelectionDAGISel::runOnFunction(llvm::Function&): Assertion
`FuncInfo.CatchInfoFound.size() ==
2012 Mar 08
0
[LLVMdev] Updating value from PHI
It sounds like Transforms/Utils/SSAUpdater may be what you are looking
for.
A good example of how to use it -- one that sounds very similar to what
you're doing -- can be found in Transforms/Scalar/LoopRotation.cpp
On Wed, Mar 7, 2012 at 2:03 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:
> I am splitting a one BB loop into two BB.
>
> Basically, the one loop BB has 3 incoming
2009 Jul 19
2
[LLVMdev] Unnecessary i16 -> i32 type promotion
If I have an '&' operator inside an 'if' statement, LLVM seems to always
promote a 16 bit integer type to a 32 bit integer type. I don't want this
to happen because my back-end only supports 16 bit types. Why is this
happening? Where might this be happening, so I can fix it? It doesn't seem
to happen with the '|' operator, only '&'. Thanks!
2008 Jul 03
0
[LLVMdev] Plans considering first class structs and multiple return values
> For example, this:
>
> %t0 = insertvalue { i32, i32 } undef, i32 %a, 0
> %t1 = insertvalue { i32, i32 } %t0, i32 %b, 1
>
> creates the value with %a and %b as member values.
Is there anyway to do it using the C++ API? It seems I need an
instance of the aggregate type to pass into InsertValueInst::Create().
What is the API equivalent of "undef"?
Marc
On Wed,
2008 Jul 02
3
[LLVMdev] Plans considering first class structs and multiple return values
Hello,
The basic infrastructure is in place. You can create first-class
structs/arrays using sequences of insertvalue.
For example, this:
%t0 = insertvalue { i32, i32 } undef, i32 %a, 0
%t1 = insertvalue { i32, i32 } %t0, i32 %b, 1
creates the value with %a and %b as member values. Other ways to
produce aggregate values are loads, function arguments, function
return values, and literal
2011 Mar 24
2
[LLVMdev] GCC vs. LLVM difference on simple code example
Hi,
I have a question on why gcc and llvm-gcc compile the following simple code
snippet differently:
extern int a;
extern int *b;
void foo() {
int i;
for (i = 1; i < 100; ++i)
a += b[i];
}
gcc compiles this function hoisting the load of the global variable "b"
outside of the loop, while llvm-gcc keeps it inside the loop. This results
in slower code on the part of
2012 Mar 07
4
[LLVMdev] Updating value from PHI
I am splitting a one BB loop into two BB.
Basically, the one loop BB has 3 incoming values, one form back edge two
from other edges. I want to extract the PHIs from the other two edges out
into it's own BB and delete that from the loop, then redirect the backedge
to the loopbody (non extracted portion) and create a new PHI coming from
the extracted BB and the backedge.
I can do this;
2008 Dec 06
1
[LLVMdev] Intrinsics question
Is it necessary to modify the front-end (in this case, for C) to generate
new intrinsic calls for a particular target? For instance, say I wanted to
allow programmers to call a function "foo" that does some target-specific
magic. I want "foo" to be handled as an intrinsic by the back-end, but all
intrinsics needs the "llvm." prefix, and I can't declare a
2010 Apr 27
3
[LLVMdev] Status of Strong PHI Elimination?
Hello,
I am implementing a code transformation that would heavily benefit from the
CodeGen/StrongPHIElimination pass, but on the two bytecode files I've tested
it on so far llc segfaults on both. I see there have been no substantive
changes to this code since the middle of last year. Could someone please
tell me what the status of this pass is? Thank you.
Marc
-------------- next part
2012 Feb 29
0
[LLVMdev] Thank you for LLVM Register Allocator 3.0!
My research involves subtle changes to register and stack slot allocation
in the LLVM back-end. Working with the old LinearScan + VirtRegMap system
was difficult, to say the least. In fact, after having now ported my stuff
to work with the new "greedy" register allocator, I will even go so far to
say that it was a nightmare. The new register allocator is smooth,
modular, and
2012 Aug 01
0
[LLVMdev] Idempotent Code Generation in LLVM
As part of PhD research I integrated support for code generation of
idempotent (re-executable) code regions into LLVM, along with a supporting
IR-level analysis to identify and demarcate large "semantically" idempotent
regions [1]. Some have expressed interest the code, so here is a link that
contains some documentation and pointers to the source hosted on GitHub: