[Bug fortran/50718] [4.6/4.7 Regression] ICE (fold_convert) with -fcheck=pointer
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Oct 13 18:46:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50718
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-10-13 18:46:33 UTC ---
Untested draft patch:
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -3344,2 +3344,4 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
{
+ tree arg;
+
if (attr.allocatable
@@ -3359,6 +3361,12 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
+ arg = parmse.expr;
+
+ /* If the argument is passed by value, we need to strip the
+ INDIRECT_REF. */
+ if (!POINTER_TYPE_P (TREE_TYPE (parmse.expr)))
+ arg = gfc_build_addr_expr (NULL_TREE, arg);
cond = fold_build2_loc (input_location, EQ_EXPR,
- boolean_type_node, parmse.expr,
- fold_convert (TREE_TYPE (parmse.expr),
+ boolean_type_node, arg
+ fold_convert (TREE_TYPE (arg),
null_pointer_node));
More information about the Gcc-bugs
mailing list