mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 16:24:23 +00:00
Add a natural stack alignment field to TargetData, and prevent InstCombine from
promoting allocas to preferred alignments that exceed the natural alignment. This avoids some potentially expensive dynamic stack realignments. The natural stack alignment is set in target data strings via the "S<size>" option. Size is in bits and must be a multiple of 8. The natural stack alignment defaults to "unspecified" (represented by a zero value), and the "unspecified" value does not prevent any alignment promotions. Target maintainers that care about avoiding promotions should explicitly add the "S<size>" option to their target data strings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141599 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -34,11 +34,11 @@ X86_32TargetMachine::X86_32TargetMachine(const Target &T, StringRef TT,
|
||||
Reloc::Model RM, CodeModel::Model CM)
|
||||
: X86TargetMachine(T, TT, CPU, FS, RM, CM, false),
|
||||
DataLayout(getSubtargetImpl()->isTargetDarwin() ?
|
||||
"e-p:32:32-f64:32:64-i64:32:64-f80:128:128-f128:128:128-n8:16:32" :
|
||||
"e-p:32:32-f64:32:64-i64:32:64-f80:128:128-f128:128:128-n8:16:32-S128" :
|
||||
(getSubtargetImpl()->isTargetCygMing() ||
|
||||
getSubtargetImpl()->isTargetWindows()) ?
|
||||
"e-p:32:32-f64:64:64-i64:64:64-f80:32:32-f128:128:128-n8:16:32" :
|
||||
"e-p:32:32-f64:32:64-i64:32:64-f80:32:32-f128:128:128-n8:16:32"),
|
||||
"e-p:32:32-f64:64:64-i64:64:64-f80:32:32-f128:128:128-n8:16:32-S32" :
|
||||
"e-p:32:32-f64:32:64-i64:32:64-f80:32:32-f128:128:128-n8:16:32-S32"),
|
||||
InstrInfo(*this),
|
||||
TSInfo(*this),
|
||||
TLInfo(*this),
|
||||
@ -50,7 +50,7 @@ X86_64TargetMachine::X86_64TargetMachine(const Target &T, StringRef TT,
|
||||
StringRef CPU, StringRef FS,
|
||||
Reloc::Model RM, CodeModel::Model CM)
|
||||
: X86TargetMachine(T, TT, CPU, FS, RM, CM, true),
|
||||
DataLayout("e-p:64:64-s:64-f64:64:64-i64:64:64-f80:128:128-f128:128:128-n8:16:32:64"),
|
||||
DataLayout("e-p:64:64-s:64-f64:64:64-i64:64:64-f80:128:128-f128:128:128-n8:16:32:64-S128"),
|
||||
InstrInfo(*this),
|
||||
TSInfo(*this),
|
||||
TLInfo(*this),
|
||||
|
Reference in New Issue
Block a user