Displaying 20 results from an estimated 7000 matches similar to: "[LLVMdev] replacing a global variable by a constant"
2008 Dec 05
0
[LLVMdev] replacing a global variable by a constant
Hi Ralf,
> I am trying to replace a global variable with a constant.
You should be able to replace the initializer for the global with your
constant, mark it as having internal linkage and then run some optimization
pass over it to do the rest (not sure which one it was again, probably some
constant propagation or global value optimization).
That pass would then probably do some similar
2008 Dec 05
1
[LLVMdev] replacing a global variable by a constant
Thanks a lot for your help Matthijs! :)
basically this does the job quite nicely I think:
for (llvm::GlobalVariable::use_iterator U = gv->use_begin(); U !=
gv->use_end(); ++U) {
llvm::Instruction *I = llvm::cast<llvm::Instruction>(U);
I->replaceAllUsesWith(constPtr);
I->eraseFromParent();
}
Cheers,
Ralf
Matthijs Kooijman wrote:
> Hi Ralf,
>
>
>> I
2015 May 25
2
[LLVMdev] global variable uses
Hi,
I'm trying to change all uses of a global variable so they'll use a
different global variable.
For instance, I have:
@a = global [100 x [100 x i64]] zeroinitializer, align 16
@b = global [100 x [100 x i64]] zeroinitializer, align 16
And I want to change the use
%arrayidx = getelementptr inbounds [100 x [100 x i64]]* @a, i32 0, i64 %3
to
%arrayidx = getelementptr inbounds
2014 Aug 09
3
[LLVMdev] difference between replaceAllUsesWith and replaceUsesOfWith?
On Sat, Aug 9, 2014 at 6:06 AM, Tim Northover <t.p.northover at gmail.com>
wrote:
> Hi Rob,
>
> On 9 August 2014 02:03, Rob Jansen <jansen at cs.umn.edu> wrote:
> > Why is the first for loop not equivalent to the second?
>
> In the second loop, "*ui" is an llvm::Use object. It's owned by a
> User, but isn't a subclass of one. To match the
2014 Aug 09
2
[LLVMdev] difference between replaceAllUsesWith and replaceUsesOfWith?
Why is the first for loop not equivalent to the second?
Thanks,
Rob
===========================
for (GlobalVariable **i = Globals.begin(), **e = Globals.end(); i != e;
++i) {
GlobalVariable *GV = *i;
Constant *GEP = ConstantExpr::getGetElementPtr(...);
GV->replaceAllUsesWith(GEP);
}
===========================
for (GlobalVariable **i = Globals.begin(), **e = Globals.end(); i != e;
2008 Jun 17
4
[LLVMdev] Transforming ConstantExprs to Instructions
Hi,
I've been struggling with constantexprs for a bit. I'm working on a pass that
transforms global variables to local variables, and in particular the
GetElementPtrConstantExpr is a bit troublesome. For my transformation to
properly work, a global value should only be used by Instructions, not by
ConstantExprs.
I was thinking to add a ConstantExpr::replaceWithInstr() virtual method,
2008 Sep 13
3
[LLVMdev] Duplicate Function with duplicated Arguments
I'm now writing a pass and I wanna ask a question about how to
duplicate the function and add duplicated arguments in llvm, for
example:
func(int a, char *b) -> func(int a, char *b, int a1, char *b1)
I'm now stuck at using "getOrInsertFunction" and how to handle
"getArgumentList", please share your opinion, thanks a lot!
James
2009 Jan 22
3
[LLVMdev] replacing instructions
Hello everyone,
is there any way to replace an instruction inside LLVM that is more
elegant than creating a new one, replacing uses and deleting the old one
if I only want to modify the type? It is generally not a big deal, but
the issue gets really messy if I am in the middle of iterating over uses
and start deleting some of them...
I hope I could describe my problem well enough ;)
Regards,
2008 Jun 17
0
[LLVMdev] Transforming ConstantExprs to Instructions
On Tue, Jun 17, 2008 at 8:50 AM, Matthijs Kooijman <matthijs at stdin.nl> wrote:
> Hi,
>
> I've been struggling with constantexprs for a bit. I'm working on a pass that
> transforms global variables to local variables, and in particular the
> GetElementPtrConstantExpr is a bit troublesome. For my transformation to
> properly work, a global value should only be used
2018 Aug 08
2
Error Calling eraseFromParent()
Hi. Thanks. I changed the code but the problem exists. This is my new code
which is again very simple:
...
bool runOnFunction(Function &F) override {
vector<Instruction *> dels;
dels.clear();
for (inst_iterator It = inst_begin(&F), Ie = inst_end(&F); It != Ie;) {
Instruction *I = &*(It++);
if (auto* op = dyn_cast<BinaryOperator>(I)) {
IRBuilder<NoFolder>
2011 Oct 05
2
[LLVMdev] replacing a global variable by a constant
hi
i want replacing a global variable by a constant value for erase
instruction. i had seen the code that as follows
for (llvm::GlobalVariable::use_iterator U = gv->use_begin(); U !=
gv->use_end();--U ) {
llvm::Instruction *I = llvm::cast<llvm::Instruction>(U);
I->replaceAllUsesWith(constPtr);
I->eraseFromParent();
}
but i dont know how can declare constptr.
2018 Aug 08
3
Error Calling eraseFromParent()
LLVM is built in Release mode. The version is 6.0.0. I think that a similar
code worked on verison 3.9.0. It is probably a null pointer dereference
occurring in eraseFromParent(). I checked and reconfirmed that the
instruction had no uses. Perhaps I should rebuild LLVM. Thanks.
On Wed, Aug 8, 2018 at 9:03 PM, mayuyu.io <admin at mayuyu.io> wrote:
> Hmmmm that’s strange. Do you get an
2018 Aug 07
2
Error Calling eraseFromParent()
Thanks Bjorn! But The problem is still there.
On Wed, Aug 8, 2018 at 2:04 AM, Björn Pettersson A <
bjorn.a.pettersson at ericsson.com> wrote:
> It looks quite dangerous to erase the instruction I inside the loop when
> iterating over all instructions in the function.
> I guess it depends on how the range based iterator is implemented if that
> works or not.
>
> I think
2008 Apr 16
5
[LLVMdev] PATCH: Use size reduction -- wave2
On Apr 16, 2:13 am, Dan Gohman <goh... at apple.com> wrote:
> Hi Gabor,
>
> Can you provide performance data for this? I'd
> like to know what affect these changes have on
> compile time.
Hi Dan,
Unfortunately, no. I can feed you with some speculation, though,
see below.
The reason why I cannot do measurements (at the moment) is that
- I have no experience with
2010 Jan 31
3
[LLVMdev] Redefining function
Albert Graef wrote:
> The way I do this in Pure is to always call global functions in an
> indirect fashion, using an internal global variable which holds the
> current function pointer. When a function definition gets updated, the
> Pure interpreter just jits the new function, changes the global variable
> accordingly, and frees the old code.
>
> Compared to Duncan's
2018 Aug 07
2
Error Calling eraseFromParent()
The code is really simple. But I can not the reason for the segmentation
fault. I only know that the eraseFromParent() function leads to it. The
whole code is:
...
bool runOnFunction(Function &F) override {
for (auto &I : instructions(F)) {
if (auto* op = dyn_cast<BinaryOperator>(&I)) {
IRBuilder<> builder(op);
Value* lhs = op->getOperand(0);
Value* rhs =
2010 Jan 30
2
[LLVMdev] Redefining function
Hi Duncan,
> I couldn't find the solution to my problem (if it has one) in the mailing
>> list or the source code. The problem is: how can I redefine a function
>> that's been called already by some other function?
>>
>
> why do you want to do this?
>
To implement something that is common in Lisp. Suppose I have a program that
is running and can't be
2009 Jan 22
0
[LLVMdev] replacing instructions
Ralf Karrenberg wrote:
> Hello everyone,
>
> is there any way to replace an instruction inside LLVM that is more
> elegant than creating a new one, replacing uses and deleting the old one
> if I only want to modify the type? It is generally not a big deal, but
> the issue gets really messy if I am in the middle of iterating over uses
> and start deleting some of them...
>
2010 Jan 29
2
[LLVMdev] Redefining function
Hi everybody.
I've just started learning about LLVM and didn't get too far studying the
core.
I couldn't find the solution to my problem (if it has one) in the mailing
list or the source code. The problem is: how can I redefine a function
that's been called already by some other function?
Suppose I have 3 files, all compiled to bytecode through llvm-gcc (I think
it could be clang
2010 Jan 31
0
[LLVMdev] Redefining function
On Sat, Jan 30, 2010 at 6:22 PM, Conrado Miranda
<miranda.conrado at gmail.com> wrote:
> Albert Graef wrote:
>>
>> The way I do this in Pure is to always call global functions in an
>> indirect fashion, using an internal global variable which holds the
>> current function pointer. When a function definition gets updated, the
>> Pure interpreter just jits the