Displaying 12 results from an estimated 12 matches for "armframelow".
2011 Dec 05
2
[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan
Hello LLVMDev,
I've encountered what looks like a bug in LLVM 2.9, it doesn't appear to be fixed in 3.0 either.
The problem occurs in function ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan. There's a circular dependency in setting the variable BigStack and AFI->setHashStackFrame(true). The expression which initializes BigStack calls estimateRSSStackSizeLimit which in turn checks AFI->hasStackFrame(). Unfortunately setHasStackFra...
2011 Dec 05
1
[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan
...other check AFI->hasStackFrame() which seems wrong. The function should assume the function has a stack frame, because its entire function is to estimate its size!
It looks like that check has been copy-pasted from elsewhere in the file. Anton, would you agree with this? I haven't looked at ARMFrameLowering before.
Cheers,
James
-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Anton Korobeynikov
Sent: 05 December 2011 11:11
To: Alok Manchanda
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] bug in ARMFrameLowering.cpp:process...
2011 Dec 05
0
[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan
Hello Alok,
> I fixed this by performing the CanEliminateFrame and
> RegInfo->cannotEliminateFrame checks before the call to
> estimateRSSStackSizeLimit, since these values are available before BigStack
> is initialized. Does that sound reasonable? I’ve attached a patch with my
> change.
Will you please provide a testcase which reproduces the problem?
Thanks!
--
With best
2013 Oct 21
1
[LLVMdev] [PATCH] Unwanted r11 in push/pop on Cortex-M.
...s not belong to
the low register set (r0-r7).
After a bit of digging, the following patch seems to take care of it.
Basically what happens is:
- the C function in the example doesn't have any local to save
- the only spilled register is LR
- the Prolog/Epilog Inserted calls the target specific
ARMFrameLowering::processFunctionBeforeCalleeSavedScan
- at this point the we need to fix the fact that SP would not be EABI
compliant because only 1 register has been spilled so far
- inside processFunctionBeforeCalleeSavedScan, there a check: if
TargetAlign == 8 && (NumGPRSpills & 1) then we alig...
2012 Dec 07
0
[LLVMdev] Increase the number of registers in ARM
...> to compile and run it now.
We have done the similar work[1] on this topic by gcc and we have
start migrate our platform to LLVM.
In my experience, you need to take care the follow part:
* ARMBaseRegisterInfo::getRegPressureLimit
* ARMBaseRegisterInfo::getRawAllocationOrder
* CalleeSavedRegs
* ARMFrameLowering::emitPrologue
[1] Doubling the Number of Registers on ARM Processors
http://aces.snu.ac.kr/interact-16/papers/interact-16-paper-1.pdf
2012 Dec 07
2
[LLVMdev] Increase the number of registers in ARM
I almost change all the instruction formats. It was a huge work. I am going
to compile and run it now.
Best Regards,
A. Yazdanbakhsh
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
PhD. Student
School of Electrical and Computer Engineering
University of Wisconsin-Madison
E-mail: yazdanbakhsh
2013 Oct 15
2
[LLVMdev] Unwanted push/pop on Cortex-M.
...function be compiled into:
>
> out_char:
> mov r1, r0
> mov r0, #0
> bl platform_putchar
> bx lr
>
> What's the clang/llvm module responsible for generating the prologue
> and epilogue for this function?
> I looked into CodeGen/PrologEpilogInserter, ARMFrameLowering.cpp
> Thumb1FrameLowering.cpp but it's not 100% clear how the code gen
> decides what the stack frame look like.
>
> Here's the -emit-llvm output
>
> target datalayout =
> "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:6...
2019 Jul 17
2
Custom calling convention & ARM target
Hi Tim,
Thank you for your reply.
Actually, I already played with various target triples including what
sys::getProcessTriple() returns when I tried to compile it on
a Raspberry Pi 3 device.
Yes, changing the triple to armv7-unknown-linux-gnueabi changes the
emitted return instruction to
'bx lr'. But this is not the issue.
Let me describe it based on an example I prepared to demonstrate
2013 Oct 15
1
[LLVMdev] Unwanted push/pop on Cortex-M.
...> out_char:
>> mov r1, r0
>> mov r0, #0
>> bl platform_putchar
>> bx lr
>>
>> What's the clang/llvm module responsible for generating the prologue
>> and epilogue for this function?
>> I looked into CodeGen/PrologEpilogInserter, ARMFrameLowering.cpp
>> Thumb1FrameLowering.cpp but it's not 100% clear how the code gen
>> decides what the stack frame look like.
>>
>> Here's the -emit-llvm output
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/piperm...
2013 Oct 15
0
[LLVMdev] Unwanted push/pop on Cortex-M.
..._char:
> > mov r1, r0
> > mov r0, #0
> > bl platform_putchar
> > bx lr
> >
> > What's the clang/llvm module responsible for generating the prologue
> > and epilogue for this function?
> > I looked into CodeGen/PrologEpilogInserter, ARMFrameLowering.cpp
> > Thumb1FrameLowering.cpp but it's not 100% clear how the code gen
> > decides what the stack frame look like.
> >
> > Here's the -emit-llvm output
> >
> > target datalayout =
> >
> "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:3...
2013 Jan 28
0
[LLVMdev] morestack for ARM
I wonder if any body tried implementing morestack for ARM.
[ARMFrameLowering.cpp file does not have implementation for
adjustForSegmentedStacks
method]
More I study more I get lost, Any help or input is highly appreciated.
TIA,
Amit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachmen...
2013 Oct 15
0
[LLVMdev] Unwanted push/pop on Cortex-M.
...question I have is:
why can't this out_char function be compiled into:
out_char:
mov r1, r0
mov r0, #0
bl platform_putchar
bx lr
What's the clang/llvm module responsible for generating the prologue and
epilogue for this function?
I looked into CodeGen/PrologEpilogInserter, ARMFrameLowering.cpp
Thumb1FrameLowering.cpp but it's not 100% clear how the code gen decides
what the stack frame look like.
Here's the -emit-llvm output
target datalayout =
"e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:32-n32-S64&quo...