diff --git a/dmd/attrib.c b/dmd/attrib.c index a61a6d25..3131b3ed 100644 --- a/dmd/attrib.c +++ b/dmd/attrib.c @@ -863,18 +863,6 @@ void PragmaDeclaration::semantic(Scope *sc) llvm_internal = LLVMintrinsic; assert(args->dim == 2); } - else if (strcmp(str,"null")==0) { - llvm_internal = LLVMnull; - assert(args->dim == 1); - } - else if (strcmp(str,"mangle")==0) { - llvm_internal = LLVMmangle; - assert(args->dim == 2); - } - else if (strcmp(str,"bind")==0) { - llvm_internal = LLVMbind; - assert(args->dim == 2); - } else if (strcmp(str,"va_start")==0) { llvm_internal = LLVMva_start; assert(args->dim == 1); @@ -902,8 +890,6 @@ void PragmaDeclaration::semantic(Scope *sc) switch (llvm_internal) { case LLVMintrinsic: - case LLVMmangle: - case LLVMbind: case LLVMva_intrinsic: e = (Expression *)args->data[1]; e = e->semantic(sc); @@ -915,7 +901,6 @@ void PragmaDeclaration::semantic(Scope *sc) error("2nd argument must be a string"); break; - case LLVMnull: case LLVMva_arg: case LLVMva_start: case LLVMnotypeinfo: @@ -944,7 +929,6 @@ void PragmaDeclaration::semantic(Scope *sc) switch(llvm_internal) { case LLVMintrinsic: - case LLVMmangle: case LLVMva_intrinsic: if (FuncDeclaration* fd = s->isFuncDeclaration()) { fd->llvmInternal = llvm_internal; @@ -956,27 +940,6 @@ void PragmaDeclaration::semantic(Scope *sc) } break; - case LLVMnull: - if (StaticCtorDeclaration* sd = s->isStaticCtorDeclaration()) { - sd->llvmInternal = llvm_internal; - } - else { - error("may only be used on static constructors"); - assert(0); - } - break; - - case LLVMbind: - if (VarDeclaration* vd = s->isVarDeclaration()) { - vd->llvmInternal = llvm_internal; - vd->llvmInternal1 = llvm_str1; - } - else { - error("may only be used on var declarations"); - assert(0); - } - break; - case LLVMva_start: case LLVMva_arg: if (TemplateDeclaration* td = s->isTemplateDeclaration()) { diff --git a/gen/enums.h b/gen/enums.h index 8f2fb32a..8757b3a3 100644 --- a/gen/enums.h +++ b/gen/enums.h @@ -1,10 +1,7 @@ enum { LLVMnone, - LLVMnull, - LLVMmangle, LLVMintrinsic, - LLVMbind, LLVMva_arg, LLVMva_start, LLVMva_intrinsic, diff --git a/gen/toobj.c b/gen/toobj.c index 6b47174b..ef7466d2 100644 --- a/gen/toobj.c +++ b/gen/toobj.c @@ -592,14 +592,6 @@ void VarDeclaration::toObjFile() LOG_SCOPE; llvm::Module* M = gIR->module; - // handle bind pragma - if (llvmInternal == LLVMbind) { - Logger::println("var is bound: %s", llvmInternal1); - llvmValue = M->getGlobalVariable(llvmInternal1); - assert(llvmValue); - return; - } - // global variable or magic if (isDataseg() || parent->isModule()) { @@ -796,7 +788,6 @@ void FuncDeclaration::toObjFile() { llvmDModule = gIR->dmodule; - bool allow_fbody = true; // handle static constructor / destructor if (isStaticCtorDeclaration() || isStaticDtorDeclaration()) { const llvm::ArrayType* sctor_type = llvm::ArrayType::get(llvm::PointerType::get(functype),1); @@ -805,17 +796,7 @@ void FuncDeclaration::toObjFile() llvm::Constant* sctor_func = llvm::cast(llvmValue); //Logger::cout() << "static ctor func: " << *sctor_func << '\n'; - llvm::Constant* sctor_init = 0; - if (llvmInternal == LLVMnull) - { - llvm::Constant* sctor_init_null = llvm::Constant::getNullValue(sctor_func->getType()); - sctor_init = llvm::ConstantArray::get(sctor_type,&sctor_init_null,1); - allow_fbody = false; - } - else - { - sctor_init = llvm::ConstantArray::get(sctor_type,&sctor_func,1); - } + llvm::Constant* sctor_init = llvm::ConstantArray::get(sctor_type,&sctor_func,1); //Logger::cout() << "static ctor init: " << *sctor_init << '\n'; @@ -825,7 +806,7 @@ void FuncDeclaration::toObjFile() } // function definition - if (allow_fbody && fbody != 0) + if (fbody != 0) { gIR->functions.push_back(IRFunction(this)); gIR->func().func = func;