[PATCH] D11815: Pass subtarget feature "force-align-stack"
Akira Hatanaka via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 19 12:02:50 PDT 2015
ahatanak updated this revision to Diff 32592.
ahatanak added a comment.
This patch makes changes to record function attribute "force-align-stack" instead of recording it as a subtarget feature.
http://reviews.llvm.org/D11815
Files:
include/clang/Driver/CC1Options.td
include/clang/Frontend/CodeGenOptions.def
lib/CodeGen/CGCall.cpp
lib/Driver/Tools.cpp
lib/Frontend/CompilerInvocation.cpp
Index: lib/Frontend/CompilerInvocation.cpp
===================================================================
--- lib/Frontend/CompilerInvocation.cpp
+++ lib/Frontend/CompilerInvocation.cpp
@@ -569,6 +569,8 @@
Opts.SSPBufferSize =
getLastArgIntValue(Args, OPT_stack_protector_buffer_size, 8, Diags);
Opts.StackRealignment = Args.hasArg(OPT_mstackrealign);
+ Opts.ForceAlignStack = Args.hasArg(OPT_force_align_stack);
+
if (Arg *A = Args.getLastArg(OPT_mstack_alignment)) {
StringRef Val = A->getValue();
unsigned StackAlignment = Opts.StackAlignment;
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -4228,10 +4228,9 @@
// Translate -mstackrealign
if (Args.hasFlag(options::OPT_mstackrealign, options::OPT_mno_stackrealign,
- false)) {
- CmdArgs.push_back("-backend-option");
- CmdArgs.push_back("-force-align-stack");
- }
+ false))
+ CmdArgs.push_back(Args.MakeArgString("-force-align-stack"));
+
if (!Args.hasFlag(options::OPT_mno_stackrealign, options::OPT_mstackrealign,
false)) {
CmdArgs.push_back(Args.MakeArgString("-mstackrealign"));
Index: lib/CodeGen/CGCall.cpp
===================================================================
--- lib/CodeGen/CGCall.cpp
+++ lib/CodeGen/CGCall.cpp
@@ -1491,6 +1491,8 @@
if (!CodeGenOpts.StackRealignment)
FuncAttrs.addAttribute("no-realign-stack");
+ else if (CodeGenOpts.ForceAlignStack)
+ FuncAttrs.addAttribute("force-align-stack");
// Add target-cpu and target-features attributes to functions. If
// we have a decl for the function and it has a target attribute then
Index: include/clang/Frontend/CodeGenOptions.def
===================================================================
--- include/clang/Frontend/CodeGenOptions.def
+++ include/clang/Frontend/CodeGenOptions.def
@@ -152,6 +152,8 @@
CODEGENOPT(StackRealignment , 1, 0) ///< Control whether to permit stack
///< realignment.
+CODEGENOPT(ForceAlignStack , 1, 0) ///< Control whether to force stack
+ ///< realignment.
CODEGENOPT(UseInitArray , 1, 0) ///< Control whether to use .init_array or
///< .ctors.
VALUE_CODEGENOPT(StackAlignment , 32, 0) ///< Overrides default stack
Index: include/clang/Driver/CC1Options.td
===================================================================
--- include/clang/Driver/CC1Options.td
+++ include/clang/Driver/CC1Options.td
@@ -170,6 +170,8 @@
HelpText<"Emit an error if a C++ static local initializer would need a guard variable">;
def no_implicit_float : Flag<["-"], "no-implicit-float">,
HelpText<"Don't generate implicit floating point instructions">;
+def force_align_stack : Flag<["-"], "force-align-stack">,
+ HelpText<"Force realign the stack at entry to every function">;
def fdump_vtable_layouts : Flag<["-"], "fdump-vtable-layouts">,
HelpText<"Dump the layouts of all vtables that will be emitted in a translation unit">;
def fmerge_functions : Flag<["-"], "fmerge-functions">,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11815.32592.patch
Type: text/x-patch
Size: 3226 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150819/17a12359/attachment.bin>
More information about the cfe-commits
mailing list