Suppress printing of placeholder external functions.

With the change to the parser to preserve indices, it now inserts
placeholders to pad out index spaces as needed. Placeholder functions
use reserved signature indices, so skip them when writing them out,
to avoid writing them out as "sig4294967295".
This commit is contained in:
Dan Gohman
2018-02-21 13:10:58 -08:00
parent 20500913ad
commit a55a582d4e
2 changed files with 7 additions and 2 deletions

View File

@@ -33,6 +33,7 @@ function %signatures() {
; check: sig10 = () native
; check: sig11 = (i32, f64) -> i32, b1 spiderwasm
; check: sig12 = (i32) -> b1 native
; not: fn0
; check: fn5 = sig11 %foo
; check: fn8 = sig12 %bar
; check: }

View File

@@ -4,10 +4,11 @@
//! equivalent textual representation. This textual representation can be read back by the
//! `cretonne-reader` crate.
use ir::{Function, DataFlowGraph, Ebb, Inst, Value, ValueDef, Type};
use ir::{Function, DataFlowGraph, Ebb, Inst, Value, ValueDef, Type, SigRef};
use isa::{TargetIsa, RegInfo};
use std::fmt::{self, Result, Error, Write};
use std::result;
use packed_option::ReservedValue;
/// Write `func` to `w` as equivalent text.
/// Use `isa` to emit ISA-dependent annotations.
@@ -74,7 +75,10 @@ fn write_preamble(
for fnref in func.dfg.ext_funcs.keys() {
any = true;
writeln!(w, " {} = {}", fnref, func.dfg.ext_funcs[fnref])?;
let ext_func = &func.dfg.ext_funcs[fnref];
if ext_func.signature != SigRef::reserved_value() {
writeln!(w, " {} = {}", fnref, ext_func)?;
}
}
for jt in func.jump_tables.keys() {