Displaying 11 results from an estimated 11 matches for "getcallframedestroyopcode".
2004 Jul 01
1
[LLVMdev] Stack alignment problem
...f
FFI->hasCalls()
is true. The only place where
MachineFrameInfo::setHasCalls
is invoked is
PEI::saveCallerSavedRegisters
and the value 'true' is only passed when there are instructions with opcodes
equal to either RegInfo->getCallFrameSetupOpcode() or
RegInfo->getCallFrameDestroyOpcode(). I don't have such special opcode, so
hasCalls returns false and the stack is not aligned.
Any ideas?
- Volodya
2013 Aug 21
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
...| |
SetUp----->PredSU <-----SU
^ ^ ^
| | |
| | |
----------- | ---------
| | |
Setup
^
|
When there are two successors of PredSU with type getCallFrameDestroyOpcode and there is order between them,
if the successor of the two's matching getCallFrameSetupOpcode is a predecessor of SU,
if the dependency is routed through SU, there will be a dead lock.
Viz:
Destroy PredSU Destroy
^ ^ ^
| | |
|...
2013 Aug 22
0
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
...| |
SetUp----->PredSU <-----SU
^ ^ ^
| | |
| | |
----------- | ---------
| | |
Setup
^
|
When there are two successors of PredSU with type getCallFrameDestroyOpcode and there is order between them,
if the successor of the two's matching getCallFrameSetupOpcode is a predecessor of SU,
if the dependency is routed through SU, there will be a dead lock.
Viz:
Destroy PredSU Destroy
^ ^ ^
| | |
|...
2013 Sep 25
2
[LLVMdev] Register scavenger and SP/FP adjustments
...TRI = *TM.getRegisterInfo();
const TargetFrameLowering *TFI = TM.getFrameLowering();
bool StackGrowsDown =
TFI->getStackGrowthDirection() ==
TargetFrameLowering::StackGrowsDown;
int FrameSetupOpcode = TII.getCallFrameSetupOpcode();
int FrameDestroyOpcode = TII.getCallFrameDestroyOpcode();
if (RS && !FrameIndexVirtualScavenging) RS->enterBasicBlock(BB);
for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {
if (I->getOpcode() == FrameSetupOpcode ||
I->getOpcode() == FrameDestroyOpcode) {
// Remember how much SP ha...
2013 Sep 26
0
[LLVMdev] Register scavenger and SP/FP adjustments
...terInfo();
> const TargetFrameLowering *TFI = TM.getFrameLowering();
> bool StackGrowsDown =
> TFI->getStackGrowthDirection() ==
> TargetFrameLowering::StackGrowsDown;
> int FrameSetupOpcode = TII.getCallFrameSetupOpcode();
> int FrameDestroyOpcode = TII.getCallFrameDestroyOpcode();
>
> if (RS && !FrameIndexVirtualScavenging) RS->enterBasicBlock(BB);
>
> for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {
>
> if (I->getOpcode() == FrameSetupOpcode ||
> I->getOpcode() == FrameDestroyOpcode) {
>...
2013 Aug 22
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
...|
Destroy2---->PredSU <----SU
^ ^ ^
| | |
| | |
----------- | ---------
| | |
Destroy1
^
|
In this example there are two successors of 'PredSU' with type
getCallFrameDestroyOpcode (Destroy) and one is a successor of the other.
Taking the successor of the two Destroys (Destroy1), noted that it's
matching getCallFrameSetupOpcode (Setup1) is a predecessor of 'SU'.
In this situation, re-routing the dependency on 'PredSU' through 'SU' will
cause a...
2013 Sep 26
2
[LLVMdev] Register scavenger and SP/FP adjustments
...st TargetFrameLowering *TFI = TM.getFrameLowering();
>> bool StackGrowsDown =
>> TFI->getStackGrowthDirection() ==
>> TargetFrameLowering::StackGrowsDown;
>> int FrameSetupOpcode = TII.getCallFrameSetupOpcode();
>> int FrameDestroyOpcode = TII.getCallFrameDestroyOpcode();
>>
>> if (RS && !FrameIndexVirtualScavenging) RS->enterBasicBlock(BB);
>>
>> for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {
>>
>> if (I->getOpcode() == FrameSetupOpcode ||
>> I->getOpcode() == Fra...
2013 Sep 26
0
[LLVMdev] Register scavenger and SP/FP adjustments
...owering *TFI = TM.getFrameLowering();
>>> bool StackGrowsDown =
>>> TFI->getStackGrowthDirection() ==
>>> TargetFrameLowering::StackGrowsDown;
>>> int FrameSetupOpcode = TII.getCallFrameSetupOpcode();
>>> int FrameDestroyOpcode = TII.getCallFrameDestroyOpcode();
>>>
>>> if (RS && !FrameIndexVirtualScavenging) RS->enterBasicBlock(BB);
>>>
>>> for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {
>>>
>>> if (I->getOpcode() == FrameSetupOpcode ||
>>>...
2013 Aug 21
0
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Here is a bit more data.
After PrescheduleNodesWithMultipleUses has been run, the following Predecessor/Successor links are 'dumpAll'ed.
(I attach the full dumpAll before & after "Prescheduling SU #7 next to PredSU #4 to guide scheduling in the presence of multiple uses")
SU(3)
Predecessors:
val SU(5): Latency=1
ch SU(7): Latency=1
val SU(7): Latency=1
SU(7):
2013 Sep 26
1
[LLVMdev] Register scavenger and SP/FP adjustments
...tFrameLowering();
>>>> bool StackGrowsDown =
>>>> TFI->getStackGrowthDirection() ==
>>>> TargetFrameLowering::StackGrowsDown;
>>>> int FrameSetupOpcode = TII.getCallFrameSetupOpcode();
>>>> int FrameDestroyOpcode = TII.getCallFrameDestroyOpcode();
>>>>
>>>> if (RS && !FrameIndexVirtualScavenging) RS->enterBasicBlock(BB);
>>>>
>>>> for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {
>>>>
>>>> if (I->getOpcode() == FrameSetupOpcod...
2013 Aug 20
2
[LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???
Hi,
I have an assert firing due to PickNodeToScheduleBottomUp():
1. having a CallResource in use pushing an interference of current SUnit.
2. having no more SUnits in the AvailableQueue
3. The only interference being the SUnit that just failed due to a Call Resource.
4. An attempt to duplicate this node which has the 'Call Resource' as a physical register.
Thus the call