blob: 1ca68deba0825cd20c73a7118a2e2efca18f9963 [file] [log] [blame]
// go-optimize.h -- Go frontend optimizer flags. -*- C++ -*-
// Copyright 2011 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.
#ifndef GO_OPTIMIZE_H
#define GO_OPTIMIZE_H
// This class manages different arguments to -fgo-optimize-XXX. If you
// want to create a new optimization, create a variable of this type with the
// name to use for XXX. You can then use is_enabled to see whether
// the -fgo-optimize-XXX option was used on the command line.
class Go_optimize
{
public:
Go_optimize(const char*, bool);
// Whether this optimizaiton was enabled.
bool
is_enabled() const
{ return this->is_enabled_; }
// Enable/disable an optimization by name. Return true if found.
static bool
enable_by_name(const char*, bool);
private:
// The next optimize flag. These are not in any order.
Go_optimize* next_;
// The name of this optimization pass.
const char* name_;
// Whether this dump was enabled.
bool is_enabled_;
};
#endif // !defined(GO_OPTIMIZE_H)