diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index 826b3b9..c34b76b 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -576,10 +576,13 @@ c_cpp_builtins_optimize_pragma (cpp_reader *pfile, tree prev_tree, else if (prev->x_optimize_size && !cur->x_optimize_size) cpp_undef (pfile, "__OPTIMIZE_SIZE__"); - if (!prev->x_optimize && cur->x_optimize) + if (!prev->x_optimize && cur->x_optimize) { cpp_define (pfile, "__OPTIMIZE__"); - else if (prev->x_optimize && !cur->x_optimize) + cpp_define (pfile, "_FORTIFY_SOURCE=(__OPTIMIZE__ > 0 ? 2 : 0)"); + } else if (prev->x_optimize && !cur->x_optimize) { cpp_undef (pfile, "__OPTIMIZE__"); + cpp_undef (pfile, "_FORTIFY_SOURCE"); + } prev_fast_math = fast_math_flags_struct_set_p (prev); cur_fast_math = fast_math_flags_struct_set_p (cur); @@ -1336,7 +1339,10 @@ c_cpp_builtins (cpp_reader *pfile) builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0); /* Fortify Source enabled by default w/optimization. */ - cpp_define (pfile, "_FORTIFY_SOURCE=((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)"); + if (cpp_defined (pfile, + (const unsigned char *) "__OPTIMIZE__", + (int) strlen("__OPTIMIZE__"))) + cpp_define (pfile, "_FORTIFY_SOURCE=(__OPTIMIZE__ > 0 ? 2 : 0)"); /* Misc. */ if (flag_gnu89_inline)