Patchwork [pph] Fix many segmentation faults when restoring C++ ASTs (issue4441070)

login
register
mail settings
Submitter Diego Novillo
Date April 26, 2011, 11:44 p.m.
Message ID <20110426234411.654331DA1C2@topo.tor.corp.google.com>
Download mbox | patch
Permalink /patch/92973/
State New
Headers show

Comments

Diego Novillo - April 26, 2011, 11:44 p.m.
I have been testing the C++ streamer with a collection of 6,576
C test cases taken from the GCC testsuite.

These C programs build fine with g++, so I encapsulated them inside a
single header file and created a .cc file that simply #includes it.

The intent is to make sure we can PPH generate and read a single
header file.  

Before this patch, we were failing to build about 1,800 test cases.
Most of those failures were due to the streamer reading an LTO tag for
a language-specific code and confusing it with a decl reference.  This
was happening because LTO tag codes were overlapping with language
specific tree codes.

With this patch the number of failures goes from 1,800 to 146.

I will be adding a .exp file to the testsuite in a future patch.
Right now, I'm testing this from a shell script.

Tested on x86_64.  Committed to the branch.


Diego.

ChangeLog.pph
2011-04-26  Diego Novillo  <dnovillo@google.com>

	* lto-streamer.h (enum LTO_tags): Change LTO_bb0 to begin
	after MAX_TREE_CODES.


--
This patch is available for review at http://codereview.appspot.com/4441070

Patch

diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 8d5b1d2..b6f4b79 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -268,7 +268,7 @@  enum LTO_tags
 
      Conversely, to map between LTO tags and tree/gimple codes, the
      reverse operation must be applied.  */
-  LTO_bb0 = 1 + NUM_TREE_CODES + LAST_AND_UNUSED_GIMPLE_CODE,
+  LTO_bb0 = 1 + MAX_TREE_CODES + LAST_AND_UNUSED_GIMPLE_CODE,
   LTO_bb1,
 
   /* EH region holding the previous statement.  */