llvm_sys_featured/
target_machine.rs1use super::prelude::*;
4use super::target::LLVMTargetDataRef;
5
6#[derive(Debug)]
7pub enum LLVMOpaqueTargetMachine {}
8
9pub type LLVMTargetMachineRef = *mut LLVMOpaqueTargetMachine;
10
11#[derive(Debug)]
12pub enum LLVMTarget {}
13
14pub type LLVMTargetRef = *mut LLVMTarget;
15
16#[repr(C)]
17#[derive(Clone, Copy, Debug, PartialEq)]
18pub enum LLVMCodeGenOptLevel {
19 LLVMCodeGenLevelNone = 0,
20 LLVMCodeGenLevelLess = 1,
21 LLVMCodeGenLevelDefault = 2,
22 LLVMCodeGenLevelAggressive = 3,
23}
24
25#[repr(C)]
26#[derive(Clone, Copy, Debug, PartialEq)]
27pub enum LLVMRelocMode {
28 LLVMRelocDefault = 0,
29 LLVMRelocStatic = 1,
30 LLVMRelocPIC = 2,
31 LLVMRelocDynamicNoPic = 3,
32 LLVMRelocROPI = 4,
33 LLVMRelocRWPI = 5,
34 LLVMRelocROPI_RWPI = 6,
35}
36
37#[repr(C)]
38#[derive(Clone, Copy, Debug, PartialEq)]
39pub enum LLVMCodeModel {
40 LLVMCodeModelDefault = 0,
41 LLVMCodeModelJITDefault = 1,
42 LLVMCodeModelTiny = 2,
43 LLVMCodeModelSmall = 3,
44 LLVMCodeModelKernel = 4,
45 LLVMCodeModelMedium = 5,
46 LLVMCodeModelLarge = 6,
47}
48
49#[repr(C)]
50#[derive(Clone, Copy, Debug, PartialEq)]
51pub enum LLVMCodeGenFileType {
52 LLVMAssemblyFile = 0,
53 LLVMObjectFile = 1,
54}
55
56extern "C" {
57 pub fn LLVMGetFirstTarget() -> LLVMTargetRef;
58 pub fn LLVMGetNextTarget(T: LLVMTargetRef) -> LLVMTargetRef;
59 pub fn LLVMGetTargetFromName(Name: *const ::libc::c_char) -> LLVMTargetRef;
60 pub fn LLVMGetTargetFromTriple(
61 Triple: *const ::libc::c_char,
62 T: *mut LLVMTargetRef,
63 ErrorMessage: *mut *mut ::libc::c_char,
64 ) -> LLVMBool;
65 pub fn LLVMGetTargetName(T: LLVMTargetRef) -> *const ::libc::c_char;
66 pub fn LLVMGetTargetDescription(T: LLVMTargetRef) -> *const ::libc::c_char;
67 pub fn LLVMTargetHasJIT(T: LLVMTargetRef) -> LLVMBool;
68 pub fn LLVMTargetHasTargetMachine(T: LLVMTargetRef) -> LLVMBool;
69 pub fn LLVMTargetHasAsmBackend(T: LLVMTargetRef) -> LLVMBool;
70 pub fn LLVMCreateTargetMachine(
71 T: LLVMTargetRef,
72 Triple: *const ::libc::c_char,
73 CPU: *const ::libc::c_char,
74 Features: *const ::libc::c_char,
75 Level: LLVMCodeGenOptLevel,
76 Reloc: LLVMRelocMode,
77 CodeModel: LLVMCodeModel,
78 ) -> LLVMTargetMachineRef;
79 pub fn LLVMDisposeTargetMachine(T: LLVMTargetMachineRef);
80 pub fn LLVMGetTargetMachineTarget(T: LLVMTargetMachineRef) -> LLVMTargetRef;
81 pub fn LLVMGetTargetMachineTriple(T: LLVMTargetMachineRef) -> *mut ::libc::c_char;
82 pub fn LLVMGetTargetMachineCPU(T: LLVMTargetMachineRef) -> *mut ::libc::c_char;
83 pub fn LLVMGetTargetMachineFeatureString(T: LLVMTargetMachineRef) -> *mut ::libc::c_char;
84 pub fn LLVMCreateTargetDataLayout(T: LLVMTargetMachineRef) -> LLVMTargetDataRef;
86 pub fn LLVMSetTargetMachineAsmVerbosity(T: LLVMTargetMachineRef, VerboseAsm: LLVMBool);
87 pub fn LLVMTargetMachineEmitToFile(
88 T: LLVMTargetMachineRef,
89 M: LLVMModuleRef,
90 Filename: *mut ::libc::c_char,
91 codegen: LLVMCodeGenFileType,
92 ErrorMessage: *mut *mut ::libc::c_char,
93 ) -> LLVMBool;
94 pub fn LLVMTargetMachineEmitToMemoryBuffer(
95 T: LLVMTargetMachineRef,
96 M: LLVMModuleRef,
97 codegen: LLVMCodeGenFileType,
98 ErrorMessage: *mut *mut ::libc::c_char,
99 OutMemBuf: *mut LLVMMemoryBufferRef,
100 ) -> LLVMBool;
101
102 pub fn LLVMGetDefaultTargetTriple() -> *mut ::libc::c_char;
103 pub fn LLVMNormalizeTargetTriple(triple: *const ::libc::c_char) -> *mut ::libc::c_char;
105 pub fn LLVMGetHostCPUName() -> *mut ::libc::c_char;
107 pub fn LLVMGetHostCPUFeatures() -> *mut ::libc::c_char;
109
110 pub fn LLVMAddAnalysisPasses(T: LLVMTargetMachineRef, PM: LLVMPassManagerRef);
111}