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)