summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2015-09-11 01:20:36 +0000
committerdoko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>2015-09-11 01:20:36 +0000
commita804e32be177f2dbe6416db78e5af92e1af825ce (patch)
tree35603f5207a79ee4228df33f0d8e33d23363b1ce
parentb5da5ccf5f3aa4d69108ea7253b42ee294a82b6b (diff)
downloadgcc-5-a804e32be177f2dbe6416db78e5af92e1af825ce.tar.gz
* Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch.
git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-5@8223 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
-rw-r--r--debian/changelog4
-rw-r--r--debian/patches/svn-updates.diff725
-rw-r--r--debian/rules.defs2
3 files changed, 714 insertions, 17 deletions
diff --git a/debian/changelog b/debian/changelog
index b8bf444..8b7b916 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,6 @@
gcc-5 (5.2.1-17) UNRELEASED; urgency=medium
- * Update to SVN 20150909 (r227597, 5.2.1) from the gcc-5-branch.
+ * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch.
- Fix PR c++/67369, ICE on valid code. LP: #1489173.
[ Matthias Klose ]
@@ -21,7 +21,7 @@ gcc-5 (5.2.1-17) UNRELEASED; urgency=medium
[ YunQiang Su ]
* Fix running the acats tests. Closes: #798531.
- -- Matthias Klose <doko@debian.org> Wed, 09 Sep 2015 19:38:13 +0200
+ -- Matthias Klose <doko@debian.org> Fri, 11 Sep 2015 03:17:20 +0200
gcc-5 (5.2.1-16) unstable; urgency=medium
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 80f0c37..0378934 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 5 branch upto 20150909 (r227597).
+# DP: updates from the 5 branch upto 20150911 (r227671).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Wed Sep 9 19:35:03 CEST 2015
-Wed Sep 9 17:35:03 UTC 2015 (revision 227597)
+Fri Sep 11 03:15:28 CEST 2015
+Fri Sep 11 01:15:28 UTC 2015 (revision 227671)
EOF
}
@@ -11894,6 +11894,43 @@ Index: libstdc++-v3/aclocal.m4
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
+Index: boehm-gc/ChangeLog
+===================================================================
+--- a/src/boehm-gc/ChangeLog (.../tags/gcc_5_2_0_release)
++++ b/src/boehm-gc/ChangeLog (.../branches/gcc-5-branch)
+@@ -1,3 +1,11 @@
++2015-09-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ Backport from mainline
++ 2015-08-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ * os_dep.c [GC_SOLARIS_THREADS] (GC_dirty_init): Use
++ /proc/<pid>/pagedata instead of PIOCOPENPD.
++
+ 2015-07-16 Release Manager
+
+ * GCC 5.2.0 released.
+Index: boehm-gc/os_dep.c
+===================================================================
+--- a/src/boehm-gc/os_dep.c (.../tags/gcc_5_2_0_release)
++++ b/src/boehm-gc/os_dep.c (.../branches/gcc-5-branch)
+@@ -3184,13 +3184,11 @@
+ (GC_words_allocd + GC_words_allocd_before_gc));
+ # endif
+ }
+- sprintf(buf, "/proc/%d", getpid());
+- fd = open(buf, O_RDONLY);
+- if (fd < 0) {
++ sprintf(buf, "/proc/%d/pagedata", getpid());
++ GC_proc_fd = open(buf, O_RDONLY);
++ if (GC_proc_fd < 0) {
+ ABORT("/proc open failed");
+ }
+- GC_proc_fd = syscall(SYS_ioctl, fd, PIOCOPENPD, 0);
+- close(fd);
+ syscall(SYS_fcntl, GC_proc_fd, F_SETFD, FD_CLOEXEC);
+ if (GC_proc_fd < 0) {
+ ABORT("/proc ioctl failed");
Index: libgcc/ChangeLog
===================================================================
--- a/src/libgcc/ChangeLog (.../tags/gcc_5_2_0_release)
@@ -12285,7 +12322,13 @@ Index: gcc/c/ChangeLog
===================================================================
--- a/src/gcc/c/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/c/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,22 @@
+@@ -1,3 +1,28 @@
++2015-09-10 Jakub Jelinek <jakub@redhat.com>
++
++ PR c/67502
++ * c-parser.c (c_parser_omp_for_loop): Emit DECL_EXPR stmts
++ into OMP_FOR_PRE_BODY rather than before the loop.
++
+2015-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/67501
@@ -12479,6 +12522,49 @@ Index: gcc/c/c-parser.c
}
if (structured_block)
{
+@@ -12802,7 +12826,8 @@
+ tree clauses, tree *cclauses)
+ {
+ tree decl, cond, incr, save_break, save_cont, body, init, stmt, cl;
+- tree declv, condv, incrv, initv, ret = NULL;
++ tree declv, condv, incrv, initv, ret = NULL_TREE;
++ tree pre_body = NULL_TREE, this_pre_body;
+ bool fail = false, open_brace_parsed = false;
+ int i, collapse = 1, nbraces = 0;
+ location_t for_loc;
+@@ -12846,8 +12871,23 @@
+ {
+ if (i > 0)
+ vec_safe_push (for_block, c_begin_compound_stmt (true));
++ this_pre_body = push_stmt_list ();
+ c_parser_declaration_or_fndef (parser, true, true, true, true, true,
+ NULL, vNULL);
++ if (this_pre_body)
++ {
++ this_pre_body = pop_stmt_list (this_pre_body);
++ if (pre_body)
++ {
++ tree t = pre_body;
++ pre_body = push_stmt_list ();
++ add_stmt (t);
++ add_stmt (this_pre_body);
++ pre_body = pop_stmt_list (pre_body);
++ }
++ else
++ pre_body = this_pre_body;
++ }
+ decl = check_for_loop_decls (for_loc, flag_isoc99);
+ if (decl == NULL)
+ goto error_init;
+@@ -13042,7 +13082,7 @@
+ if (!fail)
+ {
+ stmt = c_finish_omp_for (loc, code, declv, initv, condv,
+- incrv, body, NULL);
++ incrv, body, pre_body);
+ if (stmt)
+ {
+ if (cclauses != NULL
Index: gcc/c/c-decl.c
===================================================================
--- a/src/gcc/c/c-decl.c (.../tags/gcc_5_2_0_release)
@@ -12607,7 +12693,7 @@ Index: gcc/DATESTAMP
+++ b/src/gcc/DATESTAMP (.../branches/gcc-5-branch)
@@ -1 +1 @@
-20150716
-+20150909
++20150911
Index: gcc/postreload.c
===================================================================
--- a/src/gcc/postreload.c (.../tags/gcc_5_2_0_release)
@@ -13072,7 +13158,45 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,636 @@
+@@ -1,3 +1,674 @@
++2015-09-10 Oleg Endo <olegendo@gcc.gnu.org>
++
++ Backport from mainline
++ 2015-09-10 Oleg Endo <olegendo@gcc.gnu.org>
++
++ PR target/67506
++ * config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Add
++ missing simplify_gen_subreg.
++
++2015-09-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ Backport from mainline
++ 2015-08-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit on
++ Solaris 12+.
++
++2015-09-10 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/67523
++ * gimplify.c (gimplify_omp_for): If inner stmt is not found
++ for combined loop, assert seen_error () and return GS_ERROR.
++
++ PR middle-end/67521
++ * gimplify.c (gimplify_omp_for): Don't call omp_add_variable
++ if decl is already in outer->variables.
++
++ PR middle-end/67517
++ * gimplify.c (gimplify_scan_omp_clauses): Instead of
++ asserting that decl is not specified in octx->variables,
++ break out of the loop if it is.
++
++ PR c++/67514
++ * gimplify.c (gimplify_omp_for): For loop SIMD construct, if
++ iterator is not explicitly determined, but is defined inside
++ of the combined workshare region, handle it like if it has
++ DECL_EXPR in OMP_FOR_PRE_BODY.
++
+2015-09-09 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline:
@@ -13709,7 +13833,7 @@ Index: gcc/ChangeLog
2015-07-16 Release Manager
* GCC 5.2.0 released.
-@@ -119,8 +752,8 @@
+@@ -119,8 +790,8 @@
2015-07-09 Iain Sandoe <iain@codesourcery.com>
PR target/66523
@@ -14881,6 +15005,20 @@ Index: gcc/testsuite/gcc.target/s390/zvector/vec-load_bndry-1.c
+ + vec_load_bndry (p + 96, 4096)[0];
+ /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),6" 7 } } */
+}
+Index: gcc/testsuite/gfortran.dg/pr67526.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr67526.f90 (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr67526.f90 (.../branches/gcc-5-branch)
+@@ -0,0 +1,9 @@
++! { dg-do compile }
++! Original code from gerhard dot steinmetz dot fortran at t-online dot de
++! PR fortran/67526
++program p
++ character :: c1 = 'abc'(: ! { dg-error "error in SUBSTRING" }
++ character :: c2 = 'abc'(3: ! { dg-error "error in SUBSTRING" }
++ character :: c3 = 'abc'(:1 ! { dg-error "error in SUBSTRING" }
++ character :: c4 = 'abc'(2:2 ! { dg-error "error in SUBSTRING" }
++end
Index: gcc/testsuite/gfortran.dg/pr66864.f90
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/pr66864.f90 (.../tags/gcc_5_2_0_release)
@@ -15264,6 +15402,64 @@ Index: gcc/testsuite/gfortran.dg/structure_constructor_13.f03
+ end select
+ end subroutine
+end program
+Index: gcc/testsuite/gcc.c-torture/compile/pr67506.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr67506.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr67506.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,53 @@
++extern struct _IO_FILE *stderr;
++typedef long integer;
++typedef unsigned char byte;
++short nl;
++byte * tfmfilearray;
++integer charbase, ligkernbase;
++unsigned char charsonline;
++short c;
++unsigned short r;
++struct {
++ short cc;
++ integer rr;
++} labeltable[259];
++short sortptr;
++unsigned char activity[(32510) + 1];
++integer ai, acti;
++extern void _IO_putc (char, struct _IO_FILE *);
++
++void
++mainbody (void)
++{
++ register integer for_end;
++ if (c <= for_end)
++ do {
++ if (((tfmfilearray + 1001)[4 * (charbase + c) + 2] % 4) == 1)
++ {
++ if ( r < nl )
++ ;
++ else
++ {
++ while (labeltable[sortptr ].rr > r)
++ labeltable[sortptr + 1 ]= labeltable[sortptr];
++ }
++ }
++ } while (c++ < for_end);
++
++ if (ai <= for_end)
++ do {
++ if (activity[ai]== 2)
++ {
++ r = (tfmfilearray + 1001)[4 * (ligkernbase + (ai))];
++ if (r < 128)
++ {
++ r = r + ai + 1 ;
++ if (r >= nl)
++ {
++ if (charsonline > 0)
++ _IO_putc ('\n', stderr);
++ }
++ }
++ }
++ } while (ai++ < for_end);
++}
Index: gcc/testsuite/gcc.dg/gomp/pr67500.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/gomp/pr67500.c (.../tags/gcc_5_2_0_release)
@@ -15961,7 +16157,41 @@ Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,442 @@
+@@ -1,3 +1,476 @@
++2015-09-10 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/67526
++ * gfortran.dg/pr67526.f90: New test.
++
++2015-09-10 Oleg Endo <olegendo@gcc.gnu.org>
++
++ Backport from mainline
++ PR target/67506
++ * gcc.c-torture/compile/pr67506.c: New test.
++
++2015-09-10 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/67523
++ * g++.dg/gomp/pr67523.C: New test.
++
++ PR c++/67522
++ * g++.dg/gomp/pr67522.C: New test.
++
++ PR middle-end/67521
++ * c-c++-common/gomp/pr67521.c: New test.
++
++ PR middle-end/67517
++ * c-c++-common/gomp/pr67517.c: New test.
++
++ PR c++/67514
++ * g++.dg/gomp/pr67514.C: New test.
++
++ PR c++/67511
++ * g++.dg/gomp/pr67511.C: New test.
++
++ PR c/67502
++ * c-c++-common/gomp/pr67502.c: New test.
++
+2015-09-09 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline:
@@ -16404,7 +16634,7 @@ Index: gcc/testsuite/ChangeLog
2015-07-16 Release Manager
* GCC 5.2.0 released.
-@@ -792,7 +1231,7 @@
+@@ -792,7 +1265,7 @@
Add missing ChangeLog entry for r222341.
Backport from trunk r222273
@@ -16960,6 +17190,131 @@ Index: gcc/testsuite/g++.dg/gomp/pr67504.C
+ for (int i = 0; i < 10; i++)
+ ;
+}
+Index: gcc/testsuite/g++.dg/gomp/pr67522.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/gomp/pr67522.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/gomp/pr67522.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,26 @@
++// PR c++/67522
++// { dg-do compile }
++// { dg-options "-fopenmp" }
++
++struct S;
++
++template <int N>
++void
++foo (void)
++{
++ #pragma omp simd linear (S) // { dg-error "is not a variable in clause" }
++ for (int i = 0; i < 16; i++)
++ ;
++
++ #pragma omp target map (S[0:10]) // { dg-error "is not a variable in" }
++ ;
++
++ #pragma omp task depend (inout: S[0:10]) // { dg-error "is not a variable in" }
++ ;
++}
++
++void
++bar ()
++{
++ foo <0> ();
++}
+Index: gcc/testsuite/g++.dg/gomp/pr67514.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/gomp/pr67514.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/gomp/pr67514.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,30 @@
++// PR c++/67514
++// { dg-do compile }
++// { dg-options "-fopenmp" }
++
++template <class T>
++void
++foo (T x, T y)
++{
++ #pragma omp parallel
++ #pragma omp for simd
++ for (T i = x; i < y; ++i)
++ ;
++ #pragma omp parallel
++ #pragma omp for simd collapse (2)
++ for (T i = x; i < y; ++i)
++ for (T j = x; j < y; j++)
++ ;
++}
++
++void
++bar (int *x, int *y)
++{
++ foo (x, y);
++}
++
++void
++baz (int x, int y)
++{
++ foo (x, y);
++}
+Index: gcc/testsuite/g++.dg/gomp/pr67523.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/gomp/pr67523.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/gomp/pr67523.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,29 @@
++// PR c++/67523
++// { dg-do compile }
++// { dg-options "-fopenmp" }
++
++struct S { int s; };
++
++template <typename T>
++void foo (T &x, T &y)
++{
++#pragma omp for simd
++ for (T i = x; i < y; i++) // { dg-error "used with class iteration variable" }
++ ;
++#pragma omp parallel for simd
++ for (T i = x; i < y; i++) // { dg-error "used with class iteration variable" }
++ ;
++#pragma omp target teams distribute parallel for simd
++ for (T i = x; i < y; i++) // { dg-error "used with class iteration variable" }
++ ;
++#pragma omp target teams distribute simd
++ for (T i = x; i < y; i++) // { dg-error "used with class iteration variable" }
++ ;
++}
++
++void
++bar ()
++{
++ S x, y;
++ foo <S> (x, y);
++}
+Index: gcc/testsuite/g++.dg/gomp/pr67511.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/gomp/pr67511.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/gomp/pr67511.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,20 @@
++// PR c++/67511
++// { dg-do compile }
++// { dg-options "-fopenmp" }
++
++struct I
++{
++ I ();
++ I (const I &);
++ I &operator++ ();
++ bool operator< (const I &) const;
++};
++__PTRDIFF_TYPE__ operator- (const I &, const I &);
++
++void
++foo (I &x, I &y)
++{
++#pragma omp for
++ for (I i = x; i < y; ++i) // { dg-error "no match for" }
++ ;
++}
Index: gcc/testsuite/g++.dg/init/pr66857.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/init/pr66857.C (.../tags/gcc_5_2_0_release)
@@ -17128,6 +17483,70 @@ Index: gcc/testsuite/c-c++-common/gomp/pr67501.c
+ for (i = 0; i < 16; ++i) /* { dg-error "is not valid for" "" { target *-*-* } 9 } */
+ ;
+}
+Index: gcc/testsuite/c-c++-common/gomp/pr67502.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr67502.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr67502.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,16 @@
++/* PR c/67502 */
++/* { dg-do compile } */
++/* { dg-options "-fopenmp" } */
++/* { dg-additional-options "-std=c99" { target c } } */
++
++void bar (int, int);
++
++void
++foo (void)
++{
++#pragma omp parallel
++#pragma omp for simd collapse(2)
++ for (int i = 0; i < 16; ++i)
++ for (int j = 0; j < 16; ++j)
++ bar (i, j);
++}
+Index: gcc/testsuite/c-c++-common/gomp/pr67521.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr67521.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr67521.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,20 @@
++/* PR middle-end/67521 */
++/* { dg-do compile } */
++/* { dg-options "-fopenmp" } */
++
++void
++foo (int x)
++{
++ int i = 0;
++ #pragma omp parallel for simd
++ for (i = (i & x); i < 10; i = i + 2)
++ ;
++ i = 0;
++ #pragma omp parallel for simd
++ for (i = 0; i < (i & x) + 10; i = i + 2)
++ ;
++ i = 0;
++ #pragma omp parallel for simd
++ for (i = 0; i < 10; i = i + ((i & x) + 2))
++ ;
++}
+Index: gcc/testsuite/c-c++-common/gomp/pr67517.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr67517.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr67517.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,13 @@
++/* PR middle-end/67517 */
++/* { dg-do compile } */
++/* { dg-options "-fopenmp" } */
++
++int
++foo (int x, int y, int z)
++{
++ int i;
++ #pragma omp parallel for simd linear (y : x & 15) linear (x : 16) linear (z : x & 15)
++ for (i = 0; i < 256; ++i)
++ x += 16, y += x & 15, z += x & 15;
++ return x + y + z;
++}
Index: gcc/cp/class.c
===================================================================
--- a/src/gcc/cp/class.c (.../tags/gcc_5_2_0_release)
@@ -17262,7 +17681,20 @@ Index: gcc/cp/ChangeLog
===================================================================
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,106 @@
+@@ -1,3 +1,119 @@
++2015-09-10 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/67522
++ * semantics.c (handle_omp_array_sections_1): Only run
++ type_dependent_expression_p on VAR_DECL/PARM_DECLs.
++ (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>: Likewise.
++ Don't adjust OMP_CLAUSE_LINEAR_STEP if OMP_CLAUSE_DECL
++ is not a VAR_DECL/PARM_DECL.
++
++ PR c++/67511
++ * semantics.c (handle_omp_for_class_iterator): Don't wrap
++ error_mark_node into a NOP_EXPR to void_type_node.
++
+2015-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/67504
@@ -17515,6 +17947,55 @@ Index: gcc/cp/semantics.c
}
else if (scope)
{
+@@ -4294,8 +4295,6 @@
+ {
+ if (error_operand_p (t))
+ return error_mark_node;
+- if (type_dependent_expression_p (t))
+- return NULL_TREE;
+ if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
+ {
+ if (processing_template_decl)
+@@ -4318,6 +4317,8 @@
+ omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
+ return error_mark_node;
+ }
++ if (type_dependent_expression_p (t))
++ return NULL_TREE;
+ t = convert_from_reference (t);
+ return t;
+ }
+@@ -5332,7 +5333,8 @@
+ goto check_dup_generic;
+ case OMP_CLAUSE_LINEAR:
+ t = OMP_CLAUSE_DECL (c);
+- if (!type_dependent_expression_p (t)
++ if ((VAR_P (t) || TREE_CODE (t) == PARM_DECL)
++ && !type_dependent_expression_p (t)
+ && !INTEGRAL_TYPE_P (TREE_TYPE (t))
+ && TREE_CODE (TREE_TYPE (t)) != POINTER_TYPE)
+ {
+@@ -5359,7 +5361,9 @@
+ else
+ {
+ t = mark_rvalue_use (t);
+- if (!processing_template_decl)
++ if (!processing_template_decl
++ && (VAR_P (OMP_CLAUSE_DECL (c))
++ || TREE_CODE (OMP_CLAUSE_DECL (c)) == PARM_DECL))
+ {
+ if (TREE_CODE (OMP_CLAUSE_DECL (c)) == PARM_DECL)
+ t = maybe_constant_value (t);
+@@ -6452,7 +6456,8 @@
+ iter_init = build_x_modify_expr (elocus,
+ iter, PLUS_EXPR, iter_init,
+ tf_warning_or_error);
+- iter_init = build1 (NOP_EXPR, void_type_node, iter_init);
++ if (iter_init != error_mark_node)
++ iter_init = build1 (NOP_EXPR, void_type_node, iter_init);
+ finish_expr_stmt (iter_init);
+ finish_expr_stmt (build_x_modify_expr (elocus,
+ last, NOP_EXPR, decl,
Index: gcc/cp/decl2.c
===================================================================
--- a/src/gcc/cp/decl2.c (.../tags/gcc_5_2_0_release)
@@ -17823,7 +18304,12 @@ Index: gcc/fortran/ChangeLog
===================================================================
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,85 @@
+@@ -1,3 +1,90 @@
++2015-09-10 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/67526
++ * expr.c (gfc_check_init_expr): Do not dereference a NULL pointer.
++
+2015-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR fortran/67429
@@ -17909,7 +18395,7 @@ Index: gcc/fortran/ChangeLog
2015-07-16 Release Manager
* GCC 5.2.0 released.
-@@ -94,7 +176,7 @@
+@@ -94,7 +181,7 @@
2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/66052
@@ -17918,7 +18404,7 @@ Index: gcc/fortran/ChangeLog
2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org>
-@@ -106,7 +188,7 @@
+@@ -106,7 +193,7 @@
PR fortran/66044
* decl.c(gfc_match_entry): Change a gfc_internal_error() into
@@ -17927,6 +18413,36 @@ Index: gcc/fortran/ChangeLog
2015-05-19 Steven G. Kargl <kargl@gcc.gnu.org>
+Index: gcc/fortran/expr.c
+===================================================================
+--- a/src/gcc/fortran/expr.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/fortran/expr.c (.../branches/gcc-5-branch)
+@@ -2599,14 +2599,18 @@
+ break;
+
+ case EXPR_SUBSTRING:
+- t = gfc_check_init_expr (e->ref->u.ss.start);
+- if (!t)
+- break;
++ if (e->ref)
++ {
++ t = gfc_check_init_expr (e->ref->u.ss.start);
++ if (!t)
++ break;
+
+- t = gfc_check_init_expr (e->ref->u.ss.end);
+- if (t)
+- t = gfc_simplify_expr (e, 0);
+-
++ t = gfc_check_init_expr (e->ref->u.ss.end);
++ if (t)
++ t = gfc_simplify_expr (e, 0);
++ }
++ else
++ t = false;
+ break;
+
+ case EXPR_STRUCTURE:
Index: gcc/fortran/io.c
===================================================================
--- a/src/gcc/fortran/io.c (.../tags/gcc_5_2_0_release)
@@ -18829,6 +19345,160 @@ Index: gcc/ipa-inline-analysis.c
struct inline_edge_summary *es = inline_edge_summary (e);
if (!es->predicate
|| evaluate_predicate (es->predicate, possible_truths))
+Index: gcc/gimplify.c
+===================================================================
+--- a/src/gcc/gimplify.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/gimplify.c (.../branches/gcc-5-branch)
+@@ -6195,9 +6195,12 @@
+ }
+ else
+ break;
+- gcc_checking_assert (splay_tree_lookup (octx->variables,
+- (splay_tree_key)
+- decl) == NULL);
++ if (splay_tree_lookup (octx->variables,
++ (splay_tree_key) decl) != NULL)
++ {
++ octx = NULL;
++ break;
++ }
+ flags = GOVD_SEEN;
+ if (!OMP_CLAUSE_LINEAR_NO_COPYIN (c))
+ flags |= GOVD_FIRSTPRIVATE;
+@@ -6979,7 +6982,7 @@
+ static enum gimplify_status
+ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
+ {
+- tree for_stmt, orig_for_stmt, decl, var, t;
++ tree for_stmt, orig_for_stmt, inner_for_stmt = NULL_TREE, decl, var, t;
+ enum gimplify_status ret = GS_ALL_DONE;
+ enum gimplify_status tret;
+ gomp_for *gfor;
+@@ -7022,6 +7025,19 @@
+ }
+ }
+
++ if (OMP_FOR_INIT (for_stmt) == NULL_TREE)
++ {
++ gcc_assert (TREE_CODE (for_stmt) != OACC_LOOP);
++ inner_for_stmt = walk_tree (&OMP_FOR_BODY (for_stmt),
++ find_combined_omp_for, NULL, NULL);
++ if (inner_for_stmt == NULL_TREE)
++ {
++ gcc_assert (seen_error ());
++ *expr_p = NULL_TREE;
++ return GS_ERROR;
++ }
++ }
++
+ gimplify_scan_omp_clauses (&OMP_FOR_CLAUSES (for_stmt), pre_p,
+ simd ? ORT_SIMD : ORT_WORKSHARE);
+ if (TREE_CODE (for_stmt) == OMP_DISTRIBUTE)
+@@ -7057,10 +7073,7 @@
+
+ if (OMP_FOR_INIT (for_stmt) == NULL_TREE)
+ {
+- gcc_assert (TREE_CODE (for_stmt) != OACC_LOOP);
+- for_stmt = walk_tree (&OMP_FOR_BODY (for_stmt), find_combined_omp_for,
+- NULL, NULL);
+- gcc_assert (for_stmt != NULL_TREE);
++ for_stmt = inner_for_stmt;
+ gimplify_omp_ctxp->combined_loop = true;
+ }
+
+@@ -7104,13 +7117,27 @@
+ OMP_CLAUSE_LINEAR_NO_COPYOUT (c) = 1;
+ flags |= GOVD_LINEAR_LASTPRIVATE_NO_OUTER;
+ }
++ struct gimplify_omp_ctx *outer
++ = gimplify_omp_ctxp->outer_context;
++ if (outer && !OMP_CLAUSE_LINEAR_NO_COPYOUT (c))
++ {
++ if (outer->region_type == ORT_WORKSHARE
++ && outer->combined_loop)
++ {
++ n = splay_tree_lookup (outer->variables,
++ (splay_tree_key)decl);
++ if (n != NULL && (n->value & GOVD_LOCAL) != 0)
++ {
++ OMP_CLAUSE_LINEAR_NO_COPYOUT (c) = 1;
++ flags |= GOVD_LINEAR_LASTPRIVATE_NO_OUTER;
++ }
++ }
++ }
++
+ OMP_CLAUSE_DECL (c) = decl;
+ OMP_CLAUSE_CHAIN (c) = OMP_FOR_CLAUSES (for_stmt);
+ OMP_FOR_CLAUSES (for_stmt) = c;
+-
+ omp_add_variable (gimplify_omp_ctxp, decl, flags);
+- struct gimplify_omp_ctx *outer
+- = gimplify_omp_ctxp->outer_context;
+ if (outer && !OMP_CLAUSE_LINEAR_NO_COPYOUT (c))
+ {
+ if (outer->region_type == ORT_WORKSHARE
+@@ -7127,10 +7154,16 @@
+ outer = NULL;
+ if (outer)
+ {
+- omp_add_variable (outer, decl,
+- GOVD_LASTPRIVATE | GOVD_SEEN);
+- if (outer->outer_context)
+- omp_notice_variable (outer->outer_context, decl, true);
++ n = splay_tree_lookup (outer->variables,
++ (splay_tree_key)decl);
++ if (n == NULL || (n->value & GOVD_DATA_SHARE_CLASS) == 0)
++ {
++ omp_add_variable (outer, decl,
++ GOVD_LASTPRIVATE | GOVD_SEEN);
++ if (outer->outer_context)
++ omp_notice_variable (outer->outer_context, decl,
++ true);
++ }
+ }
+ }
+ }
+@@ -7147,9 +7180,16 @@
+ if (outer->region_type == ORT_WORKSHARE
+ && outer->combined_loop)
+ {
+- if (outer->outer_context
+- && (outer->outer_context->region_type
+- == ORT_COMBINED_PARALLEL))
++ n = splay_tree_lookup (outer->variables,
++ (splay_tree_key)decl);
++ if (n != NULL && (n->value & GOVD_LOCAL) != 0)
++ {
++ lastprivate = false;
++ outer = NULL;
++ }
++ else if (outer->outer_context
++ && (outer->outer_context->region_type
++ == ORT_COMBINED_PARALLEL))
+ outer = outer->outer_context;
+ else if (omp_check_private (outer, decl, false))
+ outer = NULL;
+@@ -7158,10 +7198,16 @@
+ outer = NULL;
+ if (outer)
+ {
+- omp_add_variable (outer, decl,
+- GOVD_LASTPRIVATE | GOVD_SEEN);
+- if (outer->outer_context)
+- omp_notice_variable (outer->outer_context, decl, true);
++ n = splay_tree_lookup (outer->variables,
++ (splay_tree_key)decl);
++ if (n == NULL || (n->value & GOVD_DATA_SHARE_CLASS) == 0)
++ {
++ omp_add_variable (outer, decl,
++ GOVD_LASTPRIVATE | GOVD_SEEN);
++ if (outer->outer_context)
++ omp_notice_variable (outer->outer_context, decl,
++ true);
++ }
+ }
+ }
+
Index: gcc/coretypes.h
===================================================================
--- a/src/gcc/coretypes.h (.../tags/gcc_5_2_0_release)
@@ -534755,6 +535425,23 @@ Index: gcc/combine.c
&& (c1 & ~GET_MODE_MASK (tmode)) == 0
&& c1 != mask
&& c1 != GET_MODE_MASK (tmode))
+Index: gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config.gcc (.../branches/gcc-5-branch)
+@@ -819,6 +819,12 @@
+ sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
+ sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
+ sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
++ case ${target} in
++ *-*-solaris2.1[2-9]*)
++ # __cxa_atexit was introduced in Solaris 12.
++ default_use_cxa_atexit=yes
++ ;;
++ esac
+ use_gcc_stdint=wrap
+ if test x$gnu_ld = xyes; then
+ tm_file="usegld.h ${tm_file}"
Index: gcc/tree-ssa-structalias.c
===================================================================
--- a/src/gcc/tree-ssa-structalias.c (.../tags/gcc_5_2_0_release)
@@ -535746,7 +536433,17 @@ Index: gcc/config/sh/sh.c
&& !sh_unspec_insn_p (t_after_negc.insn)
&& !volatile_insn_p (PATTERN (t_after_negc.insn))
&& !side_effects_p (PATTERN (t_after_negc.insn))
-@@ -14162,6 +14163,12 @@
+@@ -13992,6 +13993,9 @@
+ else
+ {
+ rtx extension_dst = XEXP (set_rtx, 0);
++ if (GET_MODE (extension_dst) != SImode)
++ extension_dst = simplify_gen_subreg (SImode, extension_dst,
++ GET_MODE (extension_dst), 0);
+ if (modified_between_p (extension_dst, insn, use_at_insn))
+ {
+ if (dump_file)
+@@ -14162,6 +14166,12 @@
if (!can_create_pseudo_p ())
return false;
diff --git a/debian/rules.defs b/debian/rules.defs
index 9ffdc63..9c6861b 100644
--- a/debian/rules.defs
+++ b/debian/rules.defs
@@ -1416,7 +1416,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH), hppa mips))
with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect
endif
endif
-with_check := disabled for this upload
+#with_check := disabled for this upload
# not a dependency on all archs, but if available, use it for the testsuite
ifneq (,$(wildcard /usr/bin/localedef))