Displaying 12 results from an estimated 12 matches for "getstacksize".
2010 Feb 26
3
[LLVMdev] Patch - big stackframes on SPU
...ofcourse bloats the generated code...
Would it be possible to conditionally enable the register scavenger only
if the function has a big stack? It now gets unconditionally enabled in
SPURegisterInfo::requiresRegisterScavenging(const MachineFunction &MF).
Just checking MF.getFrameInfo()->getStackSize() here doesn't seem to be
the solution...
kalle
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: bigstack.ll
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100226/2e97950d/attachment.ksh>
2010 Feb 26
0
[LLVMdev] Patch - big stackframes on SPU
Hello
> Would it be possible to conditionally enable the register scavenger only if
> the function has a big stack? It now gets unconditionally enabled in
> SPURegisterInfo::requiresRegisterScavenging(const MachineFunction &MF).
> Just checking MF.getFrameInfo()->getStackSize() here doesn't seem to be the
> solution...
Well, I think no. regscavenger should work well regardless of any
settings. Currently it's heavily used for ARM, so, you might want to
look how the stuff is solved there.
--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mec...
2006 Oct 08
1
[LLVMdev] should PEI::calculateFrameObjectOffsets align the stack?
...the correct argument for only a
32bit integer is passed on the stack.
The problem is that MaxCallFrameSize is **not** used in
PEI::calculateFrameObjectOffsets and it must then be used in the
target specific code. The only architecture that doesn't adds
MaxCallFrameSize to the value returned by getStackSize is Sparc. This
is so because the Sparc backend generates add/sub pairs around call
sites.
> Further, you *do* need to have a frame pointer if the function contains
> any dynamic allocas. In that case, the SP isn't fixed within a function.
> You may not care about this right now, but...
2006 Oct 07
0
[LLVMdev] should PEI::calculateFrameObjectOffsets align the stack?
On Sat, 7 Oct 2006, [UTF-8] Rafael Esp?ndola wrote:
>> This sounds like the ADJCALLSTACK DOWN/UP 'instructions' around the call
>> aren't set right, or you have declared a SP offset. It doesn't look like
>> the ARM backend does this, so this is probably the problem.
> The ARM backend currently doesn't use a frame pointer. It uses the
> same technique
2010 Feb 24
0
[LLVMdev] Patch - big stackframes on SPU
On Feb 22, 2010, at 6:08 AM, Kalle.Raiskila at nokia.com wrote:
> Hello all,
>
> currently the SPU backend does not handle big stack frames (>16*511
> bytes) nicely. llc asserts on malformed machine instructions.
> (Assertion `MI->getOperand(OpNo).isImm() && "printDFormAddr first
> operand is not immediate")
Sounds fine to me in general. Please write a
2006 Oct 07
2
[LLVMdev] should PEI::calculateFrameObjectOffsets align the stack?
> This sounds like the ADJCALLSTACK DOWN/UP 'instructions' around the call
> aren't set right, or you have declared a SP offset. It doesn't look like
> the ARM backend does this, so this is probably the problem.
The ARM backend currently doesn't use a frame pointer. It uses the
same technique of the PPC backend to avoid add/subs around calls. In
the PPC backend we
2010 Apr 12
1
[LLVMdev] Question. about Machinefunction pass, funtion Prolog/Epilog code, stack frame
I am new to the LLVM, and need some help with this points.
1. how can we add special code for the Prolog/Epilog for some
certain functions, this should be done with machinefunction pass, rt?
2. Basically, I want to get the function stack frame, that is the size and
the initial position.
I found
int64_t llvm::MachineFrameInfo::getObjectSize ( int *ObjectIdx* )
const[inline]
This method is
2010 Feb 22
2
[LLVMdev] Patch - big stackframes on SPU
Hello all,
currently the SPU backend does not handle big stack frames (>16*511
bytes) nicely. llc asserts on malformed machine instructions.
(Assertion `MI->getOperand(OpNo).isImm() && "printDFormAddr first
operand is not immediate")
E.g. the function:
define i32 @foo() nounwind {
entry:
%retval = alloca i32
%big_data = alloca [1000 x i32]
store i32 3840, i32*
2011 Oct 31
2
[LLVMdev] Adding a custom GC safe point creation phase
...gt;getParent(), RAI,
CI->getDebugLoc());
FI->addSafePoint(GC::PostCall, Label, CI->getDebugLoc());
}
+
}
void MachineCodeAnalysis::FindSafePoints(MachineFunction &MF) {
@@ -405,9 +415,13 @@
// Find the size of the stack frame.
FI->setFrameSize(MF.getFrameInfo()->getStackSize());
-
+
// Find all safe points.
- FindSafePoints(MF);
+ if (FI->getStrategy().customSafePoints()) {
+ FI->getStrategy().findCustomSafePoints(*FI, MF);
+ } else {
+ FindSafePoints(MF);
+ }
// Find the stack offsets for all roots.
FindStackOffsets(MF);
-------------- next p...
2013 Jul 23
0
[LLVMdev] [RFC] Add warning capabilities in LLVM.
...pport the llvm.stack"
<< (Callee->getIntrinsicID() == Intrinsic::stacksave ?
"save" : "restore") << " intrinsic.\n”;
- PrologEpilogInserter:
errs() << "warning: Stack size limit exceeded (" << MFI->getStackSize()
<< ") in " << Fn.getName() << ".\n”;
Actually, when I wrote this, I had Hal’s Optimization Diary in mind:
<From Hal>
- "*This loop* cannot be optimized because the induction variable *i* is unsigned, and cannot be proved not to wrap"
-...
2013 Jul 23
2
[LLVMdev] [RFC] Add warning capabilities in LLVM.
On Mon, Jul 22, 2013 at 4:17 PM, Quentin Colombet <qcolombet at apple.com> wrote:
> Hi,
>
> Compared to my previous email, I have added Hal’s idea for formatting the
> message and pull back some idea from the "querying framework”.
> Indeed, I propose to add some information in the reporting so that a
> front-end (more generally a client) can filter the diagnostics or
2012 Apr 19
0
[LLVMdev] Target Dependent Hexagon Packetizer patch
...to packetize null instruction!");
>> +
>> + const MCInstrDesc&MCIDI = I->getDesc();
>> + const MCInstrDesc&MCIDJ = J->getDesc();
>> +
>> + MachineBasicBlock::iterator II = I;
>> +
>> + const unsigned FrameSize = MF.getFrameInfo()->getStackSize();
>> + const HexagonRegisterInfo* QRI = (const HexagonRegisterInfo *) TM.getRegisterInfo();
>> + const HexagonInstrInfo *QII = (const HexagonInstrInfo *) TII;
>> +
>> + // Inline asm cannot go in the packet.
>> + if (I->getOpcode() == Hexagon::INLINEASM)
>&g...