// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build go1.5

// This file implements access to gccgo-generated export data.

package main

import (
	"go/importer"
	"go/types"
)

func init() {
	register("gccgo", importer.For("gccgo", nil))
}

// Print the extra gccgo compiler data for this package, if it exists.
func (p *printer) printGccgoExtra(pkg *types.Package) {
	// Disabled for now.
	// TODO(gri) address this at some point.

	// if initdata, ok := initmap[pkg]; ok {
	// 	p.printf("/*\npriority %d\n", initdata.Priority)

	// 	p.printDecl("init", len(initdata.Inits), func() {
	// 		for _, init := range initdata.Inits {
	// 			p.printf("%s %s %d\n", init.Name, init.InitFunc, init.Priority)
	// 		}
	// 	})

	// 	p.print("*/\n")
	// }
}
