aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2009-04-10 17:14:35 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2009-04-10 10:14:35 -0700
commita862775d0ba4c7d2dd1c556913c6540d83106ffd (patch)
treec2f8ff2009db8889b44031c488c856a5b4201276
parent4d35e75cf9b4acaca40316a42de29ab3858b5c91 (diff)
downloadgcc-a862775d0ba4c7d2dd1c556913c6540d83106ffd.zip
gcc-a862775d0ba4c7d2dd1c556913c6540d83106ffd.tar.gz
gcc-a862775d0ba4c7d2dd1c556913c6540d83106ffd.tar.bz2
re PR middle-end/39701 (Revision 145846 caused many test failures)
2009-04-10 Paolo Bonzini <bonzini@gnu.org> PR middle-end/39701 * trans.c (gfc_allocate_with_status): Fix type mismatches on "pstat == 0". From-SVN: r145930
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans.c8
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4b05370..130bcf8 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-10 Paolo Bonzini <bonzini@gnu.org>
+
+ PR middle-end/39701
+ * trans.c (gfc_allocate_with_status): Fix type mismatches
+ on "pstat == 0".
+
2009-04-10 Daniel Franke <franke.daniel@gmail.com>
PR fortran/38709
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 827f54e..ddbc730 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -605,8 +605,8 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, 0));
tmp = fold_build3 (COND_EXPR, void_type_node,
- fold_build2 (NE_EXPR, boolean_type_node,
- status, build_int_cst (status_type, 0)),
+ fold_build2 (NE_EXPR, boolean_type_node, status,
+ build_int_cst (TREE_TYPE (status), 0)),
tmp, build_empty_stmt ());
gfc_add_expr_to_block (block, tmp);
}
@@ -630,7 +630,7 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
build_int_cst (pvoid_type_node, 0));
tmp = fold_build2 (EQ_EXPR, boolean_type_node, status,
- build_int_cst (status_type, 0));
+ build_int_cst (TREE_TYPE (status), 0));
error = fold_build3 (COND_EXPR, void_type_node, tmp, error,
gfc_finish_block (&set_status_block));
}
@@ -653,7 +653,7 @@ gfc_allocate_with_status (stmtblock_t * block, tree size, tree status)
tree tmp2;
cond = fold_build2 (EQ_EXPR, boolean_type_node, status,
- build_int_cst (status_type, 0));
+ build_int_cst (TREE_TYPE (status), 0));
tmp2 = fold_build2 (MODIFY_EXPR, status_type,
fold_build1 (INDIRECT_REF, status_type, status),
build_int_cst (status_type, LIBERROR_ALLOCATION));