namespace {
class VISIBILITY_HIDDEN AggExprEmitter : public StmtVisitor<AggExprEmitter> {
CodeGenFunction &CGF;
- llvm::LLVMFoldingBuilder &Builder;
+ llvm::IRBuilder &Builder;
llvm::Value *DestPtr;
bool VolatileDest;
public:
class VISIBILITY_HIDDEN ComplexExprEmitter
: public StmtVisitor<ComplexExprEmitter, ComplexPairTy> {
CodeGenFunction &CGF;
- llvm::LLVMFoldingBuilder &Builder;
+ llvm::IRBuilder &Builder;
public:
ComplexExprEmitter(CodeGenFunction &cgf) : CGF(cgf), Builder(CGF.Builder) {
}
class VISIBILITY_HIDDEN ScalarExprEmitter
: public StmtVisitor<ScalarExprEmitter, Value*> {
CodeGenFunction &CGF;
- llvm::LLVMFoldingBuilder &Builder;
+ llvm::IRBuilder &Builder;
CGObjCRuntime *Runtime;
#include "CGObjCRuntime.h"
#include "llvm/Module.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/Support/LLVMBuilder.h"
+#include "llvm/Support/IRBuilder.h"
#include "llvm/ADT/SmallVector.h"
namespace {
CGObjCEtoile(llvm::Module &Mp,
const llvm::Type *LLVMIntType,
const llvm::Type *LLVMLongType);
- virtual llvm::Value *generateMessageSend(llvm::LLVMFoldingBuilder &Builder,
+ virtual llvm::Value *generateMessageSend(llvm::IRBuilder &Builder,
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
llvm::Value *Selector,
llvm::Value** ArgV,
unsigned ArgC);
- llvm::Value *getSelector(llvm::LLVMFoldingBuilder &Builder,
+ llvm::Value *getSelector(llvm::IRBuilder &Builder,
llvm::Value *SelName,
llvm::Value *SelTypes);
virtual llvm::Function *MethodPreamble(const llvm::Type *ReturnTy,
}
/// Looks up the selector for the specified name / type pair.
-llvm::Value *CGObjCEtoile::getSelector(llvm::LLVMFoldingBuilder &Builder,
+llvm::Value *CGObjCEtoile::getSelector(llvm::IRBuilder &Builder,
llvm::Value *SelName,
llvm::Value *SelTypes)
{
return Builder.CreateCall(SelFunction, Args.begin(), Args.end());
}
-static void SetField(llvm::LLVMFoldingBuilder &Builder,
- llvm::Value *Structure,
- unsigned Index,
- llvm::Value *Value) {
+static void SetField(llvm::IRBuilder &Builder, llvm::Value *Structure,
+ unsigned Index, llvm::Value *Value) {
llvm::Value *element_ptr = Builder.CreateStructGEP(Structure, Index);
Builder.CreateStore(Value, element_ptr);
}
// Generate code for a message send expression on the Etoile runtime.
// BIG FAT WARNING: Much of this code will need factoring out later.
-llvm::Value *CGObjCEtoile::generateMessageSend(
- llvm::LLVMFoldingBuilder &Builder,
- const llvm::Type *ReturnTy,
- llvm::Value *Sender,
- llvm::Value *Receiver,
- llvm::Value *Selector,
- llvm::Value** ArgV,
- unsigned ArgC) {
+llvm::Value *CGObjCEtoile::generateMessageSend(llvm::IRBuilder &Builder,
+ const llvm::Type *ReturnTy,
+ llvm::Value *Sender,
+ llvm::Value *Receiver,
+ llvm::Value *Selector,
+ llvm::Value** ArgV,
+ unsigned ArgC) {
// FIXME: Selectors should be statically cached, not looked up on every call.
llvm::Value *cmd = getSelector(Builder, Selector, 0);
// TODO: [Polymorphic] inline caching
#include "CGObjCRuntime.h"
#include "llvm/Module.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/Support/LLVMBuilder.h"
+#include "llvm/Support/IRBuilder.h"
#include "llvm/ADT/SmallVector.h"
namespace {
CGObjCGNU(llvm::Module &Mp,
const llvm::Type *LLVMIntType,
const llvm::Type *LLVMLongType);
- virtual llvm::Value *generateMessageSend(llvm::LLVMFoldingBuilder &Builder,
+ virtual llvm::Value *generateMessageSend(llvm::IRBuilder &Builder,
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
llvm::Value *Selector,
llvm::Value** ArgV,
unsigned ArgC);
- llvm::Value *getSelector(llvm::LLVMFoldingBuilder &Builder,
+ llvm::Value *getSelector(llvm::IRBuilder &Builder,
llvm::Value *SelName,
llvm::Value *SelTypes);
virtual llvm::Function *MethodPreamble(const llvm::Type *ReturnTy,
/// Looks up the selector for the specified name / type pair.
// FIXME: Selectors should be statically cached, not looked up on every call.
-llvm::Value *CGObjCGNU::getSelector(llvm::LLVMFoldingBuilder &Builder,
+llvm::Value *CGObjCGNU::getSelector(llvm::IRBuilder &Builder,
llvm::Value *SelName,
llvm::Value *SelTypes)
{
// FIXME: Much of this code will need factoring out later.
// TODO: This should take a sender argument (pointer to self in the calling
// context)
-llvm::Value *CGObjCGNU::generateMessageSend(llvm::LLVMFoldingBuilder &Builder,
+llvm::Value *CGObjCGNU::generateMessageSend(llvm::IRBuilder &Builder,
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
#define CLANG_CODEGEN_OBCJRUNTIME_H
namespace llvm {
- class LLVMFoldingBuilder;
+ class IRBuilder;
class Constant;
class Type;
class Value;
virtual ~CGObjCRuntime();
/// Generate an Objective-C message send operation
- virtual llvm::Value *generateMessageSend(llvm::LLVMFoldingBuilder &Builder,
+ virtual llvm::Value *generateMessageSend(llvm::IRBuilder &Builder,
const llvm::Type *ReturnTy,
llvm::Value *Sender,
llvm::Value *Receiver,
#include "clang/AST/Type.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
-#include "llvm/Support/LLVMBuilder.h"
+#include "llvm/Support/IRBuilder.h"
#include <vector>
namespace llvm {
TargetInfo &Target;
typedef std::pair<llvm::Value *, llvm::Value *> ComplexPairTy;
- llvm::LLVMFoldingBuilder Builder;
+ llvm::IRBuilder Builder;
// Holds the Decl for the current function or method
const Decl *CurFuncDecl;