Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] Special cased global-to-local-in-main replacement in GlobalOpt"
2010 Oct 28
2
[LLVMdev] global optimizer precision
Hi all,
I had a look at the interprocedural optimizer. In my opinion the
routine 'GlobalOpt::ProcessInternalGlobal' is a little bit to
conservative. It removes global variables if the only routine using
this variable is main. Typically this condition is valid only for very
few global variables.
Here is a code snippet containing the test before the transformation:
file:
2009 Jun 16
3
[LLVMdev] Localizing Globals ?
The code excerpt is from IPO/GlobalOpt.cpp
// If this is a first class global and has only one accessing function
// and this function is main (which we know is not recursive we can make
// this global a local variable) we replace the global with a local
alloca
// in this function.
//
// NOTE: It doesn't make sense to promote non single-value types
since we
// are
2015 Sep 18
2
GlobalOPT and sections
Hello everyone,
This is a rather ancient code with Chris's name all over it, so I naturally feel humbled :)
I see a conceptual issue in lib/Transforms/IPO/GlobalOpt.cpp with several optimizations that create a copy of GlobalVariable without copying attributes from the original one.
Consider this one:
http://llvm.org/doxygen/GlobalOpt_8cpp_source.html
static bool
2016 Aug 30
4
TryToShrinkGlobalToBoolean in GlobalOpt.cpp issue
Given some code:
static int x = 100;
int main() {
x = 101;
printf("%d\n", x);
}
results in:
%0 = load i1
%1 = select %0, 101, 100
...
...
1) What architecture(s) does this benefit?
2) What's the best way to circumvent this in the backend (currently I am
just not allowing this opt function to run)? I have tried a few
setOperationAction methods to no result. Rather not just
2015 Sep 21
2
GlobalOPT and sections
Chris,
Thanks for the clarification... at least no bug report is due... and I am glad that I've asked.
In my case these transformations are rather useful and forcing them to copy original global variable section is making them compatible with our (rather important) use case, so I guess I will have to fix it locally.
Nevertheless if someone else would have a similar issue - I would be
2016 Mar 22
1
Question about GlobalOpt
Hi Mehdi,
You are right – modifying the Function Attributes pass to mark “main” as norecurse would break the C standard (unless it has a similar statement regarding “main” that the C++ standard has – I cannot find it), so that’s a no-go. Looks like there was an attempt to bypass library calls in the Function Attributes pass for the purpose of detecting norecurse functions:
2016 Mar 21
3
Question about GlobalOpt
Hi,
GlobalOpt may not consider demoting globals to locals in the "main" function
when C is used. It used to consider "main" specifically prior to commit
r253168 , for both C and C++. Since r253168, the check for the norecurse
attribute may prevent "main" from being considered. This happens because
the Function Attributes pass will not add the norecurse
2016 Aug 30
2
TryToShrinkGlobalToBoolean in GlobalOpt.cpp issue
Yes, the full test case is:
static int x = 100;
int y = whatever;
int main() {
x = -101;
y = whatever that's not whatever above;
printf("%d\n", y);
printf("%d\n", x);
return 0;
}
You are correct, in the above test case the globalopt does not make the
transformation.... however, I think the original issue still stands, it
really shouldn't be doing it
2016 Mar 22
3
Question about GlobalOpt
I think the conceptual issues have largely been sorted out, it is mostly
that it is *much* harder to deduce norecurse than it might seem like
superficially.
On Mon, Mar 21, 2016 at 4:02 PM Mehdi Amini <mehdi.amini at apple.com> wrote:
> On Mar 21, 2016, at 3:57 PM, Sanjin Sijaric via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Hi,
>
> GlobalOpt may not
2016 Mar 22
2
Question about GlobalOpt
Hi,
On my phone right now but I'll fish out the pertinent threads when I get to
the office. Keyword searches for 'norecurse' on llvm-dev will probably get
most of them.
Indeed, this correctness improvement caused a performance regression on
some programs. There is a way to revert to the old, broken behaviour:
'-mllvm -force-attribute=main:norecurse'. Given how many people run
2005 Feb 20
3
[LLVMdev] HowToUseJIT: failed assertion on PPC/Mac OS X
I just got the CVS version of LLVM running tonight. On my PowerBook,
one of the examples (HowToUseJIT) has an assertion error when I try and
run it:
Running foo: JIT.cpp:217: failed assertion `!isAlreadyCodeGenerating &&
"Error: Recursive compilation detected!"'
However, when I compile and run the same program on x86 Linux, it runs
fine (Running foo: Result: 11). I
2005 Feb 20
0
[LLVMdev] HowToUseJIT: failed assertion on PPC/Mac OS X
On Feb 20, 2005, at 11:12, Evan Jones wrote:
> I can "fix" it by changing JITResolver::getFunctionStub to use
> F->isExternal() instead of F->hasExternalLinkage(). However, this then
> breaks when calling *real* external functions (native code).
I obviously should not post to mailing lists before I've eaten. With my
"fix" I get an assertion when taking an
2006 Apr 11
0
access mysql with lower cased collum name failed
rails:
hi guys, one problem makes me even crazy!
I use ruby on rails and mysql, but the table''s collum names in the mysql database is mixed case, not only lower case. but I do have set the database lower_case_tablenames=1, but still, the ruby on rail can not access mysql by just lower case table collums. why?!
help!
Regards!
Su Siyuan
siyuan.su@accessmedia.com.cn
2006-04-11
2011 Aug 24
1
[LLVMdev] proposal: add macro expansion of for-loop to TableGen
Hi folks,
TableGen provides sufficiently rich syntax for expressing target
instruction set. Nevertheless, when I wrote the PTX backend, I
observed that some redundancy in TableGen can be further eliminated
through macro expansion of for-loops.
The semantics of a for-loop is expanding the for-loop body, and so it
is equivalent to manually unroll the loop (see example #1).
I believe the for-loop
2008 Sep 18
2
[LLVMdev] store addrspace qualifier
Mon Ping,
Thanks for the tip, but I can't for the life of me seem to get the
Value from a StoreSDNode. From looking at the SelectionDAGNodes header
file, the only class that has the getValue function call is
SrcValueSDNode that returns a Value type. The only class that has
getType is a ConstantPoolSDNode. I don't think that ConstantPoolSDNode
is what I want and when I try to cast the
2009 Apr 28
1
[LLVMdev] AddressSpace of a GlobalAddress
Every GlobalAddress has a GlobalValue, Every GlobalValue is a
PointerType, Every PointerType has an AddressSpace. So is it ok to add a
method getAddressSpace in GlobalAddressSDNode class itself?
Currently we have to do GSDN->getGlobal()->getType()->getAddressSpace().
- Sanjiv
2016 Nov 28
2
LLVM Pass for Instructions in Function (error
Hi,
Sent via the Samsung Galaxy Note® 3, an AT&T 4G LTE smartphone
-------- Original message --------
From: Gurunath Kadam via llvm-dev <llvm-dev at lists.llvm.org>
Date: 11/27/2016 7:49 PM (GMT-06:00)
To: llvm-dev at lists.llvm.org
Subject: [llvm-dev] LLVM Pass for Instructions in Function (error
Hi,
Please find the embedded code. Also you may follow
2014 Apr 30
4
[LLVMdev] Best way to clean up empty global_ctors
Hi,
I'd like to fix PR19590, which is about llvm.global_ctors containing
functions that end up being empty after optimization (which causes the
linker to add useless init_array entries to the output binary).
globalopt removes empty functions from llvm.global_ctors, but by the
time the function becomes empty globalopt has already run and it
doesn't run again.
I'm wondering what the
2008 Sep 17
0
[LLVMdev] store addrspace qualifier
The address qualifier is stored in the type of %result. From that
operand, you can get the Value and then call getType. The type for
result should be a PointerType which you cast to a PointerType and
get the getAddressSpace e.g. cast<PointerType>(Ty)->getAddressSpace()
-- Mon Ping
On Sep 17, 2008, at 1:06 PM, Villmow, Micah wrote:
> How do I access the address qualifier
2007 May 25
0
[LLVMdev] Linking two external linkage GlobalValues
Hi,
I've been able to link ioquake, but not without a small modification
to lib/Linker/LinkModules.cpp:427 where I had to add:
} else if (Dest->hasExternalLinkage() && Src->hasExternalLinkage()){
LinkFromSrc = true;//overwrite old value
LT = Src->getLinkage();//use src linkage
The reason is that two files both had a global function pointer
variable (due