Files
ldc/gen/pragma.h
Jernej Krempuš 7bbe782615 Pragma llvm_inline_ir
Adding pragma llvm_inline_ir.

Improved the error messages.

Append "ret void" when the return type is void

Improved the error message

in case when the string passed as llvm inline ir isn't valid llvm
assembly language.

LLVM 3.2 fix.

Add attribute AlwaysInline inside DtoInlineIRFunction.

Always generate a body for llvm_inline_ir

Also, always make llvm_inline_ir functions linkonce_odr. Because
the body is always generated when a module uses a llvm_inline_ir
function, the fact that the linker removes the function shouldn't
cause problems.
2012-11-08 22:05:15 +01:00

42 lines
804 B
C++

#ifndef PRAGMA_H
#define PRAGMA_H
#include <string>
struct PragmaDeclaration;
struct Dsymbol;
struct Scope;
enum Pragma
{
LLVMnone,
LLVMintrinsic,
LLVMno_typeinfo,
LLVMno_moduleinfo,
LLVMalloca,
LLVMshufflevector,
LLVMextractelement,
LLVMinsertelement,
LLVMva_start,
LLVMva_copy,
LLVMva_end,
LLVMva_arg,
LLVMinline_asm,
LLVMinline_ir,
LLVMfence,
LLVMatomic_store,
LLVMatomic_load,
LLVMatomic_cmp_xchg,
LLVMatomic_rmw,
LLVMbitop_bt,
LLVMbitop_btc,
LLVMbitop_btr,
LLVMbitop_bts
};
Pragma DtoGetPragma(Scope *sc, PragmaDeclaration *decl, std::string &arg1str);
void DtoCheckPragma(PragmaDeclaration *decl, Dsymbol *sym,
Pragma llvm_internal, const std::string &arg1str);
#endif // PRAGMA_H