From 11c256cdcd601b67fcf5611fe8aed55b9ff00143 Mon Sep 17 00:00:00 2001 From: Dokyung Song Date: Thu, 6 Sep 2018 15:49:23 -0700 Subject: sys/fuchsia: prune unused structs in syscall description generated by fidlgen After generating syscall description for fidl files using fidlgen, prune all unused structs using the exact same mechanism used by the compiler's check for unused structs. This allows the FIDL compiler to support modular compilation; it does not need to have global knowledge of whether each struct is used or not. --- pkg/compiler/compiler.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'pkg/compiler/compiler.go') diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index e66da802b..2c4e81b2b 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -43,13 +43,9 @@ type Prog struct { fileConsts map[string]*ConstInfo } -// Compile compiles sys description. -func Compile(desc *ast.Description, consts map[string]uint64, target *targets.Target, eh ast.ErrorHandler) *Prog { - if eh == nil { - eh = ast.LoggingHandler - } +func createCompiler(desc *ast.Description, target *targets.Target, eh ast.ErrorHandler) *compiler { comp := &compiler{ - desc: desc.Clone(), + desc: desc, target: target, eh: eh, ptrSize: target.PtrSize, @@ -72,6 +68,15 @@ func Compile(desc *ast.Description, consts map[string]uint64, target *targets.Ta for name, n := range builtinStrFlags { comp.strFlags[name] = n } + return comp +} + +// Compile compiles sys description. +func Compile(desc *ast.Description, consts map[string]uint64, target *targets.Target, eh ast.ErrorHandler) *Prog { + if eh == nil { + eh = ast.LoggingHandler + } + comp := createCompiler(desc.Clone(), target, eh) comp.typecheck() // The subsequent, more complex, checks expect basic validity of the tree, // in particular corrent number of type arguments. If there were errors, -- cgit mrf-deployment