On Thu, Apr 30, 2020 at 10:44 AM Jakub Jelinek <ja...@redhat.com> wrote: > > Hi! > On Thu, Apr 30, 2020 at 08:42:39AM +0200, Richard Biener wrote: > > , CHANGES_URL ("gcc-10/changes.html#empty_base"); > > > > where the macro would just use preprocessor string concatenation? > > Ok, the following patch implements it (doesn't introduce a separate > macro and just uses CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"), > in addition adds the documentation Joseph requested. > > Tested on x86_64-linux and with crosses to s390x-linux and > powerpc64le-linux, ok for trunk?
OK. Richard. > 2020-04-30 Jakub Jelinek <ja...@redhat.com> > > * configure.ac (--with-documentation-root-url, > --with-changes-root-url): Diagnose URL not ending with /, > use AC_DEFINE_UNQUOTED instead of AC_SUBST. > * opts.h (get_changes_url): Remove. > * opts.c (get_changes_url): Remove. > * Makefile.in (CFLAGS-opts.o): Don't add -DDOCUMENTATION_ROOT_URL > or -DCHANGES_ROOT_URL. > * doc/install.texi (--with-documentation-root-url, > --with-changes-root-url): Document. > * config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Don't call > get_changes_url and free, change url variable type to const char * and > set it to CHANGES_ROOT_URL "gcc-10/changes.html#empty_base". > * config/s390/s390.c (s390_function_arg_vector, > s390_function_arg_float): Likewise. > * config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate): > Likewise. > * config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate): > Likewise. > * config.in: Regenerate. > * configure: Regenerate. > > --- gcc/configure.ac.jj 2020-04-29 22:41:05.086585150 +0200 > +++ gcc/configure.ac 2020-04-30 09:35:29.800894085 +0200 > @@ -979,12 +979,13 @@ AC_ARG_WITH(documentation-root-url, > [case "$withval" in > yes) AC_MSG_ERROR([documentation root URL not specified]) ;; > no) AC_MSG_ERROR([documentation root URL not specified]) ;; > - *) DOCUMENTATION_ROOT_URL="$withval" > - ;; > + */) DOCUMENTATION_ROOT_URL="$withval" ;; > + *) AC_MSG_ERROR([documentation root URL does not end with /]) ;; > esac], > DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/" > ) > -AC_SUBST(DOCUMENTATION_ROOT_URL) > +AC_DEFINE_UNQUOTED(DOCUMENTATION_ROOT_URL,"$DOCUMENTATION_ROOT_URL", > + [Define to the root for documentation URLs.]) > > # Allow overriding the default URL for GCC changes > AC_ARG_WITH(changes-root-url, > @@ -993,12 +994,13 @@ AC_ARG_WITH(changes-root-url, > [case "$withval" in > yes) AC_MSG_ERROR([changes root URL not specified]) ;; > no) AC_MSG_ERROR([changes root URL not specified]) ;; > - *) CHANGES_ROOT_URL="$withval" > - ;; > + */) CHANGES_ROOT_URL="$withval" ;; > + *) AC_MSG_ERROR([changes root URL does not end with /]) ;; > esac], > CHANGES_ROOT_URL="https://gcc.gnu.org/" > ) > -AC_SUBST(CHANGES_ROOT_URL) > +AC_DEFINE_UNQUOTED(CHANGES_ROOT_URL,"$CHANGES_ROOT_URL", > + [Define to the root for URLs about GCC changes.]) > > # Sanity check enable_languages in case someone does not run the toplevel > # configure # script. > --- gcc/opts.h.jj 2020-04-29 22:41:05.089585106 +0200 > +++ gcc/opts.h 2020-04-30 09:38:20.110367236 +0200 > @@ -464,7 +464,6 @@ extern void parse_options_from_collect_g > int *); > > extern void prepend_xassembler_to_collect_as_options (const char *, obstack > *); > -extern char *get_changes_url (const char *); > > /* Set OPTION in OPTS to VALUE if the option is not set in OPTS_SET. */ > > --- gcc/opts.c.jj 2020-04-29 22:41:05.090585091 +0200 > +++ gcc/opts.c 2020-04-30 09:37:17.039303011 +0200 > @@ -3190,16 +3190,6 @@ get_option_url (diagnostic_context *, in > 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 { > --- gcc/Makefile.in.jj 2020-04-29 22:41:05.088585120 +0200 > +++ gcc/Makefile.in 2020-04-30 09:36:14.201235329 +0200 > @@ -2186,9 +2186,6 @@ lto-wrapper$(exeext): $(LTO_WRAPPER_OBJS > $(LTO_WRAPPER_OBJS) libcommon-target.a $(LIBS) > mv -f T$@ $@ > > -CFLAGS-opts.o += -DDOCUMENTATION_ROOT_URL=\"@DOCUMENTATION_ROOT_URL@\" > -CFLAGS-opts.o += -DCHANGES_ROOT_URL=\"@CHANGES_ROOT_URL@\" > - > # Files used by all variants of C or by the stand-alone pre-processor. > > CFLAGS-c-family/c-opts.o += @TARGET_SYSTEM_ROOT_DEFINE@ > --- gcc/doc/install.texi.jj 2020-04-23 14:42:07.614123663 +0200 > +++ gcc/doc/install.texi 2020-04-30 10:13:09.500365247 +0200 > @@ -684,6 +684,19 @@ if you determine that they are not bugs > > The default value refers to the FSF's GCC bug tracker. > > +@item --with-documentation-root-url=@var{url} > +Specify the URL root that contains GCC option documentation. The @var{url} > +should end with a @code{/} character. > + > +The default value is > @uref{https://gcc.gnu.org/onlinedocs/,,https://gcc.gnu.org/onlinedocs/}. > + > +@item --with-changes-root-url=@var{url} > +Specify the URL root that contains information about changes in GCC > +releases like @code{gcc-@var{version}/changes.html}. > +The @var{url} should end with a @code{/} character. > + > +The default value is @uref{https://gcc.gnu.org/,,https://gcc.gnu.org/}. > + > @end table > > @heading Target specification > --- gcc/config/arm/arm.c.jj 2020-04-29 22:41:05.096585003 +0200 > +++ gcc/config/arm/arm.c 2020-04-30 09:39:24.493412004 +0200 > @@ -6416,7 +6416,8 @@ aapcs_vfp_is_call_or_return_candidate (e > && ((alt = aapcs_vfp_sub_candidate (type, &new_mode, NULL)) > != ag_count)) > { > - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); > + const char *url > + = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; > gcc_assert (alt == -1); > last_reported_type_uid = uid; > /* Use TYPE_MAIN_VARIANT to strip any redundant const > @@ -6431,7 +6432,6 @@ aapcs_vfp_is_call_or_return_candidate (e > "type %qT when C++17 is enabled changed to match " > "C++14 %{in GCC 10.1%}", > TYPE_MAIN_VARIANT (type), url); > - free (url); > } > *count = ag_count; > } > --- gcc/config/s390/s390.c.jj 2020-04-29 22:41:05.101584929 +0200 > +++ gcc/config/s390/s390.c 2020-04-30 09:41:23.234650255 +0200 > @@ -11960,7 +11960,7 @@ s390_function_arg_vector (machine_mode m > unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (orig_type)); > if (uid != last_reported_type_uid) > { > - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); > + const char *url = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; > last_reported_type_uid = uid; > if (empty_base_seen & 1) > inform (input_location, > @@ -11972,7 +11972,6 @@ s390_function_arg_vector (machine_mode m > "parameter passing for argument of type %qT with " > "%<[[no_unique_address]]%> members changed " > "%{in GCC 10.1%}", orig_type, url); > - free (url); > } > } > return true; > @@ -12038,7 +12037,7 @@ s390_function_arg_float (machine_mode mo > unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (orig_type)); > if (uid != last_reported_type_uid) > { > - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); > + const char *url = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; > last_reported_type_uid = uid; > if (empty_base_seen & 1) > inform (input_location, > @@ -12050,7 +12049,6 @@ s390_function_arg_float (machine_mode mo > "parameter passing for argument of type %qT with " > "%<[[no_unique_address]]%> members changed " > "%{in GCC 10.1%}", orig_type, url); > - free (url); > } > } > > --- gcc/config/aarch64/aarch64.c.jj 2020-04-29 22:41:05.098584973 +0200 > +++ gcc/config/aarch64/aarch64.c 2020-04-30 09:40:07.694771031 +0200 > @@ -16883,7 +16883,8 @@ aarch64_vfp_is_call_or_return_candidate > && ((alt = aapcs_vfp_sub_candidate (type, &new_mode, NULL)) > != ag_count)) > { > - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); > + const char *url > + = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; > gcc_assert (alt == -1); > last_reported_type_uid = uid; > /* Use TYPE_MAIN_VARIANT to strip any redundant const > @@ -16898,7 +16899,6 @@ aarch64_vfp_is_call_or_return_candidate > "type %qT when C++17 is enabled changed to match " > "C++14 %{in GCC 10.1%}", > TYPE_MAIN_VARIANT (type), url); > - free (url); > } > > if (is_ha != NULL) *is_ha = true; > --- gcc/config/rs6000/rs6000-call.c.jj 2020-04-29 22:41:05.099584959 +0200 > +++ gcc/config/rs6000/rs6000-call.c 2020-04-30 09:40:46.140200621 +0200 > @@ -5748,8 +5748,8 @@ rs6000_discover_homogeneous_aggregate (m > unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (type)); > if (uid != last_reported_type_uid) > { > - char *url > - = get_changes_url ("gcc-10/changes.html#empty_base"); > + const char *url > + = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; > if (empty_base_seen & 1) > inform (input_location, > "parameter passing for argument of type %qT " > @@ -5761,7 +5761,6 @@ rs6000_discover_homogeneous_aggregate (m > "with %<[[no_unique_address]]%> members " > "changed %{in GCC 10.1%}", type, url); > last_reported_type_uid = uid; > - free (url); > } > } > return true; > --- gcc/config.in.jj 2020-02-15 12:51:17.422090432 +0100 > +++ gcc/config.in 2020-04-30 09:35:40.289738417 +0200 > @@ -24,6 +24,12 @@ > #endif > > > +/* Define to the root for URLs about GCC changes. */ > +#ifndef USED_FOR_TARGET > +#undef CHANGES_ROOT_URL > +#endif > + > + > /* Define as the number of bits in a byte, if `limits.h' doesn't. */ > #ifndef USED_FOR_TARGET > #undef CHAR_BIT > @@ -82,6 +88,12 @@ > #endif > > > +/* Define to the root for documentation URLs. */ > +#ifndef USED_FOR_TARGET > +#undef DOCUMENTATION_ROOT_URL > +#endif > + > + > /* Define 0/1 if static analyzer feature is enabled. */ > #ifndef USED_FOR_TARGET > #undef ENABLE_ANALYZER > --- gcc/configure.jj 2020-04-29 22:41:05.539578490 +0200 > +++ gcc/configure 2020-04-30 09:35:37.772775809 +0200 > @@ -819,8 +819,6 @@ accel_dir_suffix > real_target_noncanonical > enable_as_accelerator > gnat_install_lib > -CHANGES_ROOT_URL > -DOCUMENTATION_ROOT_URL > REPORT_BUGS_TEXI > REPORT_BUGS_TO > PKGVERSION > @@ -7851,8 +7849,8 @@ if test "${with_documentation_root_url+s > withval=$with_documentation_root_url; case "$withval" in > yes) as_fn_error $? "documentation root URL not specified" "$LINENO" 5 > ;; > no) as_fn_error $? "documentation root URL not specified" "$LINENO" 5 > ;; > - *) DOCUMENTATION_ROOT_URL="$withval" > - ;; > + */) DOCUMENTATION_ROOT_URL="$withval" ;; > + *) as_fn_error $? "documentation root URL does not end with /" > "$LINENO" 5 ;; > esac > else > DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/" > @@ -7860,6 +7858,10 @@ else > fi > > > +cat >>confdefs.h <<_ACEOF > +#define DOCUMENTATION_ROOT_URL "$DOCUMENTATION_ROOT_URL" > +_ACEOF > + > > # Allow overriding the default URL for GCC changes > > @@ -7868,8 +7870,8 @@ if test "${with_changes_root_url+set}" = > withval=$with_changes_root_url; case "$withval" in > yes) as_fn_error $? "changes root URL not specified" "$LINENO" 5 ;; > no) as_fn_error $? "changes root URL not specified" "$LINENO" 5 ;; > - *) CHANGES_ROOT_URL="$withval" > - ;; > + */) CHANGES_ROOT_URL="$withval" ;; > + *) as_fn_error $? "changes root URL does not end with /" "$LINENO" 5 > ;; > esac > else > CHANGES_ROOT_URL="https://gcc.gnu.org/" > @@ -7877,6 +7879,10 @@ else > fi > > > +cat >>confdefs.h <<_ACEOF > +#define CHANGES_ROOT_URL "$CHANGES_ROOT_URL" > +_ACEOF > + > > # Sanity check enable_languages in case someone does not run the toplevel > # configure # script. > @@ -19009,7 +19015,7 @@ else > lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 > lt_status=$lt_dlunknown > cat > conftest.$ac_ext <<_LT_EOF > -#line 19012 "configure" > +#line 19018 "configure" > #include "confdefs.h" > > #if HAVE_DLFCN_H > @@ -19115,7 +19121,7 @@ else > lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 > lt_status=$lt_dlunknown > cat > conftest.$ac_ext <<_LT_EOF > -#line 19118 "configure" > +#line 19124 "configure" > #include "confdefs.h" > > #if HAVE_DLFCN_H > > > Jakub >