Compare commits
129 Commits
Author | SHA1 | Date |
---|---|---|
Jakub Jelinek | 891cef7d9b | |
Jakub Jelinek | 9bce8e2449 | |
Jakub Jelinek | 55f9b2f336 | |
Fedora Release Engineering | f8b6352429 | |
Jakub Jelinek | 5e141990fb | |
Jakub Jelinek | 912e74c756 | |
Jakub Jelinek | b84725ac52 | |
Jakub Jelinek | 7de85a2603 | |
Jakub Jelinek | 576d41c1c6 | |
Jakub Jelinek | 562d27c22f | |
Jakub Jelinek | 57a884df51 | |
Jakub Jelinek | 04dfce99db | |
Jakub Jelinek | b05570344e | |
Jakub Jelinek | 52eb664223 | |
Florian Weimer | 0d8c061e19 | |
Jerry James | 56772a9401 | |
Jerry James | 4110c03341 | |
Jerry James | 4c8c128cd0 | |
Miro Hrončok | f684732e50 | |
Jakub Jelinek | 4562ca924e | |
Fedora Release Engineering | 90028182f3 | |
Jakub Jelinek | 6919aa138f | |
Jakub Jelinek | 672c273c6d | |
Jakub Jelinek | 94498d7104 | |
Jakub Jelinek | 28742415b7 | |
Jakub Jelinek | f2dc6d80c8 | |
Jakub Jelinek | b2a5d6a477 | |
Jakub Jelinek | fd99b9378d | |
Jakub Jelinek | a3fcce8f5b | |
Jakub Jelinek | 84af04ddb6 | |
Jakub Jelinek | b6b1340286 | |
Jakub Jelinek | 84ce3f0d05 | |
Jakub Jelinek | 5c04074052 | |
Jakub Jelinek | 4d0e748417 | |
Jakub Jelinek | 1d6c11d8df | |
Jakub Jelinek | 843493ecf7 | |
Jakub Jelinek | bad9bc25a4 | |
Jakub Jelinek | f790525bec | |
Jakub Jelinek | fc147e70c0 | |
Jakub Jelinek | 8ccdd26200 | |
Jakub Jelinek | d1c6bd89f3 | |
Jakub Jelinek | e0c920a406 | |
Jakub Jelinek | d228ee264c | |
Jakub Jelinek | e6073613ef | |
Jakub Jelinek | f147a68289 | |
Jakub Jelinek | 7ee3a099fa | |
Jakub Jelinek | fe09f8496b | |
Jakub Jelinek | 16bcddd9d4 | |
Fedora Release Engineering | 7545ecb969 | |
Jakub Jelinek | a6c3c8f082 | |
Igor Gnatenko | d895623061 | |
Igor Gnatenko | a71fb3364e | |
Igor Gnatenko | db0aca6b64 | |
Jakub Jelinek | 215844b31b | |
Jakub Jelinek | 80dc8803df | |
Igor Gnatenko | 3759f6f554 | |
Jakub Jelinek | adee8bcb39 | |
Jakub Jelinek | cee0dddd34 | |
Jakub Jelinek | da335fc250 | |
Jakub Jelinek | bcdeb85901 | |
Jakub Jelinek | 1321d9a8de | |
Jakub Jelinek | 3694befabb | |
Jakub Jelinek | 2a22f8c83a | |
Jakub Jelinek | 866b034132 | |
Jakub Jelinek | 17d43f4d58 | |
Jakub Jelinek | b627ff6a1c | |
Jakub Jelinek | 98b4937fcb | |
Jakub Jelinek | 858f1e25fb | |
Jakub Jelinek | e66bcabdd3 | |
Jakub Jelinek | a2239731d4 | |
Jakub Jelinek | c05efdcd33 | |
Jakub Jelinek | 6e4a12be24 | |
Jakub Jelinek | 7df147abdd | |
Jakub Jelinek | 2edf51cd28 | |
Fedora Release Engineering | 3deee803bf | |
Jakub Jelinek | 8602ede777 | |
Miro Hrončok | 8fb0e5b0d3 | |
Jakub Jelinek | 7ad4cfb1f2 | |
Jakub Jelinek | c01972f342 | |
Jakub Jelinek | b1fe12b88a | |
Miro Hrončok | 0aaf98d346 | |
Jakub Jelinek | c0d3a20ab3 | |
Jakub Jelinek | 4b90559c50 | |
Miro Hrončok | e0b3768e1a | |
Jakub Jelinek | 391f8204b0 | |
Jakub Jelinek | b7ec01b44a | |
Jakub Jelinek | db4105af40 | |
Jakub Jelinek | eb398c7fb1 | |
Jakub Jelinek | 0d6e9e6a5b | |
Marek Polacek | 3ae68fd84a | |
Jakub Jelinek | 9647f3f8db | |
Jakub Jelinek | 0e0506dd37 | |
Jakub Jelinek | 1bfe0e3c3b | |
Jakub Jelinek | 83dbb2847c | |
Jakub Jelinek | 86d615d880 | |
Jakub Jelinek | b182d5ff6b | |
Jakub Jelinek | 2a24f771d1 | |
Jakub Jelinek | f445959efa | |
Jakub Jelinek | 16819750d2 | |
Jakub Jelinek | d301a3c7b8 | |
Igor Gnatenko | ff5dc29cd1 | |
Igor Gnatenko | 7d69d114a8 | |
Jakub Jelinek | 497de73bd7 | |
Jakub Jelinek | c0ae016cb4 | |
Jakub Jelinek | 7c58fda150 | |
Jakub Jelinek | 313e678076 | |
Jakub Jelinek | 08f661c823 | |
Jakub Jelinek | d40df5fcf2 | |
Jakub Jelinek | e6bd153753 | |
Fedora Release Engineering | cc9b5fa3ba | |
Florian Weimer | 47b8ada335 | |
Richard W.M. Jones | ca8c0f7dc6 | |
Jeff Law | fa22fac534 | |
Jakub Jelinek | 216b951886 | |
Jakub Jelinek | 7a1512fd56 | |
Jakub Jelinek | 3139eaf997 | |
Jakub Jelinek | da33ffbe57 | |
Jakub Jelinek | b147991d7c | |
Jakub Jelinek | e400728936 | |
Jeff Law | 6af92eba78 | |
Jakub Jelinek | e90615843b | |
Jakub Jelinek | a6ea9c4518 | |
Jakub Jelinek | 402f1e9204 | |
Jakub Jelinek | f36e50eab5 | |
Jakub Jelinek | 8f4badaa38 | |
Jakub Jelinek | d69736566d | |
Marek Polacek | 544398b502 | |
Jeff Law | 2cf19e11cb | |
Jeff Law | e987aff0a2 |
|
@ -1,26 +1,8 @@
|
||||||
/gcc-7.0.1-20170126.tar.bz2
|
/gcc-10.0.1-20200118.tar.xz
|
||||||
/nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.bz2
|
/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
|
||||||
/nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.bz2
|
/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
|
||||||
/gcc-7.0.1-20170128.tar.bz2
|
/gcc-10.0.1-20200121.tar.xz
|
||||||
/gcc-7.0.1-20170131.tar.bz2
|
/gcc-10.0.1-20200123.tar.xz
|
||||||
/gcc-7.0.1-20170201.tar.bz2
|
/gcc-10.0.1-20200126.tar.xz
|
||||||
/gcc-7.0.1-20170204.tar.bz2
|
/gcc-10.0.1-20200130.tar.xz
|
||||||
/gcc-7.0.1-20170209.tar.bz2
|
/gcc-10.0.1-20200216.tar.xz
|
||||||
/gcc-7.0.1-20170211.tar.bz2
|
|
||||||
/gcc-7.0.1-20170219.tar.bz2
|
|
||||||
/gcc-7.0.1-20170225.tar.bz2
|
|
||||||
/gcc-7.0.1-20170308.tar.bz2
|
|
||||||
/gcc-7.0.1-20170309.tar.bz2
|
|
||||||
/gcc-7.0.1-20170327.tar.bz2
|
|
||||||
/gcc-7.0.1-20170410.tar.bz2
|
|
||||||
/gcc-7.0.1-20170421.tar.bz2
|
|
||||||
/gcc-7.0.1-20170425.tar.bz2
|
|
||||||
/gcc-7.1.1-20170503.tar.bz2
|
|
||||||
/gcc-7.1.1-20170526.tar.bz2
|
|
||||||
/gcc-7.1.1-20170622.tar.bz2
|
|
||||||
/gcc-7.1.1-20170708.tar.bz2
|
|
||||||
/gcc-7.1.1-20170711.tar.bz2
|
|
||||||
/gcc-7.1.1-20170718.tar.bz2
|
|
||||||
/gcc-7.1.1-20170802.tar.bz2
|
|
||||||
/gcc-7.2.1-20170829.tar.bz2
|
|
||||||
/gcc-7.2.1-20170915.tar.bz2
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
|
--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
|
||||||
+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
|
+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
|
||||||
@@ -481,7 +481,7 @@ AC_ARG_ENABLE(build-format-warnings,
|
@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings,
|
||||||
AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
|
AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
|
||||||
[],[enable_build_format_warnings=yes])
|
[],[enable_build_format_warnings=yes])
|
||||||
AS_IF([test $enable_build_format_warnings = no],
|
AS_IF([test $enable_build_format_warnings = no],
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
|
+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
|
||||||
ACX_PROG_CXX_WARNING_OPTS(
|
ACX_PROG_CXX_WARNING_OPTS(
|
||||||
m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
|
m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
|
||||||
[-Wcast-qual $wf_opt])), [loose_warn])
|
[-Wcast-qual -Wno-error=format-diag $wf_opt])),
|
||||||
--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
|
--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
|
||||||
+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
|
+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
|
||||||
@@ -6647,7 +6647,7 @@ else
|
@@ -6647,7 +6647,7 @@ else
|
|
@ -0,0 +1,20 @@
|
||||||
|
2019-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* d-spec.cc (lang_specific_driver): Make -shared-libphobos
|
||||||
|
the default rather than -static-libphobos.
|
||||||
|
|
||||||
|
--- gcc/d/d-spec.cc.jj 2019-01-01 12:37:49.502444257 +0100
|
||||||
|
+++ gcc/d/d-spec.cc 2019-01-17 17:09:45.364949246 +0100
|
||||||
|
@@ -405,9 +405,9 @@ lang_specific_driver (cl_decoded_option
|
||||||
|
/* Add `-lgphobos' if we haven't already done so. */
|
||||||
|
if (phobos_library != PHOBOS_NOLINK && need_phobos)
|
||||||
|
{
|
||||||
|
- /* Default to static linking. */
|
||||||
|
- if (phobos_library != PHOBOS_DYNAMIC)
|
||||||
|
- phobos_library = PHOBOS_STATIC;
|
||||||
|
+ /* Default to shared linking. */
|
||||||
|
+ if (phobos_library != PHOBOS_STATIC)
|
||||||
|
+ phobos_library = PHOBOS_DYNAMIC;
|
||||||
|
|
||||||
|
#ifdef HAVE_LD_STATIC_DYNAMIC
|
||||||
|
if (phobos_library == PHOBOS_DYNAMIC && static_link)
|
|
@ -1,14 +1,15 @@
|
||||||
2017-01-20 Jakub Jelinek <jakub@redhat.com>
|
2019-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* gcc.c (offload_targets_default): New variable.
|
* gcc.c (offload_targets_default): New variable.
|
||||||
(process_command): Set it if -foffload is defaulted.
|
(process_command): Set it if -foffload is defaulted.
|
||||||
(driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
|
(driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
|
||||||
into environment if -foffload has been defaulted.
|
into environment if -foffload has been defaulted.
|
||||||
* lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
|
* lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
|
||||||
(compile_images_for_offload_targets): If OFFLOAD_TARGET_DEFAULT
|
(compile_offload_image): If OFFLOAD_TARGET_DEFAULT
|
||||||
is in the environment, don't fail if corresponding mkoffload
|
is in the environment, don't fail if corresponding mkoffload
|
||||||
can't be found. Free and clear offload_names if no valid offload
|
can't be found.
|
||||||
is found.
|
(compile_images_for_offload_targets): Likewise. Free and clear
|
||||||
|
offload_names if no valid offload is found.
|
||||||
libgomp/
|
libgomp/
|
||||||
* target.c (gomp_load_plugin_for_device): If a plugin can't be
|
* target.c (gomp_load_plugin_for_device): If a plugin can't be
|
||||||
dlopened, assume it has no devices silently.
|
dlopened, assume it has no devices silently.
|
||||||
|
@ -57,18 +58,28 @@ libgomp/
|
||||||
|
|
||||||
enum lto_mode_d {
|
enum lto_mode_d {
|
||||||
LTO_MODE_NONE, /* Not doing LTO. */
|
LTO_MODE_NONE, /* Not doing LTO. */
|
||||||
@@ -790,8 +791,10 @@ compile_images_for_offload_targets (unsi
|
@@ -822,6 +823,12 @@ compile_offload_image (const char *targe
|
||||||
if (!target_names)
|
break;
|
||||||
return;
|
}
|
||||||
|
|
||||||
|
+ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV))
|
||||||
|
+ {
|
||||||
|
+ free_array_of_ptrs ((void **) paths, n_paths);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!compiler)
|
||||||
|
fatal_error (input_location,
|
||||||
|
"could not find %s in %s (consider using %<-B%>)",
|
||||||
|
@@ -885,6 +892,7 @@ compile_images_for_offload_targets (unsi
|
||||||
unsigned num_targets = parse_env_var (target_names, &names, NULL);
|
unsigned num_targets = parse_env_var (target_names, &names, NULL);
|
||||||
+ const char *target_names_default = getenv (OFFLOAD_TARGET_DEFAULT_ENV);
|
|
||||||
|
|
||||||
int next_name_entry = 0;
|
int next_name_entry = 0;
|
||||||
+ bool hsa_seen = false;
|
+ bool hsa_seen = false;
|
||||||
const char *compiler_path = getenv ("COMPILER_PATH");
|
const char *compiler_path = getenv ("COMPILER_PATH");
|
||||||
if (!compiler_path)
|
if (!compiler_path)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -804,18 +807,32 @@ compile_images_for_offload_targets (unsi
|
@@ -897,18 +905,26 @@ compile_images_for_offload_targets (unsi
|
||||||
/* HSA does not use LTO-like streaming and a different compiler, skip
|
/* HSA does not use LTO-like streaming and a different compiler, skip
|
||||||
it. */
|
it. */
|
||||||
if (strcmp (names[i], "hsa") == 0)
|
if (strcmp (names[i], "hsa") == 0)
|
||||||
|
@ -84,14 +95,8 @@ libgomp/
|
||||||
linker_opts, linker_opt_count);
|
linker_opts, linker_opt_count);
|
||||||
if (!offload_names[next_name_entry])
|
if (!offload_names[next_name_entry])
|
||||||
- fatal_error (input_location,
|
- fatal_error (input_location,
|
||||||
- "problem with building target image for %s\n", names[i]);
|
- "problem with building target image for %s", names[i]);
|
||||||
+ {
|
+ continue;
|
||||||
+ if (target_names_default != NULL)
|
|
||||||
+ continue;
|
|
||||||
+ fatal_error (input_location,
|
|
||||||
+ "problem with building target image for %s\n",
|
|
||||||
+ names[i]);
|
|
||||||
+ }
|
|
||||||
next_name_entry++;
|
next_name_entry++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
|
--- libada/Makefile.in.jj 2019-01-09 13:01:18.015608205 +0100
|
||||||
+++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
|
+++ libada/Makefile.in 2019-01-11 18:16:23.441726931 +0100
|
||||||
@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
|
@@ -71,18 +71,40 @@ version := $(shell @get_gcc_base_ver@ $(
|
||||||
|
libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
|
||||||
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
|
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
|
||||||
ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
|
|
||||||
|
|
||||||
+DEFAULTMULTIFLAGS :=
|
+DEFAULTMULTIFLAGS :=
|
||||||
+ifeq ($(MULTISUBDIR),)
|
+ifeq ($(MULTISUBDIR),)
|
||||||
|
@ -45,28 +45,17 @@
|
||||||
"PICFLAG_FOR_TARGET=$(PICFLAG)" \
|
"PICFLAG_FOR_TARGET=$(PICFLAG)" \
|
||||||
"THREAD_KIND=$(THREAD_KIND)" \
|
"THREAD_KIND=$(THREAD_KIND)" \
|
||||||
"TRACE=$(TRACE)" \
|
"TRACE=$(TRACE)" \
|
||||||
@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
|
@@ -93,7 +115,7 @@ LIBADA_FLAGS_TO_PASS = \
|
||||||
"exeext=.exeext.should.not.be.used " \
|
"exeext=.exeext.should.not.be.used " \
|
||||||
'CC=the.host.compiler.should.not.be.needed' \
|
'CC=the.host.compiler.should.not.be.needed' \
|
||||||
"GCC_FOR_TARGET=$(CC)" \
|
"GCC_FOR_TARGET=$(CC)" \
|
||||||
- "CFLAGS=$(CFLAGS)"
|
- "CFLAGS=$(CFLAGS)"
|
||||||
+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
|
+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
|
||||||
|
|
||||||
# Rules to build gnatlib.
|
.PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool
|
||||||
.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
|
|
||||||
--- gcc/ada/sem_util.adb (revision 161677)
|
|
||||||
+++ gcc/ada/sem_util.adb (working copy)
|
|
||||||
@@ -5487,7 +5487,7 @@ package body Sem_Util is
|
|
||||||
Exp : Node_Id;
|
|
||||||
Assn : Node_Id;
|
|
||||||
Choice : Node_Id;
|
|
||||||
- Comp_Type : Entity_Id;
|
|
||||||
+ Comp_Type : Entity_Id := Empty;
|
|
||||||
Is_Array_Aggr : Boolean;
|
|
||||||
|
|
||||||
begin
|
--- config-ml.in.jj 2019-01-09 12:50:16.646501448 +0100
|
||||||
--- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
|
+++ config-ml.in 2019-01-11 18:16:23.442726914 +0100
|
||||||
+++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
|
|
||||||
@@ -511,6 +511,8 @@ multi-do:
|
@@ -511,6 +511,8 @@ multi-do:
|
||||||
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
||||||
prefix="$(prefix)" \
|
prefix="$(prefix)" \
|
||||||
|
@ -74,42 +63,44 @@
|
||||||
+ mandir="$(mandir)" \
|
+ mandir="$(mandir)" \
|
||||||
+ infodir="$(infodir)" \
|
+ infodir="$(infodir)" \
|
||||||
GOCFLAGS="$(GOCFLAGS) $${flags}" \
|
GOCFLAGS="$(GOCFLAGS) $${flags}" \
|
||||||
|
GDCFLAGS="$(GDCFLAGS) $${flags}" \
|
||||||
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
||||||
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
|
--- libcpp/macro.c.jj 2019-01-09 13:01:21.420552123 +0100
|
||||||
--- libcpp/macro.c.jj 2015-01-14 11:01:34.000000000 +0100
|
+++ libcpp/macro.c 2019-01-11 18:18:17.736876285 +0100
|
||||||
+++ libcpp/macro.c 2015-01-14 14:22:19.286949884 +0100
|
@@ -3256,8 +3256,6 @@ static cpp_macro *
|
||||||
@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
|
create_iso_definition (cpp_reader *pfile)
|
||||||
cpp_token *token;
|
{
|
||||||
const cpp_token *ctoken;
|
|
||||||
bool following_paste_op = false;
|
bool following_paste_op = false;
|
||||||
- const char *paste_op_error_msg =
|
- const char *paste_op_error_msg =
|
||||||
- N_("'##' cannot appear at either end of a macro expansion");
|
- N_("'##' cannot appear at either end of a macro expansion");
|
||||||
unsigned int num_extra_tokens = 0;
|
unsigned int num_extra_tokens = 0;
|
||||||
|
unsigned nparms = 0;
|
||||||
/* Get the first token of the expansion (or the '(' of a
|
cpp_hashnode **params = NULL;
|
||||||
@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
|
@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile
|
||||||
function-like macros, but not at the end. */
|
function-like macros, but not at the end. */
|
||||||
if (following_paste_op)
|
if (following_paste_op)
|
||||||
{
|
{
|
||||||
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
|
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
|
||||||
+ cpp_error (pfile, CPP_DL_ERROR,
|
+ cpp_error (pfile, CPP_DL_ERROR,
|
||||||
+ "'##' cannot appear at either end of a macro expansion");
|
+ "'##' cannot appear at either end of a macro "
|
||||||
return false;
|
+ "expansion");
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
break;
|
if (!vaopt_tracker.completed ())
|
||||||
@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
|
@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile
|
||||||
function-like macros, but not at the beginning. */
|
function-like macros, but not at the beginning. */
|
||||||
if (macro->count == 1)
|
if (macro->count == 1)
|
||||||
{
|
{
|
||||||
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
|
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
|
||||||
+ cpp_error (pfile, CPP_DL_ERROR,
|
+ cpp_error (pfile, CPP_DL_ERROR,
|
||||||
+ "'##' cannot appear at either end of a macro expansion");
|
+ "'##' cannot appear at either end of a macro "
|
||||||
return false;
|
+ "expansion");
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
--- libcpp/expr.c.jj 2015-01-14 11:01:34.000000000 +0100
|
--- libcpp/expr.c.jj 2019-01-09 13:01:22.415535734 +0100
|
||||||
+++ libcpp/expr.c 2015-01-14 14:35:52.851002344 +0100
|
+++ libcpp/expr.c 2019-01-11 18:16:23.444726882 +0100
|
||||||
@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
|
@@ -788,16 +788,17 @@ cpp_classify_number (cpp_reader *pfile,
|
||||||
if ((result & CPP_N_WIDTH) == CPP_N_LARGE
|
if ((result & CPP_N_WIDTH) == CPP_N_LARGE
|
||||||
&& CPP_OPTION (pfile, cpp_warn_long_long))
|
&& CPP_OPTION (pfile, cpp_warn_long_long))
|
||||||
{
|
{
|
|
@ -1,15 +1,15 @@
|
||||||
--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
|
--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
|
||||||
+++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
|
+++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
|
||||||
@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
@@ -1063,7 +1063,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
||||||
# and the system's installed libraries.
|
# and the system's installed libraries.
|
||||||
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
|
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
|
||||||
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
||||||
-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||||
+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||||
$(ZLIB)
|
$(ZLIB) $(ZSTD_LIB)
|
||||||
# Any system libraries needed just for GNAT.
|
# Any system libraries needed just for GNAT.
|
||||||
SYSLIBS = @GNAT_LIBEXC@
|
SYSLIBS = @GNAT_LIBEXC@
|
||||||
@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file)
|
@@ -2302,6 +2302,15 @@ $(out_object_file): $(out_file)
|
||||||
$(common_out_object_file): $(common_out_file)
|
$(common_out_object_file): $(common_out_file)
|
||||||
$(COMPILE) $<
|
$(COMPILE) $<
|
||||||
$(POSTCOMPILE)
|
$(POSTCOMPILE)
|
||||||
|
@ -27,10 +27,10 @@
|
||||||
# and compile them.
|
# and compile them.
|
||||||
--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
|
--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
|
||||||
+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
|
+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
|
||||||
@@ -37,6 +37,586 @@ along with GCC; see the file COPYING3.
|
@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
|
||||||
#include <isl/schedule.h>
|
|
||||||
#include <isl/ast_build.h>
|
|
||||||
#include <isl/schedule_node.h>
|
#include <isl/schedule_node.h>
|
||||||
|
#include <isl/id.h>
|
||||||
|
#include <isl/space.h>
|
||||||
+#include <isl/version.h>
|
+#include <isl/version.h>
|
||||||
+#include <dlfcn.h>
|
+#include <dlfcn.h>
|
||||||
+
|
+
|
||||||
|
@ -317,7 +317,9 @@
|
||||||
+ DYNSYM (isl_val_get_abs_num_chunks); \
|
+ DYNSYM (isl_val_get_abs_num_chunks); \
|
||||||
+ DYNSYM (isl_val_int_from_chunks); \
|
+ DYNSYM (isl_val_int_from_chunks); \
|
||||||
+ DYNSYM (isl_val_is_neg); \
|
+ DYNSYM (isl_val_is_neg); \
|
||||||
+ DYNSYM (isl_version);
|
+ DYNSYM (isl_version); \
|
||||||
|
+ DYNSYM (isl_options_get_on_error); \
|
||||||
|
+ DYNSYM (isl_ctx_reset_error);
|
||||||
+
|
+
|
||||||
+extern struct isl_pointers_s__
|
+extern struct isl_pointers_s__
|
||||||
+{
|
+{
|
||||||
|
@ -611,10 +613,12 @@
|
||||||
+#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
|
+#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
|
||||||
+#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
|
+#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
|
||||||
+#define isl_version (*isl_pointers__.p_isl_version)
|
+#define isl_version (*isl_pointers__.p_isl_version)
|
||||||
|
+#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
|
||||||
|
+#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
|
||||||
|
|
||||||
typedef struct poly_dr *poly_dr_p;
|
typedef struct poly_dr *poly_dr_p;
|
||||||
|
|
||||||
@@ -458,5 +1038,6 @@ extern void build_scops (vec<scop_p> *);
|
@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
|
||||||
extern void dot_all_sese (FILE *, vec<sese_l> &);
|
extern void dot_all_sese (FILE *, vec<sese_l> &);
|
||||||
extern void dot_sese (sese_l &);
|
extern void dot_sese (sese_l &);
|
||||||
extern void dot_cfg ();
|
extern void dot_cfg ();
|
||||||
|
@ -623,8 +627,8 @@
|
||||||
#endif
|
#endif
|
||||||
--- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
|
--- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
|
||||||
+++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
|
+++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
|
||||||
@@ -55,6 +55,35 @@ along with GCC; see the file COPYING3.
|
@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
|
||||||
#include "tree-vectorizer.h"
|
#include "tree-into-ssa.h"
|
||||||
#include "graphite.h"
|
#include "graphite.h"
|
||||||
|
|
||||||
+__typeof (isl_pointers__) isl_pointers__;
|
+__typeof (isl_pointers__) isl_pointers__;
|
||||||
|
@ -659,7 +663,7 @@
|
||||||
/* Print global statistics to FILE. */
|
/* Print global statistics to FILE. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -299,6 +328,15 @@ graphite_transform_loops (void)
|
@@ -365,6 +394,15 @@ graphite_transform_loops (void)
|
||||||
if (parallelized_function_p (cfun->decl))
|
if (parallelized_function_p (cfun->decl))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -672,11 +676,11 @@
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
ctx = isl_ctx_alloc ();
|
calculate_dominance_info (CDI_DOMINATORS);
|
||||||
isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
|
|
||||||
if (!graphite_initialize (ctx))
|
/* We rely on post-dominators during merging of SESE regions so those
|
||||||
@@ -342,6 +380,14 @@ graphite_transform_loops (void)
|
@@ -455,6 +493,14 @@ graphite_transform_loops (void)
|
||||||
isl_ctx_free (ctx);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+const char *
|
+const char *
|
|
@ -1,10 +1,10 @@
|
||||||
--- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
|
--- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
|
||||||
+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
|
+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
|
||||||
@@ -5,6 +5,8 @@
|
@@ -5,6 +5,8 @@
|
||||||
<a class="link" href="http://www.fsf.org/" target="_top">FSF
|
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
||||||
</a>
|
</a>
|
||||||
</p><p>
|
</p><p>
|
||||||
+ Release 7.2.1
|
+ Release 10.0.1
|
||||||
+ </p><p>
|
+ </p><p>
|
||||||
Permission is granted to copy, distribute and/or modify this
|
Permission is granted to copy, distribute and/or modify this
|
||||||
document under the terms of the GNU Free Documentation
|
document under the terms of the GNU Free Documentation
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</p><p>
|
</p><p>
|
||||||
- The API documentation, rendered into HTML, can be viewed online
|
- The API documentation, rendered into HTML, can be viewed online
|
||||||
+ The API documentation, rendered into HTML, can be viewed locally
|
+ The API documentation, rendered into HTML, can be viewed locally
|
||||||
+ <a class="link" href="api/index.html" target="_top">for the 7.2.1 release</a>,
|
+ <a class="link" href="api/index.html" target="_top">for the 10.0.1 release</a>,
|
||||||
+ online
|
+ online
|
||||||
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
||||||
and
|
and
|
|
@ -1,19 +1,17 @@
|
||||||
2010-02-08 Roland McGrath <roland@redhat.com>
|
2010-02-08 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
|
* config/gnu-user.h (LINK_EH_SPEC): Pass --no-add-needed to the linker.
|
||||||
linker.
|
|
||||||
* config/gnu-user.h (LINK_EH_SPEC): Likewise.
|
|
||||||
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
|
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
|
||||||
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
|
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
|
||||||
|
|
||||||
--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
|
--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
|
||||||
+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
|
+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
|
||||||
@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu
|
@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
|
||||||
I imagine that other systems will catch up. In the meantime, it
|
I imagine that other systems will catch up. In the meantime, it
|
||||||
doesn't harm to make sure that the data exists to be used later. */
|
doesn't harm to make sure that the data exists to be used later. */
|
||||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||||
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||||
+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
|
+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
|
||||||
#endif
|
#endif
|
||||||
--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
|
--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
|
||||||
+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
|
+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
|
||||||
|
@ -28,23 +26,12 @@
|
||||||
#define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
|
#define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
|
||||||
--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
|
--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
|
||||||
+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
|
+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
|
||||||
@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
|
@@ -106,7 +106,7 @@ see the files COPYING3 and COPYING.RUNTI
|
||||||
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||||
|
|
||||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||||
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
|
||||||
+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
|
+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
#define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \
|
||||||
--- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
|
|
||||||
+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
|
|
||||||
@@ -820,7 +820,7 @@ extern int fixuplabelno;
|
|
||||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
|
|
||||||
|
|
||||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
|
||||||
-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
|
||||||
+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
crt files and statically linked libgcc objects cause false positives
|
||||||
|
in annobin coverage, so we add the assembler flag to generate notes
|
||||||
|
for them.
|
||||||
|
|
||||||
|
The patch also adds notes to libgcc_s.so, but this is harmless because
|
||||||
|
these notes only confer that there is no other annobin markup.
|
||||||
|
|
||||||
|
2018-07-25 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
|
||||||
|
-Wa,--generate-missing-build-notes=yes.
|
||||||
|
|
||||||
|
--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100
|
||||||
|
+++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200
|
||||||
|
@@ -246,6 +246,7 @@ LIBGCC2_DEBUG_CFLAGS = -g
|
||||||
|
LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
|
||||||
|
$(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
|
||||||
|
-fbuilding-libgcc -fno-stack-protector \
|
||||||
|
+ -Wa,--generate-missing-build-notes=yes \
|
||||||
|
$(INHIBIT_LIBC_CFLAGS)
|
||||||
|
|
||||||
|
# Additional options to use when compiling libgcc2.a.
|
||||||
|
@@ -301,6 +302,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN
|
||||||
|
$(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
|
||||||
|
-fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
|
||||||
|
-fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
|
||||||
|
+ -Wa,--generate-missing-build-notes=yes \
|
||||||
|
$(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY)
|
||||||
|
|
||||||
|
# Extra flags to use when compiling crt{begin,end}.o.
|
|
@ -1,35 +0,0 @@
|
||||||
2014-04-07 Richard Henderson <rth@redhat.com>
|
|
||||||
|
|
||||||
* common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT):
|
|
||||||
Define.
|
|
||||||
(aarch64_option_init_struct): New function.
|
|
||||||
|
|
||||||
--- gcc/common/config/aarch64/aarch64-common.c
|
|
||||||
+++ gcc/common/config/aarch64/aarch64-common.c
|
|
||||||
@@ -39,6 +39,9 @@
|
|
||||||
#undef TARGET_OPTION_OPTIMIZATION_TABLE
|
|
||||||
#define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
|
|
||||||
|
|
||||||
+#undef TARGET_OPTION_INIT_STRUCT
|
|
||||||
+#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
|
|
||||||
+
|
|
||||||
/* Set default optimization options. */
|
|
||||||
static const struct default_options aarch_option_optimization_table[] =
|
|
||||||
{
|
|
||||||
@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[] =
|
|
||||||
{ OPT_LEVELS_NONE, 0, NULL, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
+/* Implement TARGET_OPTION_INIT_STRUCT. */
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+aarch64_option_init_struct (struct gcc_options *opts)
|
|
||||||
+{
|
|
||||||
+ /* By default, always emit DWARF-2 unwind info. This allows debugging
|
|
||||||
+ without maintaining a stack frame back-chain. */
|
|
||||||
+ opts->x_flag_asynchronous_unwind_tables = 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Implement TARGET_HANDLE_OPTION.
|
|
||||||
This function handles the target specific options for CPU/target selection.
|
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
2005-11-28 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
|
|
||||||
read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
|
|
||||||
instead of doing an extran indirection from frame_pointer_rtx.
|
|
||||||
|
|
||||||
* gcc.dg/20051128-1.c: New test.
|
|
||||||
|
|
||||||
--- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
|
|
||||||
+++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
|
|
||||||
@@ -20970,18 +20970,22 @@ rs6000_return_addr (int count, rtx frame
|
|
||||||
if (count != 0
|
|
||||||
|| ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
|
|
||||||
{
|
|
||||||
+ rtx x;
|
|
||||||
cfun->machine->ra_needs_full_frame = 1;
|
|
||||||
|
|
||||||
- return
|
|
||||||
- gen_rtx_MEM
|
|
||||||
- (Pmode,
|
|
||||||
- memory_address
|
|
||||||
- (Pmode,
|
|
||||||
- plus_constant (Pmode,
|
|
||||||
- copy_to_reg
|
|
||||||
- (gen_rtx_MEM (Pmode,
|
|
||||||
- memory_address (Pmode, frame))),
|
|
||||||
- RETURN_ADDRESS_OFFSET)));
|
|
||||||
+ if (count == 0)
|
|
||||||
+ {
|
|
||||||
+ gcc_assert (frame == frame_pointer_rtx);
|
|
||||||
+ x = arg_pointer_rtx;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ x = memory_address (Pmode, frame);
|
|
||||||
+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ x = plus_constant (Pmode, x, RETURN_ADDRESS_OFFSET);
|
|
||||||
+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
|
|
||||||
}
|
|
||||||
|
|
||||||
cfun->machine->ra_need_lr = 1;
|
|
||||||
--- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
|
|
||||||
+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
|
|
||||||
@@ -0,0 +1,41 @@
|
|
||||||
+/* { dg-do run } */
|
|
||||||
+/* { dg-options "-O2 -fpic" } */
|
|
||||||
+
|
|
||||||
+extern void exit (int);
|
|
||||||
+extern void abort (void);
|
|
||||||
+
|
|
||||||
+int b;
|
|
||||||
+
|
|
||||||
+struct A
|
|
||||||
+{
|
|
||||||
+ void *pad[147];
|
|
||||||
+ void *ra, *h;
|
|
||||||
+ long o;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+__attribute__((noinline))
|
|
||||||
+foo (struct A *a, void *x)
|
|
||||||
+{
|
|
||||||
+ __builtin_memset (a, 0, sizeof (a));
|
|
||||||
+ if (!b)
|
|
||||||
+ exit (0);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+__attribute__((noinline))
|
|
||||||
+bar (void)
|
|
||||||
+{
|
|
||||||
+ struct A a;
|
|
||||||
+
|
|
||||||
+ __builtin_unwind_init ();
|
|
||||||
+ foo (&a, __builtin_return_address (0));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main (void)
|
|
||||||
+{
|
|
||||||
+ bar ();
|
|
||||||
+ abort ();
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
|
@ -1,72 +0,0 @@
|
||||||
2017-09-15 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
Backported from mainline
|
|
||||||
2017-09-14 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR c++/81314
|
|
||||||
* cp-gimplify.c (omp_var_to_track): Look through references.
|
|
||||||
(omp_cxx_notice_variable): Likewise.
|
|
||||||
|
|
||||||
* testsuite/libgomp.c++/pr81314.C: New test.
|
|
||||||
|
|
||||||
--- gcc/cp/cp-gimplify.c (revision 252769)
|
|
||||||
+++ gcc/cp/cp-gimplify.c (revision 252770)
|
|
||||||
@@ -895,6 +895,8 @@ omp_var_to_track (tree decl)
|
|
||||||
tree type = TREE_TYPE (decl);
|
|
||||||
if (is_invisiref_parm (decl))
|
|
||||||
type = TREE_TYPE (type);
|
|
||||||
+ else if (TREE_CODE (type) == REFERENCE_TYPE)
|
|
||||||
+ type = TREE_TYPE (type);
|
|
||||||
while (TREE_CODE (type) == ARRAY_TYPE)
|
|
||||||
type = TREE_TYPE (type);
|
|
||||||
if (type == error_mark_node || !CLASS_TYPE_P (type))
|
|
||||||
@@ -947,6 +949,8 @@ omp_cxx_notice_variable (struct cp_gener
|
|
||||||
tree type = TREE_TYPE (decl);
|
|
||||||
if (is_invisiref_parm (decl))
|
|
||||||
type = TREE_TYPE (type);
|
|
||||||
+ else if (TREE_CODE (type) == REFERENCE_TYPE)
|
|
||||||
+ type = TREE_TYPE (type);
|
|
||||||
while (TREE_CODE (type) == ARRAY_TYPE)
|
|
||||||
type = TREE_TYPE (type);
|
|
||||||
get_copy_ctor (type, tf_none);
|
|
||||||
--- libgomp/testsuite/libgomp.c++/pr81314.C (nonexistent)
|
|
||||||
+++ libgomp/testsuite/libgomp.c++/pr81314.C (revision 252770)
|
|
||||||
@@ -0,0 +1,38 @@
|
|
||||||
+// PR c++/81314
|
|
||||||
+// { dg-do link }
|
|
||||||
+
|
|
||||||
+template <int N>
|
|
||||||
+struct S {
|
|
||||||
+ S () { s = 0; }
|
|
||||||
+ S (const S &x) { s = x.s; }
|
|
||||||
+ ~S () {}
|
|
||||||
+ int s;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+foo (S<2> &x)
|
|
||||||
+{
|
|
||||||
+ #pragma omp taskloop
|
|
||||||
+ for (int i = 0; i < 100; ++i)
|
|
||||||
+ x.s++;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+bar (S<3> &x)
|
|
||||||
+{
|
|
||||||
+ #pragma omp task
|
|
||||||
+ x.s++;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+ S<2> s;
|
|
||||||
+ S<3> t;
|
|
||||||
+ #pragma omp parallel
|
|
||||||
+ #pragma omp master
|
|
||||||
+ {
|
|
||||||
+ foo (s);
|
|
||||||
+ bar (t);
|
|
||||||
+ }
|
|
||||||
+}
|
|
|
@ -1,199 +0,0 @@
|
||||||
2017-09-15 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
Backported from mainline
|
|
||||||
2017-09-14 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR target/81325
|
|
||||||
* cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
|
|
||||||
if and where to split a bb, except for splitting before debug insn
|
|
||||||
sequences followed by non-label real insn. Delete debug insns
|
|
||||||
in between basic blocks.
|
|
||||||
|
|
||||||
* g++.dg/cpp0x/pr81325.C: New test.
|
|
||||||
|
|
||||||
--- gcc/cfgbuild.c (revision 252751)
|
|
||||||
+++ gcc/cfgbuild.c (revision 252752)
|
|
||||||
@@ -442,9 +442,10 @@ find_bb_boundaries (basic_block bb)
|
|
||||||
rtx_insn *end = BB_END (bb), *x;
|
|
||||||
rtx_jump_table_data *table;
|
|
||||||
rtx_insn *flow_transfer_insn = NULL;
|
|
||||||
+ rtx_insn *debug_insn = NULL;
|
|
||||||
edge fallthru = NULL;
|
|
||||||
|
|
||||||
- if (insn == BB_END (bb))
|
|
||||||
+ if (insn == end)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (LABEL_P (insn))
|
|
||||||
@@ -455,27 +456,49 @@ find_bb_boundaries (basic_block bb)
|
|
||||||
{
|
|
||||||
enum rtx_code code = GET_CODE (insn);
|
|
||||||
|
|
||||||
+ if (code == DEBUG_INSN)
|
|
||||||
+ {
|
|
||||||
+ if (flow_transfer_insn && !debug_insn)
|
|
||||||
+ debug_insn = insn;
|
|
||||||
+ }
|
|
||||||
/* In case we've previously seen an insn that effects a control
|
|
||||||
flow transfer, split the block. */
|
|
||||||
- if ((flow_transfer_insn || code == CODE_LABEL)
|
|
||||||
- && inside_basic_block_p (insn))
|
|
||||||
+ else if ((flow_transfer_insn || code == CODE_LABEL)
|
|
||||||
+ && inside_basic_block_p (insn))
|
|
||||||
{
|
|
||||||
- fallthru = split_block (bb, PREV_INSN (insn));
|
|
||||||
+ rtx_insn *prev = PREV_INSN (insn);
|
|
||||||
+
|
|
||||||
+ /* If the first non-debug inside_basic_block_p insn after a control
|
|
||||||
+ flow transfer is not a label, split the block before the debug
|
|
||||||
+ insn instead of before the non-debug insn, so that the debug
|
|
||||||
+ insns are not lost. */
|
|
||||||
+ if (debug_insn && code != CODE_LABEL && code != BARRIER)
|
|
||||||
+ prev = PREV_INSN (debug_insn);
|
|
||||||
+ fallthru = split_block (bb, prev);
|
|
||||||
if (flow_transfer_insn)
|
|
||||||
{
|
|
||||||
BB_END (bb) = flow_transfer_insn;
|
|
||||||
|
|
||||||
+ rtx_insn *next;
|
|
||||||
/* Clean up the bb field for the insns between the blocks. */
|
|
||||||
for (x = NEXT_INSN (flow_transfer_insn);
|
|
||||||
x != BB_HEAD (fallthru->dest);
|
|
||||||
- x = NEXT_INSN (x))
|
|
||||||
- if (!BARRIER_P (x))
|
|
||||||
- set_block_for_insn (x, NULL);
|
|
||||||
+ x = next)
|
|
||||||
+ {
|
|
||||||
+ next = NEXT_INSN (x);
|
|
||||||
+ /* Debug insns should not be in between basic blocks,
|
|
||||||
+ drop them on the floor. */
|
|
||||||
+ if (DEBUG_INSN_P (x))
|
|
||||||
+ delete_insn (x);
|
|
||||||
+ else if (!BARRIER_P (x))
|
|
||||||
+ set_block_for_insn (x, NULL);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
bb = fallthru->dest;
|
|
||||||
remove_edge (fallthru);
|
|
||||||
flow_transfer_insn = NULL;
|
|
||||||
+ debug_insn = NULL;
|
|
||||||
if (code == CODE_LABEL && LABEL_ALT_ENTRY_P (insn))
|
|
||||||
make_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun), bb, 0);
|
|
||||||
}
|
|
||||||
@@ -498,17 +521,23 @@ find_bb_boundaries (basic_block bb)
|
|
||||||
/* In case expander replaced normal insn by sequence terminating by
|
|
||||||
return and barrier, or possibly other sequence not behaving like
|
|
||||||
ordinary jump, we need to take care and move basic block boundary. */
|
|
||||||
- if (flow_transfer_insn)
|
|
||||||
+ if (flow_transfer_insn && flow_transfer_insn != end)
|
|
||||||
{
|
|
||||||
BB_END (bb) = flow_transfer_insn;
|
|
||||||
|
|
||||||
/* Clean up the bb field for the insns that do not belong to BB. */
|
|
||||||
- x = flow_transfer_insn;
|
|
||||||
- while (x != end)
|
|
||||||
+ rtx_insn *next;
|
|
||||||
+ for (x = NEXT_INSN (flow_transfer_insn); ; x = next)
|
|
||||||
{
|
|
||||||
- x = NEXT_INSN (x);
|
|
||||||
- if (!BARRIER_P (x))
|
|
||||||
+ next = NEXT_INSN (x);
|
|
||||||
+ /* Debug insns should not be in between basic blocks,
|
|
||||||
+ drop them on the floor. */
|
|
||||||
+ if (DEBUG_INSN_P (x))
|
|
||||||
+ delete_insn (x);
|
|
||||||
+ else if (!BARRIER_P (x))
|
|
||||||
set_block_for_insn (x, NULL);
|
|
||||||
+ if (x == end)
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--- gcc/testsuite/g++.dg/cpp0x/pr81325.C (nonexistent)
|
|
||||||
+++ gcc/testsuite/g++.dg/cpp0x/pr81325.C (revision 252752)
|
|
||||||
@@ -0,0 +1,84 @@
|
|
||||||
+// PR target/81325
|
|
||||||
+// { dg-do compile { target c++11 } }
|
|
||||||
+// { dg-options "-O2 -fcompare-debug" }
|
|
||||||
+
|
|
||||||
+struct A { A(const char *, const int & = 0); };
|
|
||||||
+template <typename> struct B;
|
|
||||||
+template <typename> struct C {
|
|
||||||
+ int _M_i;
|
|
||||||
+ void m_fn1() { __atomic_fetch_add(&_M_i, 0, __ATOMIC_RELAXED); }
|
|
||||||
+};
|
|
||||||
+struct D {
|
|
||||||
+ int *Data;
|
|
||||||
+ long Length = 0;
|
|
||||||
+ D(int) : Data() {}
|
|
||||||
+};
|
|
||||||
+template <> struct B<int> : C<int> {};
|
|
||||||
+struct F {
|
|
||||||
+ B<int> RefCount;
|
|
||||||
+ void m_fn2() { RefCount.m_fn1(); }
|
|
||||||
+};
|
|
||||||
+struct G {
|
|
||||||
+ F *Obj;
|
|
||||||
+ G(const G &p1) : Obj(p1.Obj) {
|
|
||||||
+ if (Obj) {
|
|
||||||
+ F *a = 0;
|
|
||||||
+ a->m_fn2();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+struct H {
|
|
||||||
+ int CPlusPlus : 1;
|
|
||||||
+};
|
|
||||||
+struct I {
|
|
||||||
+ enum {} KindId;
|
|
||||||
+};
|
|
||||||
+template <typename ResultT, typename ArgT> struct J {
|
|
||||||
+ void operator()();
|
|
||||||
+ ResultT operator()(ArgT) {}
|
|
||||||
+};
|
|
||||||
+struct K {
|
|
||||||
+ int AllowBind;
|
|
||||||
+ I SupportedKind;
|
|
||||||
+ I RestrictKind;
|
|
||||||
+ G Implementation;
|
|
||||||
+};
|
|
||||||
+struct L {
|
|
||||||
+ L(int) : Implementation(Implementation) {}
|
|
||||||
+ K Implementation;
|
|
||||||
+};
|
|
||||||
+struct M {
|
|
||||||
+ int Param1;
|
|
||||||
+};
|
|
||||||
+struct N {
|
|
||||||
+ N(int, L &p2) : Param2(p2) {}
|
|
||||||
+ L Param2;
|
|
||||||
+};
|
|
||||||
+struct O {
|
|
||||||
+ L m_fn3();
|
|
||||||
+};
|
|
||||||
+L ignoringImpCasts(L);
|
|
||||||
+J<O, L> b;
|
|
||||||
+L hasName(const A &);
|
|
||||||
+M hasOverloadedOperatorName(D);
|
|
||||||
+J<O, int> c;
|
|
||||||
+struct P {
|
|
||||||
+ void m_fn4(L, int);
|
|
||||||
+};
|
|
||||||
+struct Q {
|
|
||||||
+ void m_fn5(P *);
|
|
||||||
+};
|
|
||||||
+H d;
|
|
||||||
+void Q::m_fn5(P *p1) {
|
|
||||||
+ if (!d.CPlusPlus) {
|
|
||||||
+ c();
|
|
||||||
+ L e = 0, f = ignoringImpCasts(e);
|
|
||||||
+ b(ignoringImpCasts(f)).m_fn3();
|
|
||||||
+ }
|
|
||||||
+ hasOverloadedOperatorName(0);
|
|
||||||
+ hasName("");
|
|
||||||
+ L g = 0;
|
|
||||||
+ N(0, g);
|
|
||||||
+ L h(0);
|
|
||||||
+ p1->m_fn4(h, 0);
|
|
||||||
+}
|
|
|
@ -1,73 +0,0 @@
|
||||||
2017-09-14 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR sanitizer/81929
|
|
||||||
* tree.c (struct replace_placeholders_t): Add pset field.
|
|
||||||
(replace_placeholders_r): Call cp_walk_tree with d->pset as
|
|
||||||
last argument instead of NULL. Formatting fix.
|
|
||||||
(replace_placeholders): Add pset variable, add its address
|
|
||||||
into data. Pass &pset instead of NULL to cp_walk_tree.
|
|
||||||
|
|
||||||
* g++.dg/ubsan/pr81929.C: New test.
|
|
||||||
|
|
||||||
--- gcc/cp/tree.c.jj 2017-09-12 09:35:47.000000000 +0200
|
|
||||||
+++ gcc/cp/tree.c 2017-09-14 17:38:07.717064412 +0200
|
|
||||||
@@ -3063,6 +3063,7 @@ struct replace_placeholders_t
|
|
||||||
{
|
|
||||||
tree obj; /* The object to be substituted for a PLACEHOLDER_EXPR. */
|
|
||||||
bool seen; /* Whether we've encountered a PLACEHOLDER_EXPR. */
|
|
||||||
+ hash_set<tree> *pset; /* To avoid walking same trees multiple times. */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Like substitute_placeholder_in_expr, but handle C++ tree codes and
|
|
||||||
@@ -3085,8 +3086,8 @@ replace_placeholders_r (tree* t, int* wa
|
|
||||||
case PLACEHOLDER_EXPR:
|
|
||||||
{
|
|
||||||
tree x = obj;
|
|
||||||
- for (; !(same_type_ignoring_top_level_qualifiers_p
|
|
||||||
- (TREE_TYPE (*t), TREE_TYPE (x)));
|
|
||||||
+ for (; !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (*t),
|
|
||||||
+ TREE_TYPE (x));
|
|
||||||
x = TREE_OPERAND (x, 0))
|
|
||||||
gcc_assert (TREE_CODE (x) == COMPONENT_REF);
|
|
||||||
*t = x;
|
|
||||||
@@ -3118,8 +3119,7 @@ replace_placeholders_r (tree* t, int* wa
|
|
||||||
valp = &TARGET_EXPR_INITIAL (*valp);
|
|
||||||
}
|
|
||||||
d->obj = subob;
|
|
||||||
- cp_walk_tree (valp, replace_placeholders_r,
|
|
||||||
- data_, NULL);
|
|
||||||
+ cp_walk_tree (valp, replace_placeholders_r, data_, d->pset);
|
|
||||||
d->obj = obj;
|
|
||||||
}
|
|
||||||
*walk_subtrees = false;
|
|
||||||
@@ -3151,10 +3151,11 @@ replace_placeholders (tree exp, tree obj
|
|
||||||
return exp;
|
|
||||||
|
|
||||||
tree *tp = &exp;
|
|
||||||
- replace_placeholders_t data = { obj, false };
|
|
||||||
+ hash_set<tree> pset;
|
|
||||||
+ replace_placeholders_t data = { obj, false, &pset };
|
|
||||||
if (TREE_CODE (exp) == TARGET_EXPR)
|
|
||||||
tp = &TARGET_EXPR_INITIAL (exp);
|
|
||||||
- cp_walk_tree (tp, replace_placeholders_r, &data, NULL);
|
|
||||||
+ cp_walk_tree (tp, replace_placeholders_r, &data, &pset);
|
|
||||||
if (seen_p)
|
|
||||||
*seen_p = data.seen;
|
|
||||||
return exp;
|
|
||||||
--- gcc/testsuite/g++.dg/ubsan/pr81929.C.jj 2017-09-14 17:48:09.052611540 +0200
|
|
||||||
+++ gcc/testsuite/g++.dg/ubsan/pr81929.C 2017-09-14 17:49:21.644711332 +0200
|
|
||||||
@@ -0,0 +1,14 @@
|
|
||||||
+// PR sanitizer/81929
|
|
||||||
+// { dg-do compile }
|
|
||||||
+// { dg-options "-std=c++14 -fsanitize=undefined" }
|
|
||||||
+
|
|
||||||
+struct S { S &operator<< (long); S foo (); S (); };
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+bar ()
|
|
||||||
+{
|
|
||||||
+ static_cast<S&>(S () << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0
|
|
||||||
+ << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0
|
|
||||||
+ << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0
|
|
||||||
+ << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0).foo ();
|
|
||||||
+}
|
|
|
@ -1,94 +0,0 @@
|
||||||
2017-09-15 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
Backported from mainline
|
|
||||||
2017-09-12 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR target/82112
|
|
||||||
* c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
|
|
||||||
assertion check that in the condition.
|
|
||||||
(get_atomic_generic_size): Likewise. Before testing if parameter
|
|
||||||
has pointer type, if it has array type, call for C++
|
|
||||||
default_conversion to perform array-to-pointer conversion.
|
|
||||||
|
|
||||||
* c-c++-common/pr82112.c: New test.
|
|
||||||
* gcc.dg/pr82112.c: New test.
|
|
||||||
|
|
||||||
--- gcc/c-family/c-common.c (revision 252002)
|
|
||||||
+++ gcc/c-family/c-common.c (revision 252003)
|
|
||||||
@@ -6478,10 +6478,9 @@ sync_resolve_size (tree function, vec<tr
|
|
||||||
}
|
|
||||||
|
|
||||||
argtype = type = TREE_TYPE ((*params)[0]);
|
|
||||||
- if (TREE_CODE (type) == ARRAY_TYPE)
|
|
||||||
+ if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ())
|
|
||||||
{
|
|
||||||
/* Force array-to-pointer decay for C++. */
|
|
||||||
- gcc_assert (c_dialect_cxx());
|
|
||||||
(*params)[0] = default_conversion ((*params)[0]);
|
|
||||||
type = TREE_TYPE ((*params)[0]);
|
|
||||||
}
|
|
||||||
@@ -6646,10 +6645,9 @@ get_atomic_generic_size (location_t loc,
|
|
||||||
|
|
||||||
/* Get type of first parameter, and determine its size. */
|
|
||||||
type_0 = TREE_TYPE ((*params)[0]);
|
|
||||||
- if (TREE_CODE (type_0) == ARRAY_TYPE)
|
|
||||||
+ if (TREE_CODE (type_0) == ARRAY_TYPE && c_dialect_cxx ())
|
|
||||||
{
|
|
||||||
/* Force array-to-pointer decay for C++. */
|
|
||||||
- gcc_assert (c_dialect_cxx());
|
|
||||||
(*params)[0] = default_conversion ((*params)[0]);
|
|
||||||
type_0 = TREE_TYPE ((*params)[0]);
|
|
||||||
}
|
|
||||||
@@ -6688,6 +6686,12 @@ get_atomic_generic_size (location_t loc,
|
|
||||||
/* __atomic_compare_exchange has a bool in the 4th position, skip it. */
|
|
||||||
if (n_param == 6 && x == 3)
|
|
||||||
continue;
|
|
||||||
+ if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ())
|
|
||||||
+ {
|
|
||||||
+ /* Force array-to-pointer decay for C++. */
|
|
||||||
+ (*params)[x] = default_conversion ((*params)[x]);
|
|
||||||
+ type = TREE_TYPE ((*params)[x]);
|
|
||||||
+ }
|
|
||||||
if (!POINTER_TYPE_P (type))
|
|
||||||
{
|
|
||||||
error_at (loc, "argument %d of %qE must be a pointer type", x + 1,
|
|
||||||
--- gcc/testsuite/gcc.dg/pr82112.c (nonexistent)
|
|
||||||
+++ gcc/testsuite/gcc.dg/pr82112.c (revision 252003)
|
|
||||||
@@ -0,0 +1,21 @@
|
|
||||||
+/* PR target/82112 */
|
|
||||||
+/* { dg-do compile } */
|
|
||||||
+/* { dg-options "-std=gnu90" } */
|
|
||||||
+
|
|
||||||
+struct S { int a[10]; } bar (void);
|
|
||||||
+int b, c;
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+foo (void)
|
|
||||||
+{
|
|
||||||
+ __atomic_load (bar ().a, &b, __ATOMIC_ACQUIRE); /* { dg-error "argument 1 of .__atomic_load. must be a non-void pointer type" } */
|
|
||||||
+ __atomic_load (&b, bar ().a, __ATOMIC_ACQUIRE); /* { dg-error "argument 2 of .__atomic_load. must be a pointer type" } */
|
|
||||||
+ __atomic_store (bar ().a, &b, __ATOMIC_SEQ_CST); /* { dg-error "argument 1 of .__atomic_store. must be a non-void pointer type" } */
|
|
||||||
+ __atomic_store (&b, bar ().a, __ATOMIC_SEQ_CST); /* { dg-error "argument 2 of .__atomic_store. must be a pointer type" } */
|
|
||||||
+ __atomic_exchange (bar ().a, &b, &c, __ATOMIC_RELAXED); /* { dg-error "argument 1 of .__atomic_exchange. must be a non-void pointer type" } */
|
|
||||||
+ __atomic_exchange (&b, bar ().a, &c, __ATOMIC_RELAXED); /* { dg-error "argument 2 of .__atomic_exchange. must be a pointer type" } */
|
|
||||||
+ __atomic_exchange (&b, &c, bar ().a, __ATOMIC_RELAXED); /* { dg-error "argument 3 of .__atomic_exchange. must be a pointer type" } */
|
|
||||||
+ __atomic_compare_exchange (bar ().a, &b, &c, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); /* { dg-error "argument 1 of .__atomic_compare_exchange. must be a non-void pointer type" } */
|
|
||||||
+ __atomic_compare_exchange (&b, bar ().a, &c, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); /* { dg-error "argument 2 of .__atomic_compare_exchange. must be a pointer type" } */
|
|
||||||
+ __atomic_compare_exchange (&b, &c, bar ().a, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); /* { dg-error "argument 3 of .__atomic_compare_exchange. must be a pointer type" } */
|
|
||||||
+}
|
|
||||||
--- gcc/testsuite/c-c++-common/pr82112.c (nonexistent)
|
|
||||||
+++ gcc/testsuite/c-c++-common/pr82112.c (revision 252003)
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+/* PR target/82112 */
|
|
||||||
+/* { dg-do compile } */
|
|
||||||
+
|
|
||||||
+int c[10], d[10], e[10], f[10], g[10], h[10], i[10], j[10], k[10], l[10];
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+foo (void)
|
|
||||||
+{
|
|
||||||
+ __atomic_load (c, d, __ATOMIC_ACQUIRE);
|
|
||||||
+ __atomic_store (e, f, __ATOMIC_SEQ_CST);
|
|
||||||
+ __atomic_exchange (g, h, i, __ATOMIC_RELAXED);
|
|
||||||
+ __atomic_compare_exchange (j, k, l, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
|
|
||||||
+}
|
|
|
@ -1,101 +0,0 @@
|
||||||
2017-09-15 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
Backported from mainline
|
|
||||||
2017-09-12 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR target/82112
|
|
||||||
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
|
|
||||||
ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
|
|
||||||
on it early, rather than manual conversion late. For
|
|
||||||
ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
|
|
||||||
instead of performing manual conversion.
|
|
||||||
|
|
||||||
* gcc.target/powerpc/pr82112.c: New test.
|
|
||||||
* g++.dg/ext/altivec-18.C: New test.
|
|
||||||
|
|
||||||
--- gcc/config/rs6000/rs6000-c.c (revision 252027)
|
|
||||||
+++ gcc/config/rs6000/rs6000-c.c (revision 252028)
|
|
||||||
@@ -6489,7 +6489,13 @@ altivec_resolve_overloaded_builtin (loca
|
|
||||||
|
|
||||||
/* Strip qualifiers like "const" from the pointer arg. */
|
|
||||||
tree arg1_type = TREE_TYPE (arg1);
|
|
||||||
- if (!POINTER_TYPE_P (arg1_type) && TREE_CODE (arg1_type) != ARRAY_TYPE)
|
|
||||||
+ if (TREE_CODE (arg1_type) == ARRAY_TYPE && c_dialect_cxx ())
|
|
||||||
+ {
|
|
||||||
+ /* Force array-to-pointer decay for C++. */
|
|
||||||
+ arg1 = default_conversion (arg1);
|
|
||||||
+ arg1_type = TREE_TYPE (arg1);
|
|
||||||
+ }
|
|
||||||
+ if (!POINTER_TYPE_P (arg1_type))
|
|
||||||
goto bad;
|
|
||||||
|
|
||||||
tree inner_type = TREE_TYPE (arg1_type);
|
|
||||||
@@ -6509,15 +6515,6 @@ altivec_resolve_overloaded_builtin (loca
|
|
||||||
if (!ptrofftype_p (TREE_TYPE (arg0)))
|
|
||||||
arg0 = build1 (NOP_EXPR, sizetype, arg0);
|
|
||||||
|
|
||||||
- tree arg1_type = TREE_TYPE (arg1);
|
|
||||||
- if (TREE_CODE (arg1_type) == ARRAY_TYPE)
|
|
||||||
- {
|
|
||||||
- arg1_type = TYPE_POINTER_TO (TREE_TYPE (arg1_type));
|
|
||||||
- tree const0 = build_int_cstu (sizetype, 0);
|
|
||||||
- tree arg1_elt0 = build_array_ref (loc, arg1, const0);
|
|
||||||
- arg1 = build1 (ADDR_EXPR, arg1_type, arg1_elt0);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
tree addr = fold_build2_loc (loc, POINTER_PLUS_EXPR, arg1_type,
|
|
||||||
arg1, arg0);
|
|
||||||
tree aligned = fold_build2_loc (loc, BIT_AND_EXPR, arg1_type, addr,
|
|
||||||
@@ -6572,12 +6569,11 @@ altivec_resolve_overloaded_builtin (loca
|
|
||||||
arg1 = build1 (NOP_EXPR, sizetype, arg1);
|
|
||||||
|
|
||||||
tree arg2_type = TREE_TYPE (arg2);
|
|
||||||
- if (TREE_CODE (arg2_type) == ARRAY_TYPE)
|
|
||||||
+ if (TREE_CODE (arg2_type) == ARRAY_TYPE && c_dialect_cxx ())
|
|
||||||
{
|
|
||||||
- arg2_type = TYPE_POINTER_TO (TREE_TYPE (arg2_type));
|
|
||||||
- tree const0 = build_int_cstu (sizetype, 0);
|
|
||||||
- tree arg2_elt0 = build_array_ref (loc, arg2, const0);
|
|
||||||
- arg2 = build1 (ADDR_EXPR, arg2_type, arg2_elt0);
|
|
||||||
+ /* Force array-to-pointer decay for C++. */
|
|
||||||
+ arg2 = default_conversion (arg2);
|
|
||||||
+ arg2_type = TREE_TYPE (arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Find the built-in to make sure a compatible one exists; if not
|
|
||||||
--- gcc/testsuite/gcc.target/powerpc/pr82112.c (nonexistent)
|
|
||||||
+++ gcc/testsuite/gcc.target/powerpc/pr82112.c (revision 252028)
|
|
||||||
@@ -0,0 +1,16 @@
|
|
||||||
+/* PR target/82112 */
|
|
||||||
+/* { dg-do compile } */
|
|
||||||
+/* { dg-require-effective-target powerpc_altivec_ok } */
|
|
||||||
+/* { dg-options "-maltivec -std=gnu90" } */
|
|
||||||
+
|
|
||||||
+#include <altivec.h>
|
|
||||||
+
|
|
||||||
+struct __attribute__((aligned (16))) S { unsigned char c[64]; } bar (void);
|
|
||||||
+vector unsigned char v;
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+foo (void)
|
|
||||||
+{
|
|
||||||
+ vec_ld (0, bar ().c); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
|
|
||||||
+ vec_st (v, 0, bar ().c); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
|
|
||||||
+}
|
|
||||||
--- gcc/testsuite/g++.dg/ext/altivec-18.C (nonexistent)
|
|
||||||
+++ gcc/testsuite/g++.dg/ext/altivec-18.C (revision 252028)
|
|
||||||
@@ -0,0 +1,14 @@
|
|
||||||
+// PR target/82112
|
|
||||||
+// { dg-do compile { target powerpc*-*-* } }
|
|
||||||
+// { dg-require-effective-target powerpc_altivec_ok }
|
|
||||||
+// { dg-options "-maltivec" }
|
|
||||||
+
|
|
||||||
+#include <altivec.h>
|
|
||||||
+
|
|
||||||
+__attribute__((aligned (16))) extern const unsigned char c[16];
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+foo (void)
|
|
||||||
+{
|
|
||||||
+ vec_ld (0, c);
|
|
||||||
+}
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- nvptx-tools/nvptx-as.c.jj 2017-01-20 12:40:18.000000000 +0100
|
|
||||||
+++ nvptx-tools/nvptx-as.c 2017-01-20 12:43:53.864271442 +0100
|
|
||||||
@@ -939,7 +939,7 @@ fork_execute (const char *prog, char *co
|
|
||||||
fatal_error ("%s: %m", errmsg);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
- fatal_error (errmsg);
|
|
||||||
+ fatal_error ("%s", errmsg);
|
|
||||||
}
|
|
||||||
do_wait (prog, pex);
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
--- nvptx-tools/configure.ac.jj 2017-01-13 12:48:31.000000000 +0100
|
|
||||||
+++ nvptx-tools/configure.ac 2017-05-03 10:26:57.076092259 +0200
|
|
||||||
@@ -66,6 +66,8 @@ CPPFLAGS=$save_CPPFLAGS
|
|
||||||
LDFLAGS=$save_LDFLAGS
|
|
||||||
LIBS=$save_LIBS
|
|
||||||
|
|
||||||
+AC_CHECK_DECLS(getopt)
|
|
||||||
+
|
|
||||||
AC_CONFIG_SUBDIRS([libiberty])
|
|
||||||
AC_CONFIG_FILES([Makefile dejagnu.exp])
|
|
||||||
AC_OUTPUT
|
|
||||||
--- nvptx-tools/configure.jj 2017-01-13 12:48:54.000000000 +0100
|
|
||||||
+++ nvptx-tools/configure 2017-05-03 10:27:13.503876809 +0200
|
|
||||||
@@ -3963,6 +3963,18 @@ CPPFLAGS=$save_CPPFLAGS
|
|
||||||
LDFLAGS=$save_LDFLAGS
|
|
||||||
LIBS=$save_LIBS
|
|
||||||
|
|
||||||
+ac_fn_c_check_decl "$LINENO" "getopt" "ac_cv_have_decl_getopt" "$ac_includes_default"
|
|
||||||
+if test "x$ac_cv_have_decl_getopt" = x""yes; then :
|
|
||||||
+ ac_have_decl=1
|
|
||||||
+else
|
|
||||||
+ ac_have_decl=0
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+cat >>confdefs.h <<_ACEOF
|
|
||||||
+#define HAVE_DECL_GETOPT $ac_have_decl
|
|
||||||
+_ACEOF
|
|
||||||
+
|
|
||||||
+
|
|
||||||
|
|
||||||
|
|
||||||
subdirs="$subdirs libiberty"
|
|
|
@ -1,947 +0,0 @@
|
||||||
--- nvptx-tools/configure.ac
|
|
||||||
+++ nvptx-tools/configure.ac
|
|
||||||
@@ -51,6 +51,7 @@ LIBS="$LIBS -lcuda"
|
|
||||||
AC_CHECK_FUNCS([[cuGetErrorName] [cuGetErrorString]])
|
|
||||||
AC_CHECK_DECLS([[cuGetErrorName], [cuGetErrorString]],
|
|
||||||
[], [], [[#include <cuda.h>]])
|
|
||||||
+AC_CHECK_HEADERS(unistd.h sys/stat.h)
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for extra programs to build requiring -lcuda])
|
|
||||||
NVPTX_RUN=
|
|
||||||
--- nvptx-tools/include/libiberty.h
|
|
||||||
+++ nvptx-tools/include/libiberty.h
|
|
||||||
@@ -390,6 +390,17 @@ extern void hex_init (void);
|
|
||||||
/* Save files used for communication between processes. */
|
|
||||||
#define PEX_SAVE_TEMPS 0x4
|
|
||||||
|
|
||||||
+/* Max number of alloca bytes per call before we must switch to malloc.
|
|
||||||
+
|
|
||||||
+ ?? Swiped from gnulib's regex_internal.h header. Is this actually
|
|
||||||
+ the case? This number seems arbitrary, though sane.
|
|
||||||
+
|
|
||||||
+ The OS usually guarantees only one guard page at the bottom of the stack,
|
|
||||||
+ and a page size can be as small as 4096 bytes. So we cannot safely
|
|
||||||
+ allocate anything larger than 4096 bytes. Also care for the possibility
|
|
||||||
+ of a few compiler-allocated temporary stack slots. */
|
|
||||||
+#define MAX_ALLOCA_SIZE 4032
|
|
||||||
+
|
|
||||||
/* Prepare to execute one or more programs, with standard output of
|
|
||||||
each program fed to standard input of the next.
|
|
||||||
FLAGS As above.
|
|
||||||
--- nvptx-tools/nvptx-as.c
|
|
||||||
+++ nvptx-tools/nvptx-as.c
|
|
||||||
@@ -30,6 +30,9 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <wait.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
+#ifdef HAVE_SYS_STAT_H
|
|
||||||
+#include <sys/stat.h>
|
|
||||||
+#endif
|
|
||||||
#include <errno.h>
|
|
||||||
#define obstack_chunk_alloc malloc
|
|
||||||
#define obstack_chunk_free free
|
|
||||||
@@ -42,6 +45,38 @@
|
|
||||||
|
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
+#ifndef R_OK
|
|
||||||
+#define R_OK 4
|
|
||||||
+#define W_OK 2
|
|
||||||
+#define X_OK 1
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifndef DIR_SEPARATOR
|
|
||||||
+# define DIR_SEPARATOR '/'
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#if defined (_WIN32) || defined (__MSDOS__) \
|
|
||||||
+ || defined (__DJGPP__) || defined (__OS2__)
|
|
||||||
+# define HAVE_DOS_BASED_FILE_SYSTEM
|
|
||||||
+# define HAVE_HOST_EXECUTABLE_SUFFIX
|
|
||||||
+# define HOST_EXECUTABLE_SUFFIX ".exe"
|
|
||||||
+# ifndef DIR_SEPARATOR_2
|
|
||||||
+# define DIR_SEPARATOR_2 '\\'
|
|
||||||
+# endif
|
|
||||||
+# define PATH_SEPARATOR ';'
|
|
||||||
+#else
|
|
||||||
+# define PATH_SEPARATOR ':'
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifndef DIR_SEPARATOR_2
|
|
||||||
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
|
|
||||||
+#else
|
|
||||||
+# define IS_DIR_SEPARATOR(ch) \
|
|
||||||
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#define DIR_UP ".."
|
|
||||||
+
|
|
||||||
static const char *outname = NULL;
|
|
||||||
|
|
||||||
static void __attribute__ ((format (printf, 1, 2)))
|
|
||||||
@@ -816,7 +851,7 @@ traverse (void **slot, void *data)
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-process (FILE *in, FILE *out)
|
|
||||||
+process (FILE *in, FILE *out, int verify, const char *outname)
|
|
||||||
{
|
|
||||||
symbol_table = htab_create (500, hash_string_hash, hash_string_eq,
|
|
||||||
NULL);
|
|
||||||
@@ -824,6 +859,18 @@ process (FILE *in, FILE *out)
|
|
||||||
const char *input = read_file (in);
|
|
||||||
Token *tok = tokenize (input);
|
|
||||||
|
|
||||||
+ /* By default, when ptxas is not in PATH, do minimalistic verification,
|
|
||||||
+ just require that the first non-comment directive is .version. */
|
|
||||||
+ if (verify < 0)
|
|
||||||
+ {
|
|
||||||
+ size_t i;
|
|
||||||
+ for (i = 0; tok[i].kind == K_comment; i++)
|
|
||||||
+ ;
|
|
||||||
+ if (tok[i].kind != K_dotted || !is_keyword (&tok[i], "version"))
|
|
||||||
+ fatal_error ("missing .version directive at start of file '%s'",
|
|
||||||
+ outname);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
do
|
|
||||||
tok = parse_file (tok);
|
|
||||||
while (tok->kind);
|
|
||||||
@@ -897,9 +944,83 @@ fork_execute (const char *prog, char *const *argv)
|
|
||||||
do_wait (prog, pex);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Determine if progname is available in PATH. */
|
|
||||||
+static bool
|
|
||||||
+program_available (const char *progname)
|
|
||||||
+{
|
|
||||||
+ char *temp = getenv ("PATH");
|
|
||||||
+ if (temp)
|
|
||||||
+ {
|
|
||||||
+ char *startp, *endp, *nstore, *alloc_ptr = NULL;
|
|
||||||
+ size_t prefixlen = strlen (temp) + 1;
|
|
||||||
+ size_t len;
|
|
||||||
+ if (prefixlen < 2)
|
|
||||||
+ prefixlen = 2;
|
|
||||||
+
|
|
||||||
+ len = prefixlen + strlen (progname) + 1;
|
|
||||||
+#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
|
|
||||||
+ len += strlen (HOST_EXECUTABLE_SUFFIX);
|
|
||||||
+#endif
|
|
||||||
+ if (len < MAX_ALLOCA_SIZE)
|
|
||||||
+ nstore = (char *) alloca (len);
|
|
||||||
+ else
|
|
||||||
+ alloc_ptr = nstore = (char *) malloc (len);
|
|
||||||
+
|
|
||||||
+ startp = endp = temp;
|
|
||||||
+ while (1)
|
|
||||||
+ {
|
|
||||||
+ if (*endp == PATH_SEPARATOR || *endp == 0)
|
|
||||||
+ {
|
|
||||||
+ if (endp == startp)
|
|
||||||
+ {
|
|
||||||
+ nstore[0] = '.';
|
|
||||||
+ nstore[1] = DIR_SEPARATOR;
|
|
||||||
+ nstore[2] = '\0';
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ memcpy (nstore, startp, endp - startp);
|
|
||||||
+ if (! IS_DIR_SEPARATOR (endp[-1]))
|
|
||||||
+ {
|
|
||||||
+ nstore[endp - startp] = DIR_SEPARATOR;
|
|
||||||
+ nstore[endp - startp + 1] = 0;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ nstore[endp - startp] = 0;
|
|
||||||
+ }
|
|
||||||
+ strcat (nstore, progname);
|
|
||||||
+ if (! access (nstore, X_OK)
|
|
||||||
+#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
|
|
||||||
+ || ! access (strcat (nstore, HOST_EXECUTABLE_SUFFIX), X_OK)
|
|
||||||
+#endif
|
|
||||||
+ )
|
|
||||||
+ {
|
|
||||||
+#if defined (HAVE_SYS_STAT_H) && defined (S_ISREG)
|
|
||||||
+ struct stat st;
|
|
||||||
+ if (stat (nstore, &st) >= 0 && S_ISREG (st.st_mode))
|
|
||||||
+#endif
|
|
||||||
+ {
|
|
||||||
+ free (alloc_ptr);
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (*endp == 0)
|
|
||||||
+ break;
|
|
||||||
+ endp = startp = endp + 1;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ endp++;
|
|
||||||
+ }
|
|
||||||
+ free (alloc_ptr);
|
|
||||||
+ }
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static struct option long_options[] = {
|
|
||||||
{"traditional-format", no_argument, 0, 0 },
|
|
||||||
{"save-temps", no_argument, 0, 0 },
|
|
||||||
+ {"verify", no_argument, 0, 0 },
|
|
||||||
{"no-verify", no_argument, 0, 0 },
|
|
||||||
{"help", no_argument, 0, 'h' },
|
|
||||||
{"version", no_argument, 0, 'V' },
|
|
||||||
@@ -912,7 +1033,7 @@ main (int argc, char **argv)
|
|
||||||
FILE *in = stdin;
|
|
||||||
FILE *out = stdout;
|
|
||||||
bool verbose __attribute__((unused)) = false;
|
|
||||||
- bool verify = true;
|
|
||||||
+ int verify = -1;
|
|
||||||
const char *smver = "sm_30";
|
|
||||||
|
|
||||||
int o;
|
|
||||||
@@ -923,7 +1044,9 @@ main (int argc, char **argv)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (option_index == 2)
|
|
||||||
- verify = false;
|
|
||||||
+ verify = 1;
|
|
||||||
+ else if (option_index == 3)
|
|
||||||
+ verify = 0;
|
|
||||||
break;
|
|
||||||
case 'v':
|
|
||||||
verbose = true;
|
|
||||||
@@ -948,7 +1071,8 @@ Usage: nvptx-none-as [option...] [asmfile]\n\
|
|
||||||
Options:\n\
|
|
||||||
-o FILE Write output to FILE\n\
|
|
||||||
-v Be verbose\n\
|
|
||||||
+ --verify Do verify output is acceptable to ptxas\n\
|
|
||||||
--no-verify Do not verify output is acceptable to ptxas\n\
|
|
||||||
--help Print this help and exit\n\
|
|
||||||
--version Print version number and exit\n\
|
|
||||||
\n\
|
|
||||||
@@ -983,11 +1108,17 @@ This program has absolutely no warranty.\n",
|
|
||||||
if (!in)
|
|
||||||
fatal_error ("cannot open input ptx file");
|
|
||||||
|
|
||||||
- process (in, out);
|
|
||||||
- if (outname)
|
|
||||||
+ if (outname == NULL)
|
|
||||||
+ verify = 0;
|
|
||||||
+ else if (verify == -1)
|
|
||||||
+ if (program_available ("ptxas"))
|
|
||||||
+ verify = 1;
|
|
||||||
+
|
|
||||||
+ process (in, out, verify, outname);
|
|
||||||
+ if (outname)
|
|
||||||
fclose (out);
|
|
||||||
|
|
||||||
- if (verify && outname)
|
|
||||||
+ if (verify > 0)
|
|
||||||
{
|
|
||||||
struct obstack argv_obstack;
|
|
||||||
obstack_init (&argv_obstack);
|
|
||||||
--- nvptx-tools/configure
|
|
||||||
+++ nvptx-tools/configure
|
|
||||||
@@ -168,7 +168,8 @@ test x\$exitcode = x0 || exit 1"
|
|
||||||
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
|
|
||||||
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
|
|
||||||
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
|
|
||||||
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
|
|
||||||
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
|
|
||||||
+test \$(( 1 + 1 )) = 2 || exit 1"
|
|
||||||
if (eval "$as_required") 2>/dev/null; then :
|
|
||||||
as_have_required=yes
|
|
||||||
else
|
|
||||||
@@ -552,11 +553,50 @@ PACKAGE_URL=
|
|
||||||
|
|
||||||
ac_unique_file="nvptx-tools"
|
|
||||||
ac_unique_file="nvptx-as.c"
|
|
||||||
+# Factoring default headers for most tests.
|
|
||||||
+ac_includes_default="\
|
|
||||||
+#include <stdio.h>
|
|
||||||
+#ifdef HAVE_SYS_TYPES_H
|
|
||||||
+# include <sys/types.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_SYS_STAT_H
|
|
||||||
+# include <sys/stat.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef STDC_HEADERS
|
|
||||||
+# include <stdlib.h>
|
|
||||||
+# include <stddef.h>
|
|
||||||
+#else
|
|
||||||
+# ifdef HAVE_STDLIB_H
|
|
||||||
+# include <stdlib.h>
|
|
||||||
+# endif
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_STRING_H
|
|
||||||
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
|
|
||||||
+# include <memory.h>
|
|
||||||
+# endif
|
|
||||||
+# include <string.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_STRINGS_H
|
|
||||||
+# include <strings.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_INTTYPES_H
|
|
||||||
+# include <inttypes.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_STDINT_H
|
|
||||||
+# include <stdint.h>
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_UNISTD_H
|
|
||||||
+# include <unistd.h>
|
|
||||||
+#endif"
|
|
||||||
+
|
|
||||||
enable_option_checking=no
|
|
||||||
ac_subst_vars='LTLIBOBJS
|
|
||||||
LIBOBJS
|
|
||||||
subdirs
|
|
||||||
NVPTX_RUN
|
|
||||||
+EGREP
|
|
||||||
+GREP
|
|
||||||
+CPP
|
|
||||||
CUDA_DRIVER_LDFLAGS
|
|
||||||
CUDA_DRIVER_CPPFLAGS
|
|
||||||
AR
|
|
||||||
@@ -635,7 +675,8 @@ LIBS
|
|
||||||
CPPFLAGS
|
|
||||||
CXX
|
|
||||||
CXXFLAGS
|
|
||||||
-CCC'
|
|
||||||
+CCC
|
|
||||||
+CPP'
|
|
||||||
ac_subdirs_all='libiberty'
|
|
||||||
|
|
||||||
# Initialize some variables set by options.
|
|
||||||
@@ -1267,6 +1308,7 @@ Some influential environment variables:
|
|
||||||
you have headers in a nonstandard directory <include dir>
|
|
||||||
CXX C++ compiler command
|
|
||||||
CXXFLAGS C++ compiler flags
|
|
||||||
+ CPP C preprocessor
|
|
||||||
|
|
||||||
Use these variables to override the choices made by `configure' or to help
|
|
||||||
it to find libraries and programs with nonstandard names/locations.
|
|
||||||
@@ -1575,6 +1617,203 @@ $as_echo "$ac_res" >&6; }
|
|
||||||
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
||||||
|
|
||||||
} # ac_fn_c_check_decl
|
|
||||||
+
|
|
||||||
+# ac_fn_c_try_cpp LINENO
|
|
||||||
+# ----------------------
|
|
||||||
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
|
|
||||||
+ac_fn_c_try_cpp ()
|
|
||||||
+{
|
|
||||||
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
||||||
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
|
|
||||||
+case "(($ac_try" in
|
|
||||||
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
||||||
+ *) ac_try_echo=$ac_try;;
|
|
||||||
+esac
|
|
||||||
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
||||||
+$as_echo "$ac_try_echo"; } >&5
|
|
||||||
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
|
|
||||||
+ ac_status=$?
|
|
||||||
+ if test -s conftest.err; then
|
|
||||||
+ grep -v '^ *+' conftest.err >conftest.er1
|
|
||||||
+ cat conftest.er1 >&5
|
|
||||||
+ mv -f conftest.er1 conftest.err
|
|
||||||
+ fi
|
|
||||||
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
+ test $ac_status = 0; } >/dev/null && {
|
|
||||||
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
|
|
||||||
+ test ! -s conftest.err
|
|
||||||
+ }; then :
|
|
||||||
+ ac_retval=0
|
|
||||||
+else
|
|
||||||
+ $as_echo "$as_me: failed program was:" >&5
|
|
||||||
+sed 's/^/| /' conftest.$ac_ext >&5
|
|
||||||
+
|
|
||||||
+ ac_retval=1
|
|
||||||
+fi
|
|
||||||
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
||||||
+ return $ac_retval
|
|
||||||
+
|
|
||||||
+} # ac_fn_c_try_cpp
|
|
||||||
+
|
|
||||||
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
|
|
||||||
+# -------------------------------------------------------
|
|
||||||
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
|
|
||||||
+# the include files in INCLUDES and setting the cache variable VAR
|
|
||||||
+# accordingly.
|
|
||||||
+ac_fn_c_check_header_mongrel ()
|
|
||||||
+{
|
|
||||||
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
||||||
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
||||||
+$as_echo_n "checking for $2... " >&6; }
|
|
||||||
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+fi
|
|
||||||
+eval ac_res=\$$3
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
+$as_echo "$ac_res" >&6; }
|
|
||||||
+else
|
|
||||||
+ # Is the header compilable?
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
|
|
||||||
+$as_echo_n "checking $2 usability... " >&6; }
|
|
||||||
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+$4
|
|
||||||
+#include <$2>
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_compile "$LINENO"; then :
|
|
||||||
+ ac_header_compiler=yes
|
|
||||||
+else
|
|
||||||
+ ac_header_compiler=no
|
|
||||||
+fi
|
|
||||||
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
|
|
||||||
+$as_echo "$ac_header_compiler" >&6; }
|
|
||||||
+
|
|
||||||
+# Is the header present?
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
|
|
||||||
+$as_echo_n "checking $2 presence... " >&6; }
|
|
||||||
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <$2>
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
||||||
+ ac_header_preproc=yes
|
|
||||||
+else
|
|
||||||
+ ac_header_preproc=no
|
|
||||||
+fi
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
|
|
||||||
+$as_echo "$ac_header_preproc" >&6; }
|
|
||||||
+
|
|
||||||
+# So? What about this header?
|
|
||||||
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
|
|
||||||
+ yes:no: )
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
|
|
||||||
+ ;;
|
|
||||||
+ no:yes:* )
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
|
|
||||||
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
|
|
||||||
+ ;;
|
|
||||||
+esac
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
||||||
+$as_echo_n "checking for $2... " >&6; }
|
|
||||||
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+else
|
|
||||||
+ eval "$3=\$ac_header_compiler"
|
|
||||||
+fi
|
|
||||||
+eval ac_res=\$$3
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
+$as_echo "$ac_res" >&6; }
|
|
||||||
+fi
|
|
||||||
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
||||||
+
|
|
||||||
+} # ac_fn_c_check_header_mongrel
|
|
||||||
+
|
|
||||||
+# ac_fn_c_try_run LINENO
|
|
||||||
+# ----------------------
|
|
||||||
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
|
|
||||||
+# that executables *can* be run.
|
|
||||||
+ac_fn_c_try_run ()
|
|
||||||
+{
|
|
||||||
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
||||||
+ if { { ac_try="$ac_link"
|
|
||||||
+case "(($ac_try" in
|
|
||||||
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
||||||
+ *) ac_try_echo=$ac_try;;
|
|
||||||
+esac
|
|
||||||
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
||||||
+$as_echo "$ac_try_echo"; } >&5
|
|
||||||
+ (eval "$ac_link") 2>&5
|
|
||||||
+ ac_status=$?
|
|
||||||
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
|
|
||||||
+ { { case "(($ac_try" in
|
|
||||||
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
||||||
+ *) ac_try_echo=$ac_try;;
|
|
||||||
+esac
|
|
||||||
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
||||||
+$as_echo "$ac_try_echo"; } >&5
|
|
||||||
+ (eval "$ac_try") 2>&5
|
|
||||||
+ ac_status=$?
|
|
||||||
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
+ test $ac_status = 0; }; }; then :
|
|
||||||
+ ac_retval=0
|
|
||||||
+else
|
|
||||||
+ $as_echo "$as_me: program exited with status $ac_status" >&5
|
|
||||||
+ $as_echo "$as_me: failed program was:" >&5
|
|
||||||
+sed 's/^/| /' conftest.$ac_ext >&5
|
|
||||||
+
|
|
||||||
+ ac_retval=$ac_status
|
|
||||||
+fi
|
|
||||||
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
|
|
||||||
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
||||||
+ return $ac_retval
|
|
||||||
+
|
|
||||||
+} # ac_fn_c_try_run
|
|
||||||
+
|
|
||||||
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
|
|
||||||
+# -------------------------------------------------------
|
|
||||||
+# Tests whether HEADER exists and can be compiled using the include files in
|
|
||||||
+# INCLUDES, setting the cache variable VAR accordingly.
|
|
||||||
+ac_fn_c_check_header_compile ()
|
|
||||||
+{
|
|
||||||
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
||||||
+$as_echo_n "checking for $2... " >&6; }
|
|
||||||
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+else
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+$4
|
|
||||||
+#include <$2>
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_compile "$LINENO"; then :
|
|
||||||
+ eval "$3=yes"
|
|
||||||
+else
|
|
||||||
+ eval "$3=no"
|
|
||||||
+fi
|
|
||||||
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
||||||
+fi
|
|
||||||
+eval ac_res=\$$3
|
|
||||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
||||||
+$as_echo "$ac_res" >&6; }
|
|
||||||
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
|
|
||||||
+
|
|
||||||
+} # ac_fn_c_check_header_compile
|
|
||||||
cat >config.log <<_ACEOF
|
|
||||||
This file contains any messages produced by compilers while
|
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
|
||||||
@@ -3284,6 +3523,418 @@ cat >>confdefs.h <<_ACEOF
|
|
||||||
#define HAVE_DECL_CUGETERRORSTRING $ac_have_decl
|
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
+ac_ext=c
|
|
||||||
+ac_cpp='$CPP $CPPFLAGS'
|
|
||||||
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
|
||||||
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
|
||||||
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
|
|
||||||
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
|
|
||||||
+# On Suns, sometimes $CPP names a directory.
|
|
||||||
+if test -n "$CPP" && test -d "$CPP"; then
|
|
||||||
+ CPP=
|
|
||||||
+fi
|
|
||||||
+if test -z "$CPP"; then
|
|
||||||
+ if test "${ac_cv_prog_CPP+set}" = set; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+else
|
|
||||||
+ # Double quotes because CPP needs to be expanded
|
|
||||||
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
|
|
||||||
+ do
|
|
||||||
+ ac_preproc_ok=false
|
|
||||||
+for ac_c_preproc_warn_flag in '' yes
|
|
||||||
+do
|
|
||||||
+ # Use a header file that comes with gcc, so configuring glibc
|
|
||||||
+ # with a fresh cross-compiler works.
|
|
||||||
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
|
||||||
+ # <limits.h> exists even on freestanding compilers.
|
|
||||||
+ # On the NeXT, cc -E runs the code through the compiler's parser,
|
|
||||||
+ # not just through cpp. "Syntax error" is here to catch this case.
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#ifdef __STDC__
|
|
||||||
+# include <limits.h>
|
|
||||||
+#else
|
|
||||||
+# include <assert.h>
|
|
||||||
+#endif
|
|
||||||
+ Syntax error
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+ # Broken: fails on valid input.
|
|
||||||
+continue
|
|
||||||
+fi
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+
|
|
||||||
+ # OK, works on sane cases. Now check whether nonexistent headers
|
|
||||||
+ # can be detected and how.
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <ac_nonexistent.h>
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
||||||
+ # Broken: success on invalid input.
|
|
||||||
+continue
|
|
||||||
+else
|
|
||||||
+ # Passes both tests.
|
|
||||||
+ac_preproc_ok=:
|
|
||||||
+break
|
|
||||||
+fi
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+
|
|
||||||
+done
|
|
||||||
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+if $ac_preproc_ok; then :
|
|
||||||
+ break
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+ done
|
|
||||||
+ ac_cv_prog_CPP=$CPP
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+ CPP=$ac_cv_prog_CPP
|
|
||||||
+else
|
|
||||||
+ ac_cv_prog_CPP=$CPP
|
|
||||||
+fi
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
|
|
||||||
+$as_echo "$CPP" >&6; }
|
|
||||||
+ac_preproc_ok=false
|
|
||||||
+for ac_c_preproc_warn_flag in '' yes
|
|
||||||
+do
|
|
||||||
+ # Use a header file that comes with gcc, so configuring glibc
|
|
||||||
+ # with a fresh cross-compiler works.
|
|
||||||
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
|
||||||
+ # <limits.h> exists even on freestanding compilers.
|
|
||||||
+ # On the NeXT, cc -E runs the code through the compiler's parser,
|
|
||||||
+ # not just through cpp. "Syntax error" is here to catch this case.
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#ifdef __STDC__
|
|
||||||
+# include <limits.h>
|
|
||||||
+#else
|
|
||||||
+# include <assert.h>
|
|
||||||
+#endif
|
|
||||||
+ Syntax error
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+ # Broken: fails on valid input.
|
|
||||||
+continue
|
|
||||||
+fi
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+
|
|
||||||
+ # OK, works on sane cases. Now check whether nonexistent headers
|
|
||||||
+ # can be detected and how.
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <ac_nonexistent.h>
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_cpp "$LINENO"; then :
|
|
||||||
+ # Broken: success on invalid input.
|
|
||||||
+continue
|
|
||||||
+else
|
|
||||||
+ # Passes both tests.
|
|
||||||
+ac_preproc_ok=:
|
|
||||||
+break
|
|
||||||
+fi
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+
|
|
||||||
+done
|
|
||||||
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
|
|
||||||
+rm -f conftest.err conftest.$ac_ext
|
|
||||||
+if $ac_preproc_ok; then :
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
|
|
||||||
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
|
||||||
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
|
|
||||||
+See \`config.log' for more details." "$LINENO" 5; }
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+ac_ext=c
|
|
||||||
+ac_cpp='$CPP $CPPFLAGS'
|
|
||||||
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
|
||||||
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
|
||||||
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
|
|
||||||
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
|
|
||||||
+if test "${ac_cv_path_GREP+set}" = set; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+else
|
|
||||||
+ if test -z "$GREP"; then
|
|
||||||
+ ac_path_GREP_found=false
|
|
||||||
+ # Loop through the user's path and test for each of PROGNAME-LIST
|
|
||||||
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
||||||
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
|
||||||
+do
|
|
||||||
+ IFS=$as_save_IFS
|
|
||||||
+ test -z "$as_dir" && as_dir=.
|
|
||||||
+ for ac_prog in grep ggrep; do
|
|
||||||
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
|
||||||
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
|
|
||||||
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
|
|
||||||
+# Check for GNU ac_path_GREP and select it if it is found.
|
|
||||||
+ # Check for GNU $ac_path_GREP
|
|
||||||
+case `"$ac_path_GREP" --version 2>&1` in
|
|
||||||
+*GNU*)
|
|
||||||
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
|
|
||||||
+*)
|
|
||||||
+ ac_count=0
|
|
||||||
+ $as_echo_n 0123456789 >"conftest.in"
|
|
||||||
+ while :
|
|
||||||
+ do
|
|
||||||
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
|
|
||||||
+ mv "conftest.tmp" "conftest.in"
|
|
||||||
+ cp "conftest.in" "conftest.nl"
|
|
||||||
+ $as_echo 'GREP' >> "conftest.nl"
|
|
||||||
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
|
||||||
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
|
||||||
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
|
|
||||||
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
|
|
||||||
+ # Best one so far, save it but keep looking for a better one
|
|
||||||
+ ac_cv_path_GREP="$ac_path_GREP"
|
|
||||||
+ ac_path_GREP_max=$ac_count
|
|
||||||
+ fi
|
|
||||||
+ # 10*(2^10) chars as input seems more than enough
|
|
||||||
+ test $ac_count -gt 10 && break
|
|
||||||
+ done
|
|
||||||
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
|
||||||
+esac
|
|
||||||
+
|
|
||||||
+ $ac_path_GREP_found && break 3
|
|
||||||
+ done
|
|
||||||
+ done
|
|
||||||
+ done
|
|
||||||
+IFS=$as_save_IFS
|
|
||||||
+ if test -z "$ac_cv_path_GREP"; then
|
|
||||||
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
|
||||||
+ fi
|
|
||||||
+else
|
|
||||||
+ ac_cv_path_GREP=$GREP
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
|
|
||||||
+$as_echo "$ac_cv_path_GREP" >&6; }
|
|
||||||
+ GREP="$ac_cv_path_GREP"
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
|
|
||||||
+$as_echo_n "checking for egrep... " >&6; }
|
|
||||||
+if test "${ac_cv_path_EGREP+set}" = set; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+else
|
|
||||||
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
|
|
||||||
+ then ac_cv_path_EGREP="$GREP -E"
|
|
||||||
+ else
|
|
||||||
+ if test -z "$EGREP"; then
|
|
||||||
+ ac_path_EGREP_found=false
|
|
||||||
+ # Loop through the user's path and test for each of PROGNAME-LIST
|
|
||||||
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
||||||
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
|
|
||||||
+do
|
|
||||||
+ IFS=$as_save_IFS
|
|
||||||
+ test -z "$as_dir" && as_dir=.
|
|
||||||
+ for ac_prog in egrep; do
|
|
||||||
+ for ac_exec_ext in '' $ac_executable_extensions; do
|
|
||||||
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
|
|
||||||
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
|
|
||||||
+# Check for GNU ac_path_EGREP and select it if it is found.
|
|
||||||
+ # Check for GNU $ac_path_EGREP
|
|
||||||
+case `"$ac_path_EGREP" --version 2>&1` in
|
|
||||||
+*GNU*)
|
|
||||||
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
|
|
||||||
+*)
|
|
||||||
+ ac_count=0
|
|
||||||
+ $as_echo_n 0123456789 >"conftest.in"
|
|
||||||
+ while :
|
|
||||||
+ do
|
|
||||||
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
|
|
||||||
+ mv "conftest.tmp" "conftest.in"
|
|
||||||
+ cp "conftest.in" "conftest.nl"
|
|
||||||
+ $as_echo 'EGREP' >> "conftest.nl"
|
|
||||||
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
|
|
||||||
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
|
|
||||||
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
|
|
||||||
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
|
|
||||||
+ # Best one so far, save it but keep looking for a better one
|
|
||||||
+ ac_cv_path_EGREP="$ac_path_EGREP"
|
|
||||||
+ ac_path_EGREP_max=$ac_count
|
|
||||||
+ fi
|
|
||||||
+ # 10*(2^10) chars as input seems more than enough
|
|
||||||
+ test $ac_count -gt 10 && break
|
|
||||||
+ done
|
|
||||||
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
|
||||||
+esac
|
|
||||||
+
|
|
||||||
+ $ac_path_EGREP_found && break 3
|
|
||||||
+ done
|
|
||||||
+ done
|
|
||||||
+ done
|
|
||||||
+IFS=$as_save_IFS
|
|
||||||
+ if test -z "$ac_cv_path_EGREP"; then
|
|
||||||
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
|
|
||||||
+ fi
|
|
||||||
+else
|
|
||||||
+ ac_cv_path_EGREP=$EGREP
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+ fi
|
|
||||||
+fi
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
|
|
||||||
+$as_echo "$ac_cv_path_EGREP" >&6; }
|
|
||||||
+ EGREP="$ac_cv_path_EGREP"
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
|
|
||||||
+$as_echo_n "checking for ANSI C header files... " >&6; }
|
|
||||||
+if test "${ac_cv_header_stdc+set}" = set; then :
|
|
||||||
+ $as_echo_n "(cached) " >&6
|
|
||||||
+else
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <stdarg.h>
|
|
||||||
+#include <string.h>
|
|
||||||
+#include <float.h>
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+
|
|
||||||
+ ;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_compile "$LINENO"; then :
|
|
||||||
+ ac_cv_header_stdc=yes
|
|
||||||
+else
|
|
||||||
+ ac_cv_header_stdc=no
|
|
||||||
+fi
|
|
||||||
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
||||||
+
|
|
||||||
+if test $ac_cv_header_stdc = yes; then
|
|
||||||
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <string.h>
|
|
||||||
+
|
|
||||||
+_ACEOF
|
|
||||||
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
|
||||||
+ $EGREP "memchr" >/dev/null 2>&1; then :
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+ ac_cv_header_stdc=no
|
|
||||||
+fi
|
|
||||||
+rm -f conftest*
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+if test $ac_cv_header_stdc = yes; then
|
|
||||||
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+
|
|
||||||
+_ACEOF
|
|
||||||
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
|
||||||
+ $EGREP "free" >/dev/null 2>&1; then :
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+ ac_cv_header_stdc=no
|
|
||||||
+fi
|
|
||||||
+rm -f conftest*
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+if test $ac_cv_header_stdc = yes; then
|
|
||||||
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
|
|
||||||
+ if test "$cross_compiling" = yes; then :
|
|
||||||
+ :
|
|
||||||
+else
|
|
||||||
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
+/* end confdefs.h. */
|
|
||||||
+#include <ctype.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#if ((' ' & 0x0FF) == 0x020)
|
|
||||||
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
|
||||||
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
|
|
||||||
+#else
|
|
||||||
+# define ISLOWER(c) \
|
|
||||||
+ (('a' <= (c) && (c) <= 'i') \
|
|
||||||
+ || ('j' <= (c) && (c) <= 'r') \
|
|
||||||
+ || ('s' <= (c) && (c) <= 'z'))
|
|
||||||
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+ for (i = 0; i < 256; i++)
|
|
||||||
+ if (XOR (islower (i), ISLOWER (i))
|
|
||||||
+ || toupper (i) != TOUPPER (i))
|
|
||||||
+ return 2;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+_ACEOF
|
|
||||||
+if ac_fn_c_try_run "$LINENO"; then :
|
|
||||||
+
|
|
||||||
+else
|
|
||||||
+ ac_cv_header_stdc=no
|
|
||||||
+fi
|
|
||||||
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
|
||||||
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+fi
|
|
||||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
|
|
||||||
+$as_echo "$ac_cv_header_stdc" >&6; }
|
|
||||||
+if test $ac_cv_header_stdc = yes; then
|
|
||||||
+
|
|
||||||
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
|
|
||||||
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
|
|
||||||
+ inttypes.h stdint.h unistd.h
|
|
||||||
+do :
|
|
||||||
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
|
||||||
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
|
|
||||||
+"
|
|
||||||
+eval as_val=\$$as_ac_Header
|
|
||||||
+ if test "x$as_val" = x""yes; then :
|
|
||||||
+ cat >>confdefs.h <<_ACEOF
|
|
||||||
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
|
||||||
+_ACEOF
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+done
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+for ac_header in unistd.h sys/stat.h
|
|
||||||
+do :
|
|
||||||
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
|
||||||
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
|
||||||
+eval as_val=\$$as_ac_Header
|
|
||||||
+ if test "x$as_val" = x""yes; then :
|
|
||||||
+ cat >>confdefs.h <<_ACEOF
|
|
||||||
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
|
||||||
+_ACEOF
|
|
||||||
+
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+done
|
|
||||||
+
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra programs to build requiring -lcuda" >&5
|
|
||||||
$as_echo_n "checking for extra programs to build requiring -lcuda... " >&6; }
|
|
6
sources
6
sources
|
@ -1,3 +1,3 @@
|
||||||
SHA512 (gcc-7.2.1-20170915.tar.bz2) = 41cf64b6f9ea7b968d2d1a9b833231c32113311b63d23a4f830e8cbacbdeeb05bfd94ff1d0add62938146fc07c38018befb4efcf9e28b14df76ec6db5159ad1c
|
SHA512 (gcc-10.0.1-20200216.tar.xz) = 56507e273b00e85ed4145e80df65d9b4e4791f23e7cb5d931f85b9420cbf3a7125ba49978dc73c2987c0a6101f741dc5a60a08cb3346d4c5082400cbcfcdd008
|
||||||
SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.bz2) = 38f97c9297ad108568352a4d28277455a3c01fd8b7864e798037e5006b6f757022e874bbf3f165775fe3b873781bc108137bbeb42dd5ed3c7d3e6747746fa918
|
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 9ceea0b883185fe489724d54a7e909bb6ed4785fcadf80162033dc6a133e2657337175601278e4155d1f8fac275ff9c8a02572aea876166c608774c809f832e9
|
||||||
SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.bz2) = 95b577a06a93bb044dbc8033e550cb36bcf2ab2687da030a7318cdc90e7467ed49665e247dcafb5ff4a7e92cdc264291d19728bd17fab902fb64b22491269330
|
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1
|
||||||
|
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
|
||||||
|
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
|
||||||
|
d=`date --iso | sed 's/-//g'`
|
||||||
|
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-10.0.1-$d/ $1 | xz -9e > gcc-10.0.1-$d.tar.xz
|
||||||
|
rm -rf gcc-dir.tmp
|
Loading…
Reference in New Issue