ir,build: pragma support (#97)

Adds support for arbitrary compiler directives.

Fixes #15
This commit is contained in:
Michael McLoughlin
2019-09-16 11:01:48 -07:00
committed by GitHub
parent 0bcbe82731
commit c8004ba627
14 changed files with 161 additions and 1 deletions

View File

@@ -144,10 +144,17 @@ func (f *File) Functions() []*Function {
return fns
}
// Pragma represents a function compiler directive.
type Pragma struct {
Directive string
Arguments []string
}
// Function represents an assembly function.
type Function struct {
Name string
Attributes attr.Attribute
Pragmas []Pragma
Doc []string
Signature *gotypes.Signature
LocalSize int
@@ -171,6 +178,14 @@ func NewFunction(name string) *Function {
}
}
// AddPragma adds a pragma to this function.
func (f *Function) AddPragma(directive string, args ...string) {
f.Pragmas = append(f.Pragmas, Pragma{
Directive: directive,
Arguments: args,
})
}
// SetSignature sets the function signature.
func (f *Function) SetSignature(s *gotypes.Signature) {
f.Signature = s