Commit 5c846a81 by Martin Liska Committed by Martin Liska

Mark -fstack-protect as optimization flag.

	PR middle-end/71585
	* common.opt (flag_stack_protect): Mark the flag as optimization
	flag.
	* ipa-inline-transform.c (inline_call): Remove unnecessary call
	of build_optimization_node.
	* gcc.dg/pr71585.c: New test.
	* gcc.dg/pr71585-2.c: New test.
	* gcc.dg/pr71585-3.c: New test.

From-SVN: r237845
parent fafe9318
2016-06-29 Martin Liska <mliska@suse.cz>
PR middle-end/71585
* common.opt (flag_stack_protect): Mark the flag as optimization
flag.
* ipa-inline-transform.c (inline_call): Remove unnecessary call
of build_optimization_node.
2016-06-29 Yuri Rumyantsev <ysrumyan@gmail.com>
PR tree-optimization/70729
......
......@@ -2221,19 +2221,19 @@ Common RejectNegative Joined Var(common_deferred_options) Defer
-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
fstack-protector
Common Report Var(flag_stack_protect, 1) Init(-1)
Common Report Var(flag_stack_protect, 1) Init(-1) Optimization
Use propolice as a stack protection method.
fstack-protector-all
Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1)
Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
Use a stack protection method for every function.
fstack-protector-strong
Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1)
Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
Use a smart stack protection method for certain functions.
fstack-protector-explicit
Common Report RejectNegative Var(flag_stack_protect, 4)
Common Report RejectNegative Var(flag_stack_protect, 4) Optimization
Use stack protection method only for functions with the stack_protect attribute.
fstack-usage
......
......@@ -342,10 +342,10 @@ inline_call (struct cgraph_edge *e, bool update_original,
if (dump_file)
fprintf (dump_file, "Dropping flag_strict_aliasing on %s:%i\n",
to->name (), to->order);
build_optimization_node (&opts);
DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl)
= build_optimization_node (&opts);
}
inline_summary *caller_info = inline_summaries->get (to);
inline_summary *callee_info = inline_summaries->get (callee);
if (!caller_info->fp_expressions && callee_info->fp_expressions)
......@@ -402,7 +402,6 @@ inline_call (struct cgraph_edge *e, bool update_original,
if (dump_file)
fprintf (dump_file, "Copying FP flags from %s:%i to %s:%i\n",
callee->name (), callee->order, to->name (), to->order);
build_optimization_node (&opts);
DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl)
= build_optimization_node (&opts);
}
......
2016-06-29 Martin Liska <mliska@suse.cz>
* gcc.dg/pr71585.c: New test.
* gcc.dg/pr71585-2.c: New test.
* gcc.dg/pr71585-3.c: New test.
2016-06-29 Yuri Rumyantsev <ysrumyan@gmail.com>
PR tree-optimization/70729
......
/* Test that stack protection is done on chosen functions. */
/* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */
/* { dg-options "-O2 -fstack-protector-all" } */
/* This test checks the presence of __stack_chk_fail function in assembler.
* Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC.
*/
/* { dg-require-effective-target nonpic } */
static int foo()
{
return 0;
}
#pragma GCC push_options
#pragma GCC optimize ("-fno-stack-protector")
int main() { foo (); }
#pragma GCC pop_options
/* { dg-final { scan-assembler-times "stack_chk_fail" 0 } } */
/* Test that stack protection is done on chosen functions. */
/* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */
/* { dg-options "-O2 -fstack-protector-all" } */
/* This test checks the presence of __stack_chk_fail function in assembler.
* Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC.
*/
/* { dg-require-effective-target nonpic } */
#pragma GCC push_options
#pragma GCC optimize ("-fno-stack-protector")
int foo()
{
return 0;
}
#pragma GCC pop_options
int main() { foo (); }
/* { dg-final { scan-assembler-times "stack_chk_fail" 1 } } */
/* Test that stack protection is done on chosen functions. */
/* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */
/* { dg-options "-O2 -fstack-protector-all" } */
/* This test checks the presence of __stack_chk_fail function in assembler.
* Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC.
*/
/* { dg-require-effective-target nonpic } */
#pragma GCC push_options
#pragma GCC optimize ("-fno-stack-protector")
__attribute__((constructor)) void foo()
{
asm ("");
}
#pragma GCC pop_options
int main() { return 0; }
/* { dg-final { scan-assembler-times "stack_chk_fail" 1 } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment