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]

Re: [Patch] Not very subtle fix for pr61510


On Mon, Jun 23, 2014 at 06:43:20PM +0100, Jan Hubicka wrote:
> > On Mon, 23 Jun 2014, James Greenhalgh wrote:
> >
> > >
> > > Hi,
> > >
> > > pr61510 is a case where cgraphunit.c::analyze_functions can end up
> > > dereferencing a NULL pointer. This is, to me, the obvious way to avoid
> > > dereferencing NULL.
> > >
> > > However, I'm not very confident that this isn't just masking some
> > > horrible and subtle bug, so I'd like some review feedback on the patch.
> > >
> > > Tested on aarch64-none-elf, where I was seeing the issue.
> > >
> > > OK?
> >
> > Obvious in some sense to me, too, but I wonder why we don't have a cgraph
> > node
> > for it and what happens if it is created later (and then doesn't
> > have the flag set)?
>
> In that case we won't get the used_as_abstract_origin flag. that will make us
> to throw away the debug info if we remove it. I guess we simply want
> graph_get_create_node here.  I can prepare patch tonight (after teaching)

I've spun a patch with what I think you were suggesting here.

Tested on aarch64-none-elf with no regressions to confirm it fixes the
bug and bootstrapped on x86 and aarch64 with no issues.

OK?

Thanks,
James

---
2014-07-31  James Greenhalgh  <james.greenhalgh@arm.com>

	PR regression/61510
	* cgraphunit.c (analyze_functions): Use get_create rather than get
	for decls which are clones of abstract functions.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 3080b9a..02c9fa1 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1047,7 +1047,7 @@ analyze_functions (void)
 	      if (DECL_ABSTRACT_ORIGIN (decl))
 		{
 		  struct cgraph_node *origin_node
-	    	  = cgraph_node::get (DECL_ABSTRACT_ORIGIN (decl));
+		    = cgraph_node::get_create (DECL_ABSTRACT_ORIGIN (decl));
 		  origin_node->used_as_abstract_origin = true;
 		}
 	    }

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