diff options
Diffstat (limited to 'testing/source/gcc/patches')
3 files changed, 126 insertions, 0 deletions
diff --git a/testing/source/gcc/patches/PR100102-2.a1b3484a8e6c53c8084723e3f1738d402374198e.patch b/testing/source/gcc/patches/PR100102-2.a1b3484a8e6c53c8084723e3f1738d402374198e.patch new file mode 100644 index 000000000..56394fc3f --- /dev/null +++ b/testing/source/gcc/patches/PR100102-2.a1b3484a8e6c53c8084723e3f1738d402374198e.patch @@ -0,0 +1,59 @@ +From a1b3484a8e6c53c8084723e3f1738d402374198e Mon Sep 17 00:00:00 2001 +From: Jason Merrill <jason@redhat.com> +Date: Mon, 31 May 2021 12:56:34 -0400 +Subject: [PATCH] c++: alias member template [PR100102] + +Patrick already fixed the primary cause of this bug. But while I was +looking at this testcase I noticed that with the qualified name k::o we +ended up with a plain FUNCTION_DECL, whereas without the k:: we got a +BASELINK. There seems to be no good reason not to return the BASELINK +in this case as well. + + PR c++/100102 + +gcc/cp/ChangeLog: + + * init.c (build_offset_ref): Return the BASELINK for a static + member function. + +gcc/testsuite/ChangeLog: + + * g++.dg/cpp0x/alias-decl-73.C: New test. +--- + gcc/cp/init.c | 2 +- + gcc/testsuite/g++.dg/cpp0x/alias-decl-73.C | 9 +++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/g++.dg/cpp0x/alias-decl-73.C + +diff --git a/gcc/cp/init.c b/gcc/cp/init.c +index b1123287300..1b161d526f6 100644 +--- a/gcc/cp/init.c ++++ b/gcc/cp/init.c +@@ -2214,7 +2214,7 @@ build_offset_ref (tree type, tree member, bool address_p, + if (!ok) + return error_mark_node; + if (DECL_STATIC_FUNCTION_P (t)) +- return t; ++ return member; + member = t; + } + else +diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-73.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-73.C +new file mode 100644 +index 00000000000..aae778646dc +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-73.C +@@ -0,0 +1,9 @@ ++// PR c++/100102 ++// { dg-do compile { target c++11 } } ++ ++template <bool B1> using a = int; ++template <class T3, class T4> struct k { ++ static long o(); ++ template <class T5> using n = a<bool(k::o)>; ++ n<int> q; ++}; +-- +2.27.0 + + diff --git a/testing/source/gcc/patches/gcc-no_fixincludes.diff b/testing/source/gcc/patches/gcc-no_fixincludes.diff new file mode 100644 index 000000000..e152e0821 --- /dev/null +++ b/testing/source/gcc/patches/gcc-no_fixincludes.diff @@ -0,0 +1,27 @@ +--- ./gcc/Makefile.in.orig 2018-03-09 09:24:44.000000000 -0600 ++++ ./gcc/Makefile.in 2018-05-02 12:25:43.958002771 -0500 +@@ -3004,9 +3004,9 @@ + chmod a+r $${fix_dir}/limits.h; \ + done + # Install the README +- rm -f include-fixed/README +- cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README +- chmod a+r include-fixed/README ++# rm -f include-fixed/README ++# cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README ++# chmod a+r include-fixed/README + $(STAMP) $@ + + .PHONY: install-gcc-tooldir +@@ -3087,10 +3087,7 @@ + (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \ + SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \ + gcc_dir=`${PWD_COMMAND}` ; \ +- export TARGET_MACHINE srcdir SHELL MACRO_LIST && \ +- cd $(build_objdir)/fixincludes && \ +- $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \ +- $(BUILD_SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \ ++ export TARGET_MACHINE srcdir SHELL MACRO_LIST ); \ + rm -f $${fix_dir}/syslimits.h; \ + if [ -f $${fix_dir}/limits.h ]; then \ + mv $${fix_dir}/limits.h $${fix_dir}/syslimits.h; \ diff --git a/testing/source/gcc/patches/gfortran.deferred-shape-vs-assumed-shape.patch b/testing/source/gcc/patches/gfortran.deferred-shape-vs-assumed-shape.patch new file mode 100644 index 000000000..f695b969e --- /dev/null +++ b/testing/source/gcc/patches/gfortran.deferred-shape-vs-assumed-shape.patch @@ -0,0 +1,40 @@ +[PATCH] deferred-shape vs assumed-shape +Steve Kargl sgk@troutmask.apl.washington.edu +Wed Apr 1 20:04:43 GMT 2020 + +See +https://stackoverflow.com/questions/60972134/whats-wrong-with-the-following-fortran-code-gfortran-dtio-dummy-argument-at + +Is A(:) a deferred-shape array or an assumed-shape array? The +answer of course depends on context. + +This patch fixes the issue found at the above URL. + +Index: gcc/fortran/interface.c +=================================================================== +--- gcc/fortran/interface.c (revision 280157) ++++ gcc/fortran/interface.c (working copy) +@@ -4916,10 +4916,15 @@ check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool type + || ((type != BT_CLASS) && fsym->attr.dimension))) + gfc_error ("DTIO dummy argument at %L must be a scalar", + &fsym->declared_at); +- else if (rank == 1 +- && (fsym->as == NULL || fsym->as->type != AS_ASSUMED_SHAPE)) +- gfc_error ("DTIO dummy argument at %L must be an " +- "ASSUMED SHAPE ARRAY", &fsym->declared_at); ++ else if (rank == 1) ++ { ++ if (fsym->as == NULL ++ || !(fsym->as->type == AS_ASSUMED_SHAPE ++ || (fsym->as->type == AS_DEFERRED && fsym->attr.dummy ++ && !fsym->attr.allocatable && !fsym->attr.pointer))) ++ gfc_error ("DTIO dummy argument at %L must be an " ++ "ASSUMED-SHAPE ARRAY", &fsym->declared_at); ++ } + + if (type == BT_CHARACTER && fsym->ts.u.cl->length != NULL) + gfc_error ("DTIO character argument at %L must have assumed length", + +-- +Steve + |