import gcc-8.3.1-5.el8
This commit is contained in:
parent
3dc5baceda
commit
d5461de1f4
@ -1,3 +1,3 @@
|
||||
8ee669ee60997110e6251c72dac66bf69bbe13c7 SOURCES/gcc-8.3.1-20190507.tar.xz
|
||||
e83739fffae5c3bbb1784cadb72ead8384de74e0 SOURCES/gcc-8.3.1-20191121.tar.xz
|
||||
3bdb3cc01fa7690a0e20ea5cfffcbe690f7665eb SOURCES/nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz
|
||||
ce8eb83be0ac37fb5d5388df455a980fe37b4f13 SOURCES/nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,3 @@
|
||||
SOURCES/gcc-8.3.1-20190507.tar.xz
|
||||
SOURCES/gcc-8.3.1-20191121.tar.xz
|
||||
SOURCES/nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz
|
||||
SOURCES/nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz
|
||||
|
@ -4,7 +4,7 @@
|
||||
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
||||
</a>
|
||||
</p><p>
|
||||
+ Release 8.1.1
|
||||
+ Release 8.3.1
|
||||
+ </p><p>
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
@ -17,7 +17,7 @@
|
||||
</p><p>
|
||||
- The API documentation, rendered into HTML, can be viewed online
|
||||
+ The API documentation, rendered into HTML, can be viewed locally
|
||||
+ <a class="link" href="api/index.html" target="_top">for the 8.1.1 release</a>,
|
||||
+ <a class="link" href="api/index.html" target="_top">for the 8.3.1 release</a>,
|
||||
+ online
|
||||
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
||||
and
|
||||
|
@ -1,94 +0,0 @@
|
||||
2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR c++/85400
|
||||
* c-attribs.c (handle_visibility_attribute): Do not set no_add_attrs.
|
||||
|
||||
* decl2.c (adjust_var_decl_tls_model): New static function.
|
||||
(comdat_linkage): Call it on a variable.
|
||||
(maybe_make_one_only): Likewise.
|
||||
|
||||
--- gcc/c-family/c-attribs.c
|
||||
+++ gcc/c-family/c-attribs.c
|
||||
@@ -2299,14 +2299,13 @@ handle_visibility_attribute (tree *node, tree name, tree args,
|
||||
|
||||
static tree
|
||||
handle_tls_model_attribute (tree *node, tree name, tree args,
|
||||
- int ARG_UNUSED (flags), bool *no_add_attrs)
|
||||
+ int ARG_UNUSED (flags),
|
||||
+ bool *ARG_UNUSED (no_add_attrs))
|
||||
{
|
||||
tree id;
|
||||
tree decl = *node;
|
||||
enum tls_model kind;
|
||||
|
||||
- *no_add_attrs = true;
|
||||
-
|
||||
if (!VAR_P (decl) || !DECL_THREAD_LOCAL_P (decl))
|
||||
{
|
||||
warning (OPT_Wattributes, "%qE attribute ignored", name);
|
||||
--- gcc/cp/decl2.c
|
||||
+++ gcc/cp/decl2.c
|
||||
@@ -1838,6 +1838,17 @@ mark_vtable_entries (tree decl)
|
||||
}
|
||||
}
|
||||
|
||||
+/* Adjust the TLS model on variable DECL if need be, typically after
|
||||
+ the linkage of DECL has been modified. */
|
||||
+
|
||||
+static void
|
||||
+adjust_var_decl_tls_model (tree decl)
|
||||
+{
|
||||
+ if (CP_DECL_THREAD_LOCAL_P (decl)
|
||||
+ && !lookup_attribute ("tls_model", DECL_ATTRIBUTES (decl)))
|
||||
+ set_decl_tls_model (decl, decl_default_tls_model (decl));
|
||||
+}
|
||||
+
|
||||
/* Set DECL up to have the closest approximation of "initialized common"
|
||||
linkage available. */
|
||||
|
||||
@@ -1888,6 +1899,9 @@ comdat_linkage (tree decl)
|
||||
|
||||
if (TREE_PUBLIC (decl))
|
||||
DECL_COMDAT (decl) = 1;
|
||||
+
|
||||
+ if (VAR_P (decl))
|
||||
+ adjust_var_decl_tls_model (decl);
|
||||
}
|
||||
|
||||
/* For win32 we also want to put explicit instantiations in
|
||||
@@ -1926,6 +1940,8 @@ maybe_make_one_only (tree decl)
|
||||
/* Mark it needed so we don't forget to emit it. */
|
||||
node->forced_by_abi = true;
|
||||
TREE_USED (decl) = 1;
|
||||
+
|
||||
+ adjust_var_decl_tls_model (decl);
|
||||
}
|
||||
}
|
||||
}
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/g++.dg/tls/pr85400.C
|
||||
@@ -0,0 +1,24 @@
|
||||
+// PR c++/85400
|
||||
+// Testcase by Brian Vandenberg <phantall@gmail.com>
|
||||
+
|
||||
+// { dg-do link { target c++11 } }
|
||||
+// { dg-require-effective-target fpic }
|
||||
+// { dg-require-effective-target shared }
|
||||
+// { dg-require-effective-target tls }
|
||||
+// { dg-options "-shared -fPIC -O" }
|
||||
+// { dg-add-options tls }
|
||||
+
|
||||
+struct Test
|
||||
+{
|
||||
+ int blah (int y)
|
||||
+ {
|
||||
+ thread_local int mything = 3;
|
||||
+ mything = y > 0 ? y : mything;
|
||||
+ return mything;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+int stuff (Test& test, int y)
|
||||
+{
|
||||
+ return test.blah(y);
|
||||
+}
|
@ -1,39 +0,0 @@
|
||||
2018-06-12 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/86098 - ICE with template placeholder for TTP.
|
||||
* typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
|
||||
CLASS_PLACEHOLDER_TEMPLATE.
|
||||
|
||||
--- gcc/cp/typeck.c
|
||||
+++ gcc/cp/typeck.c
|
||||
@@ -1375,6 +1375,11 @@ structural_comptypes (tree t1, tree t2, int strict)
|
||||
template parameters set, they can't be equal. */
|
||||
if (!comp_template_parms_position (t1, t2))
|
||||
return false;
|
||||
+ /* If T1 and T2 don't represent the same class template deduction,
|
||||
+ they aren't equal. */
|
||||
+ if (CLASS_PLACEHOLDER_TEMPLATE (t1)
|
||||
+ != CLASS_PLACEHOLDER_TEMPLATE (t2))
|
||||
+ return false;
|
||||
/* Constrained 'auto's are distinct from parms that don't have the same
|
||||
constraints. */
|
||||
if (!equivalent_placeholder_constraints (t1, t2))
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/g++.dg/cpp1z/class-deduction58.C
|
||||
@@ -0,0 +1,16 @@
|
||||
+// PR c++/86098
|
||||
+// { dg-additional-options -std=c++17 }
|
||||
+
|
||||
+template <class _Res> class future;
|
||||
+template <class T> T&& declval();
|
||||
+
|
||||
+template<template <class...> class T>
|
||||
+struct construct_deduced {
|
||||
+ template <class... AN>
|
||||
+ using deduced_t = decltype(T{declval<AN>()...});
|
||||
+ template<class... AN>
|
||||
+ deduced_t<AN...> operator()(AN&&... an) const;
|
||||
+};
|
||||
+
|
||||
+template<class T>
|
||||
+future<T> future_from(T singleSender);
|
@ -1,40 +0,0 @@
|
||||
2019-04-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/90139
|
||||
* tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return
|
||||
assign_temp instead of gen_reg_rtx.
|
||||
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.c-torture/compile/pr90139.c
|
||||
@@ -0,0 +1,20 @@
|
||||
+/* PR middle-end/90139 */
|
||||
+
|
||||
+typedef float __attribute__((vector_size (sizeof (float)))) V;
|
||||
+void bar (int, V *);
|
||||
+int l;
|
||||
+
|
||||
+void
|
||||
+foo (void)
|
||||
+{
|
||||
+ V n, b, o;
|
||||
+ while (1)
|
||||
+ switch (l)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ o = n;
|
||||
+ n = b;
|
||||
+ b = o;
|
||||
+ bar (1, &o);
|
||||
+ }
|
||||
+}
|
||||
--- gcc/tree-outof-ssa.c
|
||||
+++ gcc/tree-outof-ssa.c
|
||||
@@ -653,6 +653,8 @@ get_temp_reg (tree name)
|
||||
tree type = TREE_TYPE (name);
|
||||
int unsignedp;
|
||||
machine_mode reg_mode = promote_ssa_mode (name, &unsignedp);
|
||||
+ if (reg_mode == BLKmode)
|
||||
+ return assign_temp (type, 0, 0);
|
||||
rtx x = gen_reg_rtx (reg_mode);
|
||||
if (POINTER_TYPE_P (type))
|
||||
mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (type)));
|
@ -1,55 +0,0 @@
|
||||
2019-07-04 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/90756
|
||||
* explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it
|
||||
for VECTOR_TYPE_P.
|
||||
|
||||
--- gcc/explow.c
|
||||
+++ gcc/explow.c
|
||||
@@ -892,16 +892,7 @@ promote_ssa_mode (const_tree name, int *punsignedp)
|
||||
|
||||
tree type = TREE_TYPE (name);
|
||||
int unsignedp = TYPE_UNSIGNED (type);
|
||||
- machine_mode mode = TYPE_MODE (type);
|
||||
-
|
||||
- /* Bypass TYPE_MODE when it maps vector modes to BLKmode. */
|
||||
- if (mode == BLKmode)
|
||||
- {
|
||||
- gcc_assert (VECTOR_TYPE_P (type));
|
||||
- mode = type->type_common.mode;
|
||||
- }
|
||||
-
|
||||
- machine_mode pmode = promote_mode (type, mode, &unsignedp);
|
||||
+ machine_mode pmode = promote_mode (type, TYPE_MODE (type), &unsignedp);
|
||||
if (punsignedp)
|
||||
*punsignedp = unsignedp;
|
||||
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.dg/pr90756.c
|
||||
@@ -0,0 +1,26 @@
|
||||
+/* PR rtl-optimization/90756 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -Wno-psabi" } */
|
||||
+/* { dg-additional-options "-mno-sse" { target ia32 } } */
|
||||
+
|
||||
+typedef float B __attribute__((vector_size(4 * sizeof (float))));
|
||||
+typedef unsigned long long C __attribute__((vector_size(4 * sizeof (long long))));
|
||||
+typedef short D __attribute__((vector_size(4 * sizeof (short))));
|
||||
+B z;
|
||||
+void foo (C);
|
||||
+C bar (D);
|
||||
+B baz ();
|
||||
+D qux (B);
|
||||
+
|
||||
+void
|
||||
+quux (int x)
|
||||
+{
|
||||
+ B n = z, b = z;
|
||||
+ while (1)
|
||||
+ switch (x)
|
||||
+ {
|
||||
+ case 0: n = baz (); /* FALLTHRU */
|
||||
+ case 1: { B o = n; n = b; b = o; } /* FALLTHRU */
|
||||
+ case 2: { D u = qux (b); C v = bar (u); foo (v); }
|
||||
+ }
|
||||
+}
|
@ -1,279 +0,0 @@
|
||||
2019-05-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/90329
|
||||
* lto-streamer.h (LTO_minor_version): Bump to 2.
|
||||
|
||||
Backported from mainline
|
||||
2019-05-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/90329
|
||||
* tree-core.h (struct tree_decl_common): Document
|
||||
decl_nonshareable_flag for PARM_DECLs.
|
||||
* tree.h (DECL_HIDDEN_STRING_LENGTH): Define.
|
||||
* calls.c (expand_call): Don't try tail call if caller
|
||||
has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be
|
||||
passed on the stack and callee needs to pass any arguments on the
|
||||
stack.
|
||||
* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
|
||||
else if instead of series of mutually exclusive ifs. Handle
|
||||
DECL_HIDDEN_STRING_LENGTH for PARM_DECLs.
|
||||
* tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
|
||||
|
||||
* lang.opt (fbroken-callers): Remove.
|
||||
(ftail-call-workaround, ftail-call-workaround=): New options.
|
||||
* gfortran.h (struct gfc_namespace): Add implicit_interface_calls.
|
||||
* interface.c (gfc_procedure_use): Set implicit_interface_calls
|
||||
for calls to implicit interface procedures.
|
||||
* trans-decl.c (create_function_arglist): Use flag_tail_call_workaround
|
||||
instead of flag_broken_callers. If it is not 2, also require
|
||||
sym->ns->implicit_interface_calls.
|
||||
* invoke.texi (fbroken-callers): Remove documentation.
|
||||
(ftail-call-workaround, ftail-call-workaround=): Document.
|
||||
|
||||
2019-05-19 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/90329
|
||||
* invoke.texi: Document -fbroken-callers.
|
||||
* lang.opt: Add -fbroken-callers.
|
||||
* trans-decl.c (create_function_arglist): Only set
|
||||
DECL_HIDDEN_STRING_LENGTH if flag_broken_callers is set.
|
||||
|
||||
2019-05-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/90329
|
||||
* trans-decl.c (create_function_arglist): Set
|
||||
DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if
|
||||
len is constant.
|
||||
|
||||
--- gcc/calls.c
|
||||
+++ gcc/calls.c
|
||||
@@ -3754,6 +3754,28 @@ expand_call (tree exp, rtx target, int ignore)
|
||||
|| dbg_cnt (tail_call) == false)
|
||||
try_tail_call = 0;
|
||||
|
||||
+ /* Workaround buggy C/C++ wrappers around Fortran routines with
|
||||
+ character(len=constant) arguments if the hidden string length arguments
|
||||
+ are passed on the stack; if the callers forget to pass those arguments,
|
||||
+ attempting to tail call in such routines leads to stack corruption.
|
||||
+ Avoid tail calls in functions where at least one such hidden string
|
||||
+ length argument is passed (partially or fully) on the stack in the
|
||||
+ caller and the callee needs to pass any arguments on the stack.
|
||||
+ See PR90329. */
|
||||
+ if (try_tail_call && maybe_ne (args_size.constant, 0))
|
||||
+ for (tree arg = DECL_ARGUMENTS (current_function_decl);
|
||||
+ arg; arg = DECL_CHAIN (arg))
|
||||
+ if (DECL_HIDDEN_STRING_LENGTH (arg) && DECL_INCOMING_RTL (arg))
|
||||
+ {
|
||||
+ subrtx_iterator::array_type array;
|
||||
+ FOR_EACH_SUBRTX (iter, array, DECL_INCOMING_RTL (arg), NONCONST)
|
||||
+ if (MEM_P (*iter))
|
||||
+ {
|
||||
+ try_tail_call = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* If the user has marked the function as requiring tail-call
|
||||
optimization, attempt it. */
|
||||
if (must_tail_call)
|
||||
--- gcc/fortran/gfortran.h
|
||||
+++ gcc/fortran/gfortran.h
|
||||
@@ -1857,6 +1857,9 @@ typedef struct gfc_namespace
|
||||
|
||||
/* Set to 1 for !$ACC ROUTINE namespaces. */
|
||||
unsigned oacc_routine:1;
|
||||
+
|
||||
+ /* Set to 1 if there are any calls to procedures with implicit interface. */
|
||||
+ unsigned implicit_interface_calls:1;
|
||||
}
|
||||
gfc_namespace;
|
||||
|
||||
--- gcc/fortran/interface.c
|
||||
+++ gcc/fortran/interface.c
|
||||
@@ -3657,6 +3657,7 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where)
|
||||
gfc_warning (OPT_Wimplicit_procedure,
|
||||
"Procedure %qs called at %L is not explicitly declared",
|
||||
sym->name, where);
|
||||
+ gfc_find_proc_namespace (sym->ns)->implicit_interface_calls = 1;
|
||||
}
|
||||
|
||||
if (sym->attr.if_source == IFSRC_UNKNOWN)
|
||||
--- gcc/fortran/invoke.texi
|
||||
+++ gcc/fortran/invoke.texi
|
||||
@@ -181,7 +181,8 @@ and warnings}.
|
||||
@item Code Generation Options
|
||||
@xref{Code Gen Options,,Options for code generation conventions}.
|
||||
@gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol
|
||||
--fbounds-check -fcheck-array-temporaries @gol
|
||||
+-fbounds-check -ftail-call-workaround -ftail-call-workaround=@var{n} @gol
|
||||
+-fcheck-array-temporaries @gol
|
||||
-fcheck=@var{<all|array-temps|bounds|do|mem|pointer|recursion>} @gol
|
||||
-fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c
|
||||
-ffrontend-loop-interchange @gol
|
||||
@@ -1580,6 +1581,39 @@ warnings for generated array temporaries.
|
||||
@c Note: This option is also referred in gcc's manpage
|
||||
Deprecated alias for @option{-fcheck=bounds}.
|
||||
|
||||
+@item -ftail-call-workaround
|
||||
+@itemx -ftail-call-workaround=@var{n}
|
||||
+@opindex @code{tail-call-workaround}
|
||||
+Some C interfaces to Fortran codes violate the gfortran ABI by
|
||||
+omitting the hidden character length arguments as described in
|
||||
+@xref{Argument passing conventions}. This can lead to crashes
|
||||
+because pushing arguments for tail calls can overflow the stack.
|
||||
+
|
||||
+To provide a workaround for existing binary packages, this option
|
||||
+disables tail call optimization for gfortran procedures with character
|
||||
+arguments. With @option{-ftail-call-workaround=2} tail call optimization
|
||||
+is disabled in all gfortran procedures with character arguments,
|
||||
+with @option{-ftail-call-workaround=1} or equivalent
|
||||
+@option{-ftail-call-workaround} only in gfortran procedures with character
|
||||
+arguments that call implicitly prototyped procedures.
|
||||
+
|
||||
+Using this option can lead to problems including crashes due to
|
||||
+insufficient stack space.
|
||||
+
|
||||
+It is @emph{very strongly} recommended to fix the code in question.
|
||||
+The @option{-fc-prototypes-external} option can be used to generate
|
||||
+prototypes which conform to gfortran's ABI, for inclusion in the
|
||||
+source code.
|
||||
+
|
||||
+Support for this option will likely be withdrawn in a future release
|
||||
+of gfortran.
|
||||
+
|
||||
+The negative form, @option{-fno-tail-call-workaround} or equivalent
|
||||
+@option{-ftail-call-workaround=0}, can be used to disable this option.
|
||||
+
|
||||
+Default is currently @option{-ftail-call-workaround}, this will change
|
||||
+in future releases.
|
||||
+
|
||||
@item -fcheck-array-temporaries
|
||||
@opindex @code{fcheck-array-temporaries}
|
||||
Deprecated alias for @option{-fcheck=array-temps}.
|
||||
--- gcc/fortran/lang.opt
|
||||
+++ gcc/fortran/lang.opt
|
||||
@@ -742,6 +742,13 @@ fsign-zero
|
||||
Fortran Var(flag_sign_zero) Init(1)
|
||||
Apply negative sign to zero values.
|
||||
|
||||
+ftail-call-workaround
|
||||
+Fortran Alias(ftail-call-workaround=,1,0)
|
||||
+
|
||||
+ftail-call-workaround=
|
||||
+Fortran RejectNegative Joined UInteger IntegerRange(0, 2) Var(flag_tail_call_workaround) Init(1)
|
||||
+Disallow tail call optimization when a calling routine may have omitted character lengths.
|
||||
+
|
||||
funderscoring
|
||||
Fortran Var(flag_underscoring) Init(1)
|
||||
Append underscores to externally visible names.
|
||||
--- gcc/fortran/trans-decl.c
|
||||
+++ gcc/fortran/trans-decl.c
|
||||
@@ -2513,6 +2513,17 @@ create_function_arglist (gfc_symbol * sym)
|
||||
TREE_READONLY (length) = 1;
|
||||
gfc_finish_decl (length);
|
||||
|
||||
+ /* Marking the length DECL_HIDDEN_STRING_LENGTH will lead
|
||||
+ to tail calls being disabled. Only do that if we
|
||||
+ potentially have broken callers. */
|
||||
+ if (flag_tail_call_workaround
|
||||
+ && f->sym->ts.u.cl
|
||||
+ && f->sym->ts.u.cl->length
|
||||
+ && f->sym->ts.u.cl->length->expr_type == EXPR_CONSTANT
|
||||
+ && (flag_tail_call_workaround == 2
|
||||
+ || f->sym->ns->implicit_interface_calls))
|
||||
+ DECL_HIDDEN_STRING_LENGTH (length) = 1;
|
||||
+
|
||||
/* Remember the passed value. */
|
||||
if (!f->sym->ts.u.cl || f->sym->ts.u.cl->passed_length)
|
||||
{
|
||||
--- gcc/lto-streamer.h
|
||||
+++ gcc/lto-streamer.h
|
||||
@@ -121,7 +121,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
form followed by the data for the string. */
|
||||
|
||||
#define LTO_major_version 7
|
||||
-#define LTO_minor_version 1
|
||||
+#define LTO_minor_version 2
|
||||
|
||||
typedef unsigned char lto_decl_flags_t;
|
||||
|
||||
--- gcc/tree-core.h
|
||||
+++ gcc/tree-core.h
|
||||
@@ -1644,6 +1644,7 @@ struct GTY(()) tree_decl_common {
|
||||
/* In a VAR_DECL and PARM_DECL, this is DECL_READ_P. */
|
||||
unsigned decl_read_flag : 1;
|
||||
/* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE. */
|
||||
+ /* In a PARM_DECL, this is DECL_HIDDEN_STRING_LENGTH. */
|
||||
unsigned decl_nonshareable_flag : 1;
|
||||
|
||||
/* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */
|
||||
--- gcc/tree-streamer-in.c
|
||||
+++ gcc/tree-streamer-in.c
|
||||
@@ -252,7 +252,7 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
|
||||
LABEL_DECL_UID (expr) = -1;
|
||||
}
|
||||
|
||||
- if (TREE_CODE (expr) == FIELD_DECL)
|
||||
+ else if (TREE_CODE (expr) == FIELD_DECL)
|
||||
{
|
||||
DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
@@ -260,12 +260,15 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
|
||||
expr->decl_common.off_align = bp_unpack_value (bp, 8);
|
||||
}
|
||||
|
||||
- if (VAR_P (expr))
|
||||
+ else if (VAR_P (expr))
|
||||
{
|
||||
DECL_HAS_DEBUG_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
}
|
||||
|
||||
+ else if (TREE_CODE (expr) == PARM_DECL)
|
||||
+ DECL_HIDDEN_STRING_LENGTH (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
+
|
||||
if (TREE_CODE (expr) == RESULT_DECL
|
||||
|| TREE_CODE (expr) == PARM_DECL
|
||||
|| VAR_P (expr))
|
||||
--- gcc/tree-streamer-out.c
|
||||
+++ gcc/tree-streamer-out.c
|
||||
@@ -212,7 +212,7 @@ pack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
|
||||
bp_pack_var_len_unsigned (bp, EH_LANDING_PAD_NR (expr));
|
||||
}
|
||||
|
||||
- if (TREE_CODE (expr) == FIELD_DECL)
|
||||
+ else if (TREE_CODE (expr) == FIELD_DECL)
|
||||
{
|
||||
bp_pack_value (bp, DECL_PACKED (expr), 1);
|
||||
bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1);
|
||||
@@ -220,12 +220,15 @@ pack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
|
||||
bp_pack_value (bp, expr->decl_common.off_align, 8);
|
||||
}
|
||||
|
||||
- if (VAR_P (expr))
|
||||
+ else if (VAR_P (expr))
|
||||
{
|
||||
bp_pack_value (bp, DECL_HAS_DEBUG_EXPR_P (expr), 1);
|
||||
bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1);
|
||||
}
|
||||
|
||||
+ else if (TREE_CODE (expr) == PARM_DECL)
|
||||
+ bp_pack_value (bp, DECL_HIDDEN_STRING_LENGTH (expr), 1);
|
||||
+
|
||||
if (TREE_CODE (expr) == RESULT_DECL
|
||||
|| TREE_CODE (expr) == PARM_DECL
|
||||
|| VAR_P (expr))
|
||||
--- gcc/tree.h
|
||||
+++ gcc/tree.h
|
||||
@@ -909,6 +909,11 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
|
||||
(TREE_CHECK2 (NODE, VAR_DECL, \
|
||||
RESULT_DECL)->decl_common.decl_nonshareable_flag)
|
||||
|
||||
+/* In a PARM_DECL, set for Fortran hidden string length arguments that some
|
||||
+ buggy callers don't pass to the callee. */
|
||||
+#define DECL_HIDDEN_STRING_LENGTH(NODE) \
|
||||
+ (TREE_CHECK (NODE, PARM_DECL)->decl_common.decl_nonshareable_flag)
|
||||
+
|
||||
/* In a CALL_EXPR, means that the call is the jump from a thunk to the
|
||||
thunked-to function. */
|
||||
#define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag)
|
@ -1,45 +0,0 @@
|
||||
2019-07-15 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2019-07-01 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* config/s390/vector.md: Fix shift count operand printing.
|
||||
|
||||
--- gcc/config/s390/vector.md
|
||||
+++ gcc/config/s390/vector.md
|
||||
@@ -944,7 +944,7 @@
|
||||
(VEC_SHIFTS:VI (match_operand:VI 1 "register_operand" "v")
|
||||
(match_operand:SI 2 "nonmemory_operand" "an")))]
|
||||
"TARGET_VX"
|
||||
- "<vec_shifts_mnem><bhfgq>\t%v0,%v1,%Y2"
|
||||
+ "<vec_shifts_mnem><bhfgq>\t%v0,%v1,<addr_style_op_ops>"
|
||||
[(set_attr "op_type" "VRS")])
|
||||
|
||||
; Shift each element by corresponding vector element
|
||||
--- /dev/null
|
||||
+++ gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "veslf" 1 } } */
|
||||
+
|
||||
+typedef __attribute__((vector_size(16))) signed int v4si;
|
||||
+
|
||||
+v4si __attribute__((noinline,noclone))
|
||||
+shift_left_by_scalar (v4si in, int shift_count)
|
||||
+{
|
||||
+ return in << (3 + shift_count);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ v4si a = { 1, 2, 3, 4 };
|
||||
+ v4si result = shift_left_by_scalar (a, 1);
|
||||
+
|
||||
+ if (result[1] != 32)
|
||||
+ __builtin_abort ();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
@ -1,10 +1,10 @@
|
||||
%global DATE 20190507
|
||||
%global SVNREV 270976
|
||||
%global DATE 20191121
|
||||
%global SVNREV 278589
|
||||
%global gcc_version 8.3.1
|
||||
%global gcc_major 8
|
||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||
# %%{release}, append them after %%{gcc_release} on Release: line.
|
||||
%global gcc_release 4
|
||||
%global gcc_release 5
|
||||
%global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
|
||||
%global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
@ -104,7 +104,7 @@
|
||||
Summary: Various compilers (C, C++, Objective-C, ...)
|
||||
Name: gcc
|
||||
Version: %{gcc_version}
|
||||
Release: %{gcc_release}.1%{?dist}
|
||||
Release: %{gcc_release}%{?dist}
|
||||
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
|
||||
# GCC Runtime Exception.
|
||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
|
||||
@ -269,13 +269,9 @@ Patch12: gcc8-mcet.patch
|
||||
Patch13: gcc8-rh1574936.patch
|
||||
Patch14: gcc8-libgcc-hardened.patch
|
||||
Patch15: gcc8-rh1670535.patch
|
||||
Patch16: gcc8-pr85400.patch
|
||||
Patch17: gcc8-libgomp-20190503.patch
|
||||
Patch18: gcc8-pr86747.patch
|
||||
Patch19: gcc8-libgomp-testsuite.patch
|
||||
Patch20: gcc8-pr91601.patch
|
||||
Patch21: gcc8-pr92775.patch
|
||||
Patch22: gcc8-pr92950.patch
|
||||
|
||||
Patch30: gcc8-rh1668903-1.patch
|
||||
Patch31: gcc8-rh1668903-2.patch
|
||||
@ -850,13 +846,9 @@ to NVidia PTX capable devices if available.
|
||||
%patch14 -p0 -b .libgcc-hardened~
|
||||
%endif
|
||||
%patch15 -p0 -b .rh1670535~
|
||||
%patch16 -p0 -b .pr85400~
|
||||
%patch17 -p0 -b .libgomp-20190503~
|
||||
%patch18 -p0 -b .pr86747~
|
||||
%patch19 -p0 -b .libgomp-testsuite~
|
||||
%patch20 -p0 -b .pr91601~
|
||||
%patch21 -p0 -b .pr92775~
|
||||
%patch22 -p0 -b .pr92950~
|
||||
|
||||
%patch30 -p0 -b .rh1668903-1~
|
||||
%patch31 -p0 -b .rh1668903-2~
|
||||
@ -3173,12 +3165,6 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue May 12 2020 Marek Polacek <polacek@redhat.com> 8.3.1-5.1
|
||||
- consider negative edges in cycle detection (#1817991, PR gcov-profile/91601)
|
||||
- fix Fortran debug info for arrays with descriptors (#1655624,
|
||||
PR fortran/92775)
|
||||
- fix wrong code emitted for movv1qi on s390x (#1784758, PR target/92950)
|
||||
|
||||
* Thu Nov 21 2019 Marek Polacek <polacek@redhat.com> 8.3.1-5
|
||||
- update from Fedora gcc-8.3.1-5 (#1747157)
|
||||
- use unspec_volatile for darn (PR target/91481, #1760205, CVE-2019-15847)
|
||||
|
Loading…
Reference in New Issue
Block a user