mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Don't use an unqualified 'abs' function call with a builtin type.
This is dangerous for numerous reasons. The primary risk here is with floating point or double types where if the wrong header files are included in a strange order this can implicitly convert to integers and then call the C abs function on the integers. There is a secondary risk that even impacts integers where if the namespace the code is written in ever defines an abs overload for types within that namespace the global abs will be hidden. The correct form is to call std::abs or write 'using std::abs' for builtin types (and only the latter is correct in any generic context). I've also added the requisite header to be a bit more explicit here. llvm-svn: 219484
This commit is contained in:
parent
d5db1139b9
commit
3f4f07b016
@ -30,6 +30,7 @@
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include <cstdlib>
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
@ -763,7 +764,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
|
||||
// will restore SP to (BP - SEHFrameOffset)
|
||||
for (const CalleeSavedInfo &Info : MFI->getCalleeSavedInfo()) {
|
||||
int offset = MFI->getObjectOffset(Info.getFrameIdx());
|
||||
SEHFrameOffset = std::max(SEHFrameOffset, abs(offset));
|
||||
SEHFrameOffset = std::max(SEHFrameOffset, std::abs(offset));
|
||||
}
|
||||
SEHFrameOffset += SEHFrameOffset % 16; // ensure alignmant
|
||||
|
||||
@ -1176,7 +1177,7 @@ bool X86FrameLowering::assignCalleeSavedSpillSlots(
|
||||
|
||||
const TargetRegisterClass *RC = RegInfo->getMinimalPhysRegClass(Reg);
|
||||
// ensure alignment
|
||||
SpillSlotOffset -= abs(SpillSlotOffset) % RC->getAlignment();
|
||||
SpillSlotOffset -= std::abs(SpillSlotOffset) % RC->getAlignment();
|
||||
// spill into slot
|
||||
SpillSlotOffset -= RC->getSize();
|
||||
int SlotIndex =
|
||||
|
Loading…
Reference in New Issue
Block a user