This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, PR 57791] Waste work in gfc_check_pointer_assign()


Hi,

The problem appears in revision 201034 in version 4.9. I attached a
one-line patch that fixes it.  I also reported this problem
at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57791

Bootstrap and regression-tested on x86_64-linux.

In method "gfc_check_pointer_assign()" in expr.c, the loop on line
3763 should break immediately after "warn" is set to "true".

2013-07-23  Chang  <pchang9@cs.wisc.edu>

        * expr.c (gfc_check_pointer_assign): Exit loop after setting warn.


Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c	(revision 201034)
+++ gcc/fortran/expr.c	(working copy)
@@ -3764,7 +3764,10 @@
 	    ns && ns->proc_name && ns->proc_name->attr.flavor != FL_PROCEDURE;
 	    ns = ns->parent)
 	if (ns->parent == lvalue->symtree->n.sym->ns)
-	  warn = true;
+	  {
+	    warn = true;
+	    break;
+	  }

       if (warn)
 	gfc_warning ("Pointer at %L in pointer assignment might outlive the "


-Chang

Attachment: pr57791_patch.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]