@@ -1848,6 +1848,16 @@ pph_in_lang_type (pph_stream *stream)
}
+/* Read from STREAM an enum machine_mode value. */
+
+static enum machine_mode
+pph_in_machine_mode (pph_stream *stream)
+{
+ struct lto_input_block *ib = stream->encoder.r.ib;
+ return streamer_read_enum (ib, machine_mode, NUM_MACHINE_MODES);
+}
+
+
/* Read from STREAM the body of tcc_type node TYPE. */
static void
@@ -1857,6 +1867,7 @@ pph_in_tcc_type (pph_stream *stream, tree type)
TYPE_POINTER_TO (type) = pph_in_tree (stream);
TYPE_REFERENCE_TO (type) = pph_in_tree (stream);
TYPE_NEXT_VARIANT (type) = pph_in_tree (stream);
+ SET_TYPE_MODE (type, pph_in_machine_mode (stream));
/* FIXME pph - Streaming TYPE_CANONICAL generates many type comparison
failures. Why? */
/* FIXME pph: apparently redundant. */
@@ -1828,6 +1828,15 @@ pph_out_lang_type (pph_stream *stream, tree type)
pph_out_lang_type_ptrmem (stream, <->u.ptrmem);
}
+/* Write machine_mode value MODE to STREAM. */
+
+static void
+pph_out_machine_mode (pph_stream *stream, enum machine_mode mode)
+{
+ struct output_block *ob = stream->encoder.w.ob;
+ streamer_write_enum (ob->main_stream, machine_mode, NUM_MACHINE_MODES, mode);
+}
+
/* Write to STREAM the body of tcc_type node TYPE. */
@@ -1838,6 +1847,7 @@ pph_out_tcc_type (pph_stream *stream, tree type)
pph_out_tree (stream, TYPE_POINTER_TO (type));
pph_out_tree (stream, TYPE_REFERENCE_TO (type));
pph_out_tree (stream, TYPE_NEXT_VARIANT (type));
+ pph_out_machine_mode (stream, TYPE_MODE (type));
/* FIXME pph - Streaming TYPE_CANONICAL generates many type comparison
failures. Why? */
pph_out_tree (stream, TREE_CHAIN (type));
@@ -1,5 +1,6 @@
-// { dg-xfail-if "ICE build_int_cst_wide - bad merged type" { "*-*-*" } { "-fpph-map=pph.map" } }
-// { dg-bogus "internal compiler error: in build_int_cst_wide, at tree.c" "" { xfail *-*-* } 0 }
+// pph asm xdiff 34830
+// The assembly difference is due to missing code in function f().
+// The PPH version removes the whole return expression.
#include "x1namespace-alias1.h"
#include "x1namespace-alias2.h"