PrologEpilogInserter.cpp (198396) | PrologEpilogInserter.cpp (198892) |
---|---|
1//===-- PrologEpilogInserter.cpp - Insert Prolog/Epilog code in function --===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 528 unchanged lines hidden (view full) --- 537 FFI->setObjectOffset(i, Offset); 538 Offset += FFI->getObjectSize(i); 539 } 540 } 541 542 // Make sure the special register scavenging spill slot is closest to the 543 // frame pointer if a frame pointer is required. 544 const TargetRegisterInfo *RegInfo = Fn.getTarget().getRegisterInfo(); | 1//===-- PrologEpilogInserter.cpp - Insert Prolog/Epilog code in function --===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 528 unchanged lines hidden (view full) --- 537 FFI->setObjectOffset(i, Offset); 538 Offset += FFI->getObjectSize(i); 539 } 540 } 541 542 // Make sure the special register scavenging spill slot is closest to the 543 // frame pointer if a frame pointer is required. 544 const TargetRegisterInfo *RegInfo = Fn.getTarget().getRegisterInfo(); |
545 if (RS && RegInfo->hasFP(Fn)) { | 545 if (RS && RegInfo->hasFP(Fn) && !RegInfo->needsStackRealignment(Fn)) { |
546 int SFI = RS->getScavengingFrameIndex(); 547 if (SFI >= 0) 548 AdjustStackOffset(FFI, SFI, StackGrowsDown, Offset, MaxAlign); 549 } 550 551 // Make sure that the stack protector comes before the local variables on the 552 // stack. 553 if (FFI->getStackProtectorIndex() >= 0) --- 12 unchanged lines hidden (view full) --- 566 if (FFI->getStackProtectorIndex() == (int)i) 567 continue; 568 569 AdjustStackOffset(FFI, i, StackGrowsDown, Offset, MaxAlign); 570 } 571 572 // Make sure the special register scavenging spill slot is closest to the 573 // stack pointer. | 546 int SFI = RS->getScavengingFrameIndex(); 547 if (SFI >= 0) 548 AdjustStackOffset(FFI, SFI, StackGrowsDown, Offset, MaxAlign); 549 } 550 551 // Make sure that the stack protector comes before the local variables on the 552 // stack. 553 if (FFI->getStackProtectorIndex() >= 0) --- 12 unchanged lines hidden (view full) --- 566 if (FFI->getStackProtectorIndex() == (int)i) 567 continue; 568 569 AdjustStackOffset(FFI, i, StackGrowsDown, Offset, MaxAlign); 570 } 571 572 // Make sure the special register scavenging spill slot is closest to the 573 // stack pointer. |
574 if (RS && !RegInfo->hasFP(Fn)) { | 574 if (RS && (!RegInfo->hasFP(Fn) || RegInfo->needsStackRealignment(Fn))) { |
575 int SFI = RS->getScavengingFrameIndex(); 576 if (SFI >= 0) 577 AdjustStackOffset(FFI, SFI, StackGrowsDown, Offset, MaxAlign); 578 } 579 580 if (!RegInfo->targetHandlesStackFrameRounding()) { 581 // If we have reserved argument space for call sites in the function 582 // immediately on entry to the current function, count it as part of the --- 337 unchanged lines hidden --- | 575 int SFI = RS->getScavengingFrameIndex(); 576 if (SFI >= 0) 577 AdjustStackOffset(FFI, SFI, StackGrowsDown, Offset, MaxAlign); 578 } 579 580 if (!RegInfo->targetHandlesStackFrameRounding()) { 581 // If we have reserved argument space for call sites in the function 582 // immediately on entry to the current function, count it as part of the --- 337 unchanged lines hidden --- |