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: Empty vectors in RTL


Ian Lance Taylor <ian@airs.com> writes:

> This patch fixes the immediate crash, but is this the right thing to
> do?  Or should I always put something inside the vector, even if there
> is nothing meaningful to put in there?

I found other cases where an empty vector produces a NULL pointer and
leads to a later crash.  So I don't think it is safe to have an empty
vector in RTL for the 'E' format.

I propose this patch.  OK if it passes testsuite and bootstrap?  Or
should this wait for 4.1?

Ian


2005-02-10  Ian Lance Taylor  <ian@c2micro.com>

	* read-rtl.c (read_rtx_1): Give fatal error if we see a vector
	with no elements.


Index: read-rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/read-rtl.c,v
retrieving revision 1.32
diff -p -u -r1.32 read-rtl.c
--- read-rtl.c	29 Sep 2004 11:23:11 -0000	1.32
+++ read-rtl.c	11 Feb 2005 03:15:23 -0000
@@ -1253,6 +1253,9 @@ read_rtx_1 (FILE *infile)
 	      memcpy (&return_vec->elem[0], obstack_finish (&vector_stack),
 		      list_counter * sizeof (rtx));
 	    }
+	  else if (format_ptr[i] == 'E')
+	    fatal_with_file_and_line (infile,
+				      "vector must have at least one element");
 	  XVEC (return_rtx, i) = return_vec;
 	  obstack_free (&vector_stack, NULL);
 	  /* close bracket gotten */


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