mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-13 11:23:14 +01:00
Add some of the sanitizer passes to LDC. This is not complete (linking must be done using clang and the right `-fsanitize=` option) and may not be useful at all. If it proves to be usefull then a lot of other options (e.g. blacklist) must be added.
47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
//===-- gen/optimizer.h - LLVM IR optimization ------------------*- C++ -*-===//
|
||
//
|
||
// LDC – the LLVM D compiler
|
||
//
|
||
// This file is distributed under the BSD-style LDC license. See the LICENSE
|
||
// file for details.
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
//
|
||
// Handles the optimization of the generated LLVM modules according to the
|
||
// specified optimization level.
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
|
||
#ifndef LDC_GEN_OPTIMIZER_H
|
||
#define LDC_GEN_OPTIMIZER_H
|
||
|
||
// For llvm::CodeGenOpt::Level
|
||
#include "llvm/Support/CodeGen.h"
|
||
|
||
#if LDC_LLVM_VER >= 303
|
||
#include "llvm/Support/CommandLine.h"
|
||
|
||
namespace opts {
|
||
|
||
enum SanitizerCheck { None, AddressSanitizer, MemorySanitizer, ThreadSanitizer };
|
||
|
||
extern llvm::cl::opt<SanitizerCheck> sanitize;
|
||
}
|
||
#endif
|
||
|
||
namespace llvm { class Module; }
|
||
|
||
bool ldc_optimize_module(llvm::Module* m);
|
||
|
||
// Returns whether the normal, full inlining pass will be run.
|
||
bool willInline();
|
||
|
||
bool optimize();
|
||
|
||
llvm::CodeGenOpt::Level codeGenOptLevel();
|
||
|
||
void verifyModule(llvm::Module* m);
|
||
|
||
#endif
|
||
|