mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-03 16:41:06 +03:00

This uses the LLVM style, which makes sense for sharing code with other LLVM projects. The DMD code we use will soon all be in D anyway.
53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
//===-- gen/llvmcompat.h - LLVM API compatibilty shims ----------*- C++ -*-===//
|
||
//
|
||
// LDC – the LLVM D compiler
|
||
//
|
||
// This file is distributed under the BSD-style LDC license. See the LICENSE
|
||
// file for details.
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
//
|
||
// Provides a central place to handle API changes between supported LLVM
|
||
// versions.
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
|
||
#ifdef _MSC_VER
|
||
#pragma once
|
||
#endif
|
||
|
||
#ifndef LDC_LLVMCOMPAT_H
|
||
#define LDC_LLVMCOMPAT_H
|
||
|
||
#if !defined(LDC_LLVM_VER)
|
||
#error "Please specify value for LDC_LLVM_VER."
|
||
#endif
|
||
|
||
#define ADDRESS_SPACE 0
|
||
|
||
#ifndef __has_feature
|
||
#define __has_feature(x) 0
|
||
#endif
|
||
|
||
#if __has_feature(cxx_override_control) || \
|
||
(defined(_MSC_VER) && _MSC_VER >= 1700)
|
||
#define LLVM_OVERRIDE override
|
||
#else
|
||
#define LLVM_OVERRIDE
|
||
#endif
|
||
|
||
#if (__has_feature(cxx_rvalue_references) || \
|
||
defined(__GXX_EXPERIMENTAL_CXX0X__) || \
|
||
(defined(_MSC_VER) && _MSC_VER >= 1600))
|
||
#define LLVM_HAS_RVALUE_REFERENCES 1
|
||
#else
|
||
#define LLVM_HAS_RVALUE_REFERENCES 0
|
||
#endif
|
||
|
||
#if LLVM_HAS_RVALUE_REFERENCES
|
||
#define llvm_move(value) (::std::move(value))
|
||
#else
|
||
#define llvm_move(value) (value)
|
||
#endif
|
||
|
||
#endif
|