diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-07-11 04:01:49 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-07-11 04:01:49 +0000 |
| commit | a76eccf81586c622f44caec162ef31aa0ccc8293 (patch) | |
| tree | 9a7c0f5f06d567746ab5229aa7e3e94dc444c7a7 /llvm/lib/Target/ARM | |
| parent | 4a52e2f6a71b7a6f83ffb90564cd429a9390b467 (diff) | |
| download | bcm5719-llvm-a76eccf81586c622f44caec162ef31aa0ccc8293.tar.gz bcm5719-llvm-a76eccf81586c622f44caec162ef31aa0ccc8293.zip | |
Fix va_arg for doubles. With this patch VAARG nodes always contain the
correct alignment information, which simplifies ExpandRes_VAARG a bit.
The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:
* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.
llvm-svn: 108072
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index e1e5a80678b..e60a2b14f1f 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -539,6 +539,10 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM) maxStoresPerMemcpy = 1; //// temporary - rewrite interface to use type + // On ARM arguments smaller than 4 bytes are extended, so all arguments + // are at least 4 bytes aligned. + setMinStackArgumentAlignment(4); + if (EnableARMCodePlacement) benefitFromCodePlacementOpt = true; } |

