aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-04-29 22:41:47 +0200
committerJakub Jelinek <jakub@redhat.com>2020-04-29 22:41:47 +0200
commit691eeb65a01dab3084b6ce381737adf097bd2e65 (patch)
tree0d1b729fa533287e181c110c95c7543f9571e358 /gcc/opts.c
parent48e54fea7ba4a7cb7b3d1505951383120220e394 (diff)
downloadgcc-691eeb65a01dab3084b6ce381737adf097bd2e65.zip
gcc-691eeb65a01dab3084b6ce381737adf097bd2e65.tar.gz
gcc-691eeb65a01dab3084b6ce381737adf097bd2e65.tar.bz2
diagnostics: Add %{...%} pretty-format support for URLs and use it in -Wpsabi diagnostics
The following patch attempts to use the diagnostics URL support if available to provide more information about the C++17 empty base and C++20 [[no_unique_address]] empty class ABI changes in -Wpsabi diagnostics. in GCC 10.1 at the end of the diagnostics is then in some terminals underlined with a dotted line and points to a (to be written) anchor in gcc-10/changes.html which we need to write anyway. 2020-04-29 Jakub Jelinek <jakub@redhat.com> * configure.ac (-with-changes-root-url): New configure option, defaulting to https://gcc.gnu.org/. * Makefile.in (CFLAGS-opts.o): Define CHANGES_ROOT_URL for opts.c. * pretty-print.c (get_end_url_string): New function. (pp_format): Handle %{ and %} for URLs. (pp_begin_url): Use pp_string instead of pp_printf. (pp_end_url): Use get_end_url_string. * opts.h (get_changes_url): Declare. * opts.c (get_changes_url): New function. * config/rs6000/rs6000-call.c: Include opts.h. (rs6000_discover_homogeneous_aggregate): Use %{in GCC 10.1%} instead of just in GCC 10.1 in diagnostics and add URL. * config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Likewise. * config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate): Likewise. * config/s390/s390.c (s390_function_arg_vector, s390_function_arg_float): Likewise. * configure: Regenerated. * c-format.c (PP_FORMAT_CHAR_TABLE): Add %{ and %}.
Diffstat (limited to 'gcc/opts.c')
-rw-r--r--gcc/opts.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index c212a1a..12c0098 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -3190,6 +3190,16 @@ get_option_url (diagnostic_context *, int option_index)
return NULL;
}
+/* Given "gcc-10/changes.html#foobar", return that URL under
+ CHANGES_ROOT_URL (see --with-changes-root-url).
+ The caller is responsible for freeing the returned string. */
+
+char *
+get_changes_url (const char *str)
+{
+ return concat (CHANGES_ROOT_URL, str, NULL);
+}
+
#if CHECKING_P
namespace selftest {