//===--- DebugInfoOptions.h - Debug Info Emission Types ---------*- 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
 
//
 
//===----------------------------------------------------------------------===//
 
 
 
#ifndef LLVM_CLANG_BASIC_DEBUGINFOOPTIONS_H
 
#define LLVM_CLANG_BASIC_DEBUGINFOOPTIONS_H
 
 
 
namespace clang {
 
namespace codegenoptions {
 
 
 
enum DebugInfoFormat {
 
  DIF_DWARF,
 
  DIF_CodeView,
 
};
 
 
 
enum DebugInfoKind {
 
  /// Don't generate debug info.
 
  NoDebugInfo,
 
 
 
  /// Emit location information but do not generate debug info in the output.
 
  /// This is useful in cases where the backend wants to track source
 
  /// locations for instructions without actually emitting debug info for them
 
  /// (e.g., when -Rpass is used).
 
  LocTrackingOnly,
 
 
 
  /// Emit only debug directives with the line numbers data
 
  DebugDirectivesOnly,
 
 
 
  /// Emit only debug info necessary for generating line number tables
 
  /// (-gline-tables-only).
 
  DebugLineTablesOnly,
 
 
 
  /// Limit generated debug info for classes to reduce size. This emits class
 
  /// type info only where the constructor is emitted, if it is a class that
 
  /// has a constructor.
 
  /// FIXME: Consider combining this with LimitedDebugInfo.
 
  DebugInfoConstructor,
 
 
 
  /// Limit generated debug info to reduce size (-fno-standalone-debug). This
 
  /// emits forward decls for types that could be replaced with forward decls in
 
  /// the source code. For dynamic C++ classes type info is only emitted into
 
  /// the module that contains the classe's vtable.
 
  LimitedDebugInfo,
 
 
 
  /// Generate complete debug info.
 
  FullDebugInfo,
 
 
 
  /// Generate debug info for types that may be unused in the source
 
  /// (-fno-eliminate-unused-debug-types).
 
  UnusedTypeInfo,
 
};
 
 
 
enum class DebugTemplateNamesKind {
 
  Full,
 
  Simple,
 
  Mangled
 
};
 
 
 
} // end namespace codegenoptions
 
} // end namespace clang
 
 
 
#endif