diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2014-08-15 21:19:33 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2014-08-15 21:19:33 +0000 |
commit | 5b33845084ba98bc0bc87c7220254b3ab4999ed5 (patch) | |
tree | b8b72935d966803ea53ec8959acb59f44210a5ad /gcc | |
parent | 33cb682bcea5e450ea4c19f99dd07cda04e0ada7 (diff) | |
download | gcc-5b33845084ba98bc0bc87c7220254b3ab4999ed5.zip gcc-5b33845084ba98bc0bc87c7220254b3ab4999ed5.tar.gz gcc-5b33845084ba98bc0bc87c7220254b3ab4999ed5.tar.bz2 |
re PR fortran/62142 (internal compiler error: Segmentation fault (X = X - L*floor(X/L)))
2014-08-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/62142
* trans-expr.c (is_runtime_conformable): Add NULL pointer checks.
2014-08-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/62142
* gfortran.dg/realloc_on_assign_24.f90: New test.
From-SVN: r214043
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 | 10 |
4 files changed, 22 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index fcf591c..ec126b9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2014-08-15 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/62142 + * trans-expr.c (is_runtime_conformable): Add NULL pointer checks. + 2014-08-15 Tobias Burnus <burnus@net-b.de> * resolve.c (resolve_critical): Fix name mangling. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 544fc76..2ea09ce 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -7897,7 +7897,7 @@ is_runtime_conformable (gfc_expr *expr1, gfc_expr *expr2) for (a = expr2->value.function.actual; a != NULL; a = a->next) { e1 = a->expr; - if (e1->rank > 0 && !is_runtime_conformable (expr1, e1)) + if (e1 && e1->rank > 0 && !is_runtime_conformable (expr1, e1)) return false; } return true; @@ -7908,7 +7908,7 @@ is_runtime_conformable (gfc_expr *expr1, gfc_expr *expr2) for (a = expr2->value.function.actual; a != NULL; a = a->next) { e1 = a->expr; - if (e1->rank > 0 && !is_runtime_conformable (expr1, e1)) + if (e1 && e1->rank > 0 && !is_runtime_conformable (expr1, e1)) return false; } return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3f19ce7..5c40c0e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-08-15 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/62142 + * gfortran.dg/realloc_on_assign_24.f90: New test. + 2014-08-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/62072 diff --git a/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 b/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 new file mode 100644 index 0000000..6f88c2b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! PR 62142 - this used to segfault +! Original test case by Ondřej Čertík . +program test_segfault + implicit none + real, allocatable :: X(:) + allocate (x(1)) + x = 1. + X = floor(X) +end program |