diff options
author | Reid Kleckner <rnk@google.com> | 2016-05-04 02:58:24 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-05-04 02:58:24 +0000 |
commit | 5c0df64f90a09d2e4d4848ee5c4d76c59b599b08 (patch) | |
tree | d2865f4f6709d02be27d88a5498ab7ed2986bac1 /lib | |
parent | 8e46615f64533785befa0660732cdb3cdcdf7969 (diff) | |
download | clang-5c0df64f90a09d2e4d4848ee5c4d76c59b599b08.tar.gz |
[X86] Add -malign-double support
The -malign-double flag causes i64 and f64 types to have alignment 8
instead of 4. On x86-64, the behavior of -malign-double is enabled by default.
Rebases and cleans phosek's work here: http://reviews.llvm.org/D12860
Patch by Sean Klein
Reviewers: rnk
Subscribers: rnk, jfb, dschuff, phosek
Differential Revision: http://reviews.llvm.org/D19734
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268473 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Basic/TargetInfo.cpp | 4 | ||||
-rw-r--r-- | lib/Frontend/CompilerInvocation.cpp | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/Basic/TargetInfo.cpp b/lib/Basic/TargetInfo.cpp index 40d6001e53..f6973f3942 100644 --- a/lib/Basic/TargetInfo.cpp +++ b/lib/Basic/TargetInfo.cpp @@ -275,6 +275,10 @@ void TargetInfo::adjust(const LangOptions &Opts) { UseBitFieldTypeAlignment = false; if (Opts.ShortWChar) WCharType = UnsignedShort; + if (Opts.AlignDouble) { + DoubleAlign = LongLongAlign = 64; + LongDoubleAlign = 64; + } if (Opts.OpenCL) { // OpenCL C requires specific widths for types, irrespective of diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 02a570076b..69a4366213 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -1758,6 +1758,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, Opts.EmitAllDecls = Args.hasArg(OPT_femit_all_decls); Opts.PackStruct = getLastArgIntValue(Args, OPT_fpack_struct_EQ, 0, Diags); Opts.MaxTypeAlign = getLastArgIntValue(Args, OPT_fmax_type_align_EQ, 0, Diags); + Opts.AlignDouble = Args.hasArg(OPT_malign_double); Opts.PICLevel = getLastArgIntValue(Args, OPT_pic_level, 0, Diags); Opts.PIELevel = getLastArgIntValue(Args, OPT_pie_level, 0, Diags); Opts.Static = Args.hasArg(OPT_static_define); |