summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-16 09:40:16 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-16 09:40:16 +0000
commit0eed5ee7b9085171d92c0fbda29d9f07bd86804b (patch)
treefc6d702400be0fd59d870552e0212a004b075ee4
parent66c2c707250fa3f9237fb1eab14c383f087e5ec5 (diff)
downloadgcc-0eed5ee7b9085171d92c0fbda29d9f07bd86804b.tar.gz
2006-01-16 Richard Guenther <rguenther@suse.de>
* trans-expr.c (gfc_conv_function_call): Use fold_build2. * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst. * trans.c (gfc_trans_runtime_check): Don't fold the condition again. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109745 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-expr.c3
-rw-r--r--gcc/fortran/trans-stmt.c3
-rw-r--r--gcc/fortran/trans.c2
4 files changed, 11 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 29a4c77ffb0..17baa962b1f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2006-01-16 Richard Guenther <rguenther@suse.de>
+
+ * trans-expr.c (gfc_conv_function_call): Use fold_build2.
+ * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst.
+ * trans.c (gfc_trans_runtime_check): Don't fold the condition
+ again.
+
2006-01-13 Steven G. Kargl <kargls@comcast.net>
PR fortran/25756
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index dc2e8224843..880994abcad 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -1830,7 +1830,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
/* Check the data pointer hasn't been modified. This would
happen in a function returning a pointer. */
tmp = gfc_conv_descriptor_data_get (info->descriptor);
- tmp = build2 (NE_EXPR, boolean_type_node, tmp, info->data);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node,
+ tmp, info->data);
gfc_trans_runtime_check (tmp, gfc_strconst_fault, &se->pre);
}
se->expr = info->descriptor;
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index df93db618b2..44d5819861a 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -162,7 +162,8 @@ gfc_trans_goto (gfc_code * code)
assign_error =
gfc_build_cstring_const ("Assigned label is not a target label");
tmp = GFC_DECL_STRING_LEN (se.expr);
- tmp = build2 (NE_EXPR, boolean_type_node, tmp, integer_minus_one_node);
+ tmp = fold_build2 (NE_EXPR, boolean_type_node, tmp,
+ build_int_cst (TREE_TYPE (tmp), -1));
gfc_trans_runtime_check (tmp, assign_error, &se.pre);
assigned_goto = GFC_DECL_ASSIGN_ADDR (se.expr);
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index f1c0e02a300..08aeef78d0c 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -308,8 +308,6 @@ gfc_trans_runtime_check (tree cond, tree msg, stmtblock_t * pblock)
tree tmp;
tree args;
- cond = fold (cond);
-
if (integer_zerop (cond))
return;