void goto_cc_cmdlinet::add_infile_arg(const std::string &arg) { parsed_argv.push_back(argt(arg)); parsed_argv.back().is_infile_name=true; if(arg=="-") { stdin_file=get_temporary_file("goto-cc", "stdin"); FILE *tmp=fopen(stdin_file.c_str(), "wt"); char ch; while(std::cin.read(&ch, 1)) fputc(ch, tmp); fclose(tmp); } }
CodeGenVisitor::CodeGenVisitor(llvm::Module* module, llvm::FunctionPassManager *fpm, llvm::ExecutionEngine *ee) { builder_ = new llvm::IRBuilder<>(llvm::getGlobalContext()); fpm_ = fpm; module_ = module; ee_ = ee; scope_ = 0; namedValues_.push_back(std::map<std::string, llvm::Value*>()); // create external for putchar std::vector<llvm::Type*> argt(1, typeToLLVMType(Type::INT)); llvm::FunctionType* ft = llvm::FunctionType::get(typeToLLVMType(Type::INT), argt, false); llvm::Function::Create(ft, llvm::Function::ExternalLinkage, "put_char", module_); // create external for time_seed ft = llvm::FunctionType::get(typeToLLVMType(Type::INT), false); llvm::Function::Create(ft, llvm::Function::ExternalLinkage, "time_seed", module_); // create external for random_if ft = llvm::FunctionType::get(typeToLLVMType(Type::BOOL), argt, false); llvm::Function::Create(ft, llvm::Function::ExternalLinkage, "random_if", module_); }