public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [pph] Rebuild compilation context from PPH images (0/6) (issue4400048)
@ 2011-04-14 19:41 Diego Novillo
  0 siblings, 0 replies; only message in thread
From: Diego Novillo @ 2011-04-14 19:41 UTC (permalink / raw)
  To: reply, crowl, gcc-patches


This patch is the first of a series of 7 patches to reconstruct the
compilation context out of a PPH image.

Currently, there are 32 failures in the PPH testsuite.  Most are
assembly miscomparisons.  There are still missing bits in the images
that we are not pickling properly, but I think it makes more sense to
commit this so we can continue fixing the problems from here.

With these patches the branch is up to the point where simple
declarations in headers are handled properly.  For instance:

$ cat a.h
#ifndef _A_H
#define _A_H
float y;
int b;
struct X {
    float a;
    int b;
};
#endif

$ cat a.cc
#include "a.h"

struct X x;
main()
{
 y = 4.2;
 b = 42;
 x.a = y - b;
 return 0;
}

$ bin/g++ -fpph-hdr=a -o a.pph a.h
$ bin/g++ -fpph-hdr=a -o a a.cc
$ echo $?
0

But, it gets confused easily too.  So, now we need to debug it until
it works.

Tested on x86_64.
    
    	* pph.c (pph_read_file_contents): Re-instate call to
    	pph_add_names_to_namespace.
    	(pph_include_handler): Return false if the file has been
    	read from an image.

diff --git a/gcc/cp/pph.c b/gcc/cp/pph.c
index bf37915..6584e72 100644
--- a/gcc/cp/pph.c
+++ b/gcc/cp/pph.c
@@ -1978,20 +1978,13 @@ pph_read_file_contents (pph_stream *stream)
     report_validation_error (stream->name, bad_use->ident_str, cur_def,
                              bad_use->before_str, bad_use->after_str);
 
-  /* FIXME pph - Temporary workaround.  Instantiating PPH images
-     causes several failures in the PPH testsuite.  */
-  if (0)
-    {
-      /* Re-instantiate all the pre-processor symbols defined by STREAM.  */
-      cpp_lt_replay (parse_in, &idents_used);
+  /* Re-instantiate all the pre-processor symbols defined by STREAM.  */
+  cpp_lt_replay (parse_in, &idents_used);
 
-      /* Read global_namespace from STREAM and add all the names defined
-	 there to the current global_namespace.  */
-      file_ns = pph_input_tree (stream);
-      pph_add_names_to_namespace (global_namespace, file_ns);
-    }
-  else
-    pph_input_tree (stream);
+  /* Read global_namespace from STREAM and add all the names defined
+     there to the current global_namespace.  */
+  file_ns = pph_input_tree (stream);
+  pph_add_names_to_namespace (global_namespace, file_ns);
 }
 
 
@@ -2075,9 +2068,7 @@ pph_include_handler (cpp_reader *reader,
   if (pph_file != NULL && !cpp_included_before (reader, name, input_location))
     {
       pph_read_file (pph_file);
-      /* FIXME pph - Temporary workaround.  Instantiating PPH images
-	 causes several failures in the PPH testsuite.  */
-      read_text_file_p = /*false*/ true;
+      read_text_file_p = false;
     }
 
   return read_text_file_p;

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-04-14 19:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-14 19:41 [pph] Rebuild compilation context from PPH images (0/6) (issue4400048) Diego Novillo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).