def frontend(args): """Generate the LLVM bitcode file.""" bitcodes = [] libs = set() noreturning_frontend = False def add_libs(lang): if lang in extra_libs(): libs.add(extra_libs()[lang]) if args.language: lang = languages()[args.language] if lang in ['boogie', 'svcomp', 'json']: noreturning_frontend = True add_libs(lang) frontend = frontends()[lang] for input_file in args.input_files: bitcode = frontend(input_file, args) if bitcode is not None: bitcodes.append(bitcode) else: for input_file in args.input_files: lang = languages()[os.path.splitext(input_file)[1][1:]] if lang in ['boogie', 'svcomp', 'json']: noreturning_frontend = True add_libs(lang) bitcode = frontends()[lang](input_file, args) if bitcode is not None: bitcodes.append(bitcode) if not noreturning_frontend: return link_bc_files(bitcodes, libs, args)
def frontend(args): """Generate the LLVM bitcode file.""" bitcodes = [] libs = set() noreturning_frontend = False def add_libs(lang): if lang in extra_libs(): libs.add(extra_libs()[lang]) if args.language: lang = languages()[args.language] if lang in ['boogie', 'svcomp', 'json']: noreturning_frontend = True add_libs(lang) frontend = frontends()[lang] for input_file in args.input_files: bitcode = frontend(input_file,args) if bitcode is not None: bitcodes.append(bitcode) else: for input_file in args.input_files: lang = languages()[os.path.splitext(input_file)[1][1:]] if lang in ['boogie', 'svcomp', 'json']: noreturning_frontend = True add_libs(lang) bitcode = frontends()[lang](input_file,args) if bitcode is not None: bitcodes.append(bitcode) if not noreturning_frontend: return link_bc_files(bitcodes,libs,args)
def validate_input_file(file): """Check whether the given input file is valid, returning a reason if not.""" file_extension = os.path.splitext(file)[1][1:] if not os.path.isfile(file): exit_with_error("Cannot find file %s" % file) if not os.access(file, os.R_OK): exit_with_error("Cannot read file %s" % file) elif not file_extension in languages(): exit_with_error("Unexpected source file extension '%s'" % file_extension)