Beispiel #1
0
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);
  }
}
Beispiel #2
0
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_);
}