forked from OSchip/llvm-project
48 lines
1.4 KiB
C
48 lines
1.4 KiB
C
|
//===----- CGObjCRuntime.h - Emit LLVM Code from ASTs for a Module --------===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
//
|
||
|
// This provides an abstract class for Objective-C code generation. Concrete
|
||
|
// subclasses of this implement code generation for specific Objective-C
|
||
|
// runtime libraries.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#ifndef CLANG_CODEGEN_OBCJRUNTIME_H
|
||
|
#define CLANG_CODEGEN_OBCJRUNTIME_H
|
||
|
|
||
|
namespace llvm {
|
||
|
class LLVMFoldingBuilder;
|
||
|
class Constant;
|
||
|
class Type;
|
||
|
class Value;
|
||
|
class Module;
|
||
|
}
|
||
|
|
||
|
namespace clang {
|
||
|
namespace CodeGen {
|
||
|
|
||
|
// Implements runtime-specific code generation functions
|
||
|
class CGObjCRuntime {
|
||
|
public:
|
||
|
virtual ~CGObjCRuntime();
|
||
|
|
||
|
// Generate an Objective-C message send operation
|
||
|
virtual llvm::Value *generateMessageSend(llvm::LLVMFoldingBuilder &Builder,
|
||
|
const llvm::Type *ReturnTy,
|
||
|
llvm::Value *Receiver,
|
||
|
llvm::Constant *Selector,
|
||
|
llvm::Value** ArgV,
|
||
|
unsigned ArgC) = 0;
|
||
|
};
|
||
|
|
||
|
CGObjCRuntime *CreateObjCRuntime(llvm::Module &M);
|
||
|
}
|
||
|
}
|
||
|
#endif
|