mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-03 14:21:30 +00:00 
			
		
		
		
	Apparently, the style needs to be agreed upon first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240390 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//===-- llvm/Support/CodeGen.h - CodeGen Concepts ---------------*- C++ -*-===//
 | 
						|
//
 | 
						|
//                     The LLVM Compiler Infrastructure
 | 
						|
//
 | 
						|
// This file is distributed under the University of Illinois Open Source
 | 
						|
// License. See LICENSE.TXT for details.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
//
 | 
						|
// This file define some types which define code generation concepts. For
 | 
						|
// example, relocation model.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#ifndef LLVM_SUPPORT_CODEGEN_H
 | 
						|
#define LLVM_SUPPORT_CODEGEN_H
 | 
						|
 | 
						|
#include "llvm-c/TargetMachine.h"
 | 
						|
#include "llvm/Support/ErrorHandling.h"
 | 
						|
 | 
						|
namespace llvm {
 | 
						|
 | 
						|
  // Relocation model types.
 | 
						|
  namespace Reloc {
 | 
						|
    enum Model { Default, Static, PIC_, DynamicNoPIC };
 | 
						|
  }
 | 
						|
 | 
						|
  // Code model types.
 | 
						|
  namespace CodeModel {
 | 
						|
    enum Model { Default, JITDefault, Small, Kernel, Medium, Large };
 | 
						|
  }
 | 
						|
 | 
						|
  namespace PICLevel {
 | 
						|
    enum Level { Default=0, Small=1, Large=2 };
 | 
						|
  }
 | 
						|
 | 
						|
  // TLS models.
 | 
						|
  namespace TLSModel {
 | 
						|
    enum Model {
 | 
						|
      GeneralDynamic,
 | 
						|
      LocalDynamic,
 | 
						|
      InitialExec,
 | 
						|
      LocalExec
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  // Code generation optimization level.
 | 
						|
  namespace CodeGenOpt {
 | 
						|
    enum Level {
 | 
						|
      None,        // -O0
 | 
						|
      Less,        // -O1
 | 
						|
      Default,     // -O2, -Os
 | 
						|
      Aggressive   // -O3
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  // Create wrappers for C Binding types (see CBindingWrapping.h).
 | 
						|
  inline CodeModel::Model unwrap(LLVMCodeModel Model) {
 | 
						|
    switch (Model) {
 | 
						|
      case LLVMCodeModelDefault:
 | 
						|
        return CodeModel::Default;
 | 
						|
      case LLVMCodeModelJITDefault:
 | 
						|
        return CodeModel::JITDefault;
 | 
						|
      case LLVMCodeModelSmall:
 | 
						|
        return CodeModel::Small;
 | 
						|
      case LLVMCodeModelKernel:
 | 
						|
        return CodeModel::Kernel;
 | 
						|
      case LLVMCodeModelMedium:
 | 
						|
        return CodeModel::Medium;
 | 
						|
      case LLVMCodeModelLarge:
 | 
						|
        return CodeModel::Large;
 | 
						|
    }
 | 
						|
    return CodeModel::Default;
 | 
						|
  }
 | 
						|
 | 
						|
  inline LLVMCodeModel wrap(CodeModel::Model Model) {
 | 
						|
    switch (Model) {
 | 
						|
      case CodeModel::Default:
 | 
						|
        return LLVMCodeModelDefault;
 | 
						|
      case CodeModel::JITDefault:
 | 
						|
        return LLVMCodeModelJITDefault;
 | 
						|
      case CodeModel::Small:
 | 
						|
        return LLVMCodeModelSmall;
 | 
						|
      case CodeModel::Kernel:
 | 
						|
        return LLVMCodeModelKernel;
 | 
						|
      case CodeModel::Medium:
 | 
						|
        return LLVMCodeModelMedium;
 | 
						|
      case CodeModel::Large:
 | 
						|
        return LLVMCodeModelLarge;
 | 
						|
    }
 | 
						|
    llvm_unreachable("Bad CodeModel!");
 | 
						|
  }
 | 
						|
}  // end llvm namespace
 | 
						|
 | 
						|
#endif
 |