llvm/llvm/include/llvm/Target/TargetOptions.h

//===-- llvm/Target/TargetOptions.h - Target Options ------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file defines command line option flags that are shared across various
// targets.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_TARGET_TARGETOPTIONS_H
#define LLVM_TARGET_TARGETOPTIONS_H

#include "llvm/ADT/FloatingPointMode.h"
#include "llvm/MC/MCTargetOptions.h"

#include <memory>

namespace llvm {
  struct fltSemantics;
  class MachineFunction;
  class MemoryBuffer;

  namespace FloatABI {
    enum ABIType {};
  }

  namespace FPOpFusion {
    enum FPOpFusionMode {};
  }

  namespace JumpTable {
    enum JumpTableType {};
  }

  namespace ThreadModel {
    enum Model {};
  }

  enum class BasicBlockSection {};

  enum class EABI {};

  /// Identify a debugger for "tuning" the debug info.
  ///
  /// The "debugger tuning" concept allows us to present a more intuitive
  /// interface that unpacks into different sets of defaults for the various
  /// individual feature-flag settings, that suit the preferences of the
  /// various debuggers.  However, it's worth remembering that debuggers are
  /// not the only consumers of debug info, and some variations in DWARF might
  /// better be treated as target/platform issues. Fundamentally,
  /// o if the feature is useful (or not) to a particular debugger, regardless
  ///   of the target, that's a tuning decision;
  /// o if the feature is useful (or not) on a particular platform, regardless
  ///   of the debugger, that's a target decision.
  /// It's not impossible to see both factors in some specific case.
  enum class DebuggerKind {};

  /// Enable abort calls when global instruction selection fails to lower/select
  /// an instruction.
  enum class GlobalISelAbortMode {};

  /// Indicates when and how the Swift async frame pointer bit should be set.
  enum class SwiftAsyncFramePointerMode {};

  /// \brief Enumeration value for AMDGPU code object version, which is the
  /// code object version times 100.
  enum CodeObjectVersionKind {};

  class TargetOptions {};

} // End llvm namespace

#endif