github.com/ronhuafeng/gofrontend@v0.0.0-20220715151246-ff23266b8bc5/go/go-optimize.h (about) 1 // go-optimize.h -- Go frontend optimizer flags. -*- C++ -*- 2 3 // Copyright 2011 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 #ifndef GO_OPTIMIZE_H 8 #define GO_OPTIMIZE_H 9 10 // This class manages different arguments to -fgo-optimize-XXX. If you 11 // want to create a new optimization, create a variable of this type with the 12 // name to use for XXX. You can then use is_enabled to see whether 13 // the -fgo-optimize-XXX option was used on the command line. 14 15 class Go_optimize 16 { 17 public: 18 Go_optimize(const char*, bool); 19 20 // Whether this optimizaiton was enabled. 21 bool 22 is_enabled() const 23 { return this->is_enabled_; } 24 25 // Enable/disable an optimization by name. Return true if found. 26 static bool 27 enable_by_name(const char*, bool); 28 29 private: 30 // The next optimize flag. These are not in any order. 31 Go_optimize* next_; 32 // The name of this optimization pass. 33 const char* name_; 34 // Whether this dump was enabled. 35 bool is_enabled_; 36 }; 37 38 #endif // !defined(GO_OPTIMIZE_H)