aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr H. Dabrowski <phd@phd.re>2020-11-13 12:27:16 -0500
committerJeff Law <law@torsion.usersys.redhat.com>2020-11-13 12:28:33 -0500
commit6f1ae1ecd351348eb33b515c5e23778651bee028 (patch)
tree78b8d2ec786a7f7dc59919238643cc01b08ff1a9
parente7e0eeeb6e6707be2a6c6da49d4b6be3199e2af8 (diff)
downloadgcc-6f1ae1ecd351348eb33b515c5e23778651bee028.zip
gcc-6f1ae1ecd351348eb33b515c5e23778651bee028.tar.gz
gcc-6f1ae1ecd351348eb33b515c5e23778651bee028.tar.bz2
Do not warn about unused macros while processing #pragma GCC optimize
libcpp PR c++/91318 * include/cpplib.h: Added cpp_define_unused(), cpp_define_formatted_unused() * directives.c: Likewise. gcc/c-family PR c++/91318 * c-cppbuiltin.c: c_cpp_builtins_optimize_pragma(): use cpp_define_unused()
-rw-r--r--gcc/c-family/c-cppbuiltin.c14
-rw-r--r--libcpp/directives.c23
-rw-r--r--libcpp/include/cpplib.h4
3 files changed, 34 insertions, 7 deletions
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index e5ebb79..15f71e6 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -581,41 +581,41 @@ c_cpp_builtins_optimize_pragma (cpp_reader *pfile, tree prev_tree,
/* Other target-independent built-ins determined by command-line
options. */
if (!prev->x_optimize_size && cur->x_optimize_size)
- cpp_define (pfile, "__OPTIMIZE_SIZE__");
+ cpp_define_unused (pfile, "__OPTIMIZE_SIZE__");
else if (prev->x_optimize_size && !cur->x_optimize_size)
cpp_undef (pfile, "__OPTIMIZE_SIZE__");
if (!prev->x_optimize && cur->x_optimize)
- cpp_define (pfile, "__OPTIMIZE__");
+ cpp_define_unused (pfile, "__OPTIMIZE__");
else if (prev->x_optimize && !cur->x_optimize)
cpp_undef (pfile, "__OPTIMIZE__");
prev_fast_math = fast_math_flags_struct_set_p (prev);
cur_fast_math = fast_math_flags_struct_set_p (cur);
if (!prev_fast_math && cur_fast_math)
- cpp_define (pfile, "__FAST_MATH__");
+ cpp_define_unused (pfile, "__FAST_MATH__");
else if (prev_fast_math && !cur_fast_math)
cpp_undef (pfile, "__FAST_MATH__");
if (!prev->x_flag_signaling_nans && cur->x_flag_signaling_nans)
- cpp_define (pfile, "__SUPPORT_SNAN__");
+ cpp_define_unused (pfile, "__SUPPORT_SNAN__");
else if (prev->x_flag_signaling_nans && !cur->x_flag_signaling_nans)
cpp_undef (pfile, "__SUPPORT_SNAN__");
if (!prev->x_flag_errno_math && cur->x_flag_errno_math)
cpp_undef (pfile, "__NO_MATH_ERRNO__");
else if (prev->x_flag_errno_math && !cur->x_flag_errno_math)
- cpp_define (pfile, "__NO_MATH_ERRNO__");
+ cpp_define_unused (pfile, "__NO_MATH_ERRNO__");
if (!prev->x_flag_finite_math_only && cur->x_flag_finite_math_only)
{
cpp_undef (pfile, "__FINITE_MATH_ONLY__");
- cpp_define (pfile, "__FINITE_MATH_ONLY__=1");
+ cpp_define_unused (pfile, "__FINITE_MATH_ONLY__=1");
}
else if (prev->x_flag_finite_math_only && !cur->x_flag_finite_math_only)
{
cpp_undef (pfile, "__FINITE_MATH_ONLY__");
- cpp_define (pfile, "__FINITE_MATH_ONLY__=0");
+ cpp_define_unused (pfile, "__FINITE_MATH_ONLY__=0");
}
}
diff --git a/libcpp/directives.c b/libcpp/directives.c
index 4295a67..c4ecb96 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -2412,6 +2412,15 @@ cpp_define (cpp_reader *pfile, const char *str)
run_directive (pfile, T_DEFINE, buf, count);
}
+/* Like cpp_define, but does not warn about unused macro. */
+void
+cpp_define_unused (cpp_reader *pfile, const char *str)
+{
+ unsigned char warn_unused_macros = CPP_OPTION (pfile, warn_unused_macros);
+ CPP_OPTION (pfile, warn_unused_macros) = 0;
+ cpp_define (pfile, str);
+ CPP_OPTION (pfile, warn_unused_macros) = warn_unused_macros;
+}
/* Use to build macros to be run through cpp_define() as
described above.
@@ -2431,6 +2440,20 @@ cpp_define_formatted (cpp_reader *pfile, const char *fmt, ...)
free (ptr);
}
+/* Like cpp_define_formatted, but does not warn about unused macro. */
+void
+cpp_define_formatted_unused (cpp_reader *pfile, const char *fmt, ...)
+{
+ char *ptr;
+
+ va_list ap;
+ va_start (ap, fmt);
+ ptr = xvasprintf (fmt, ap);
+ va_end (ap);
+
+ cpp_define_unused (pfile, ptr);
+ free (ptr);
+}
/* Slight variant of the above for use by initialize_builtins. */
void
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 8900e77..ce00952 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -1076,8 +1076,12 @@ extern cppchar_t cpp_host_to_exec_charset (cpp_reader *, cppchar_t);
/* Used to register macros and assertions, perhaps from the command line.
The text is the same as the command line argument. */
extern void cpp_define (cpp_reader *, const char *);
+extern void cpp_define_unused (cpp_reader *, const char *);
extern void cpp_define_formatted (cpp_reader *pfile,
const char *fmt, ...) ATTRIBUTE_PRINTF_2;
+extern void cpp_define_formatted_unused (cpp_reader *pfile,
+ const char *fmt,
+ ...) ATTRIBUTE_PRINTF_2;
extern void cpp_assert (cpp_reader *, const char *);
extern void cpp_undef (cpp_reader *, const char *);
extern void cpp_unassert (cpp_reader *, const char *);