Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison lib/AsmParser/Parser.cpp @ 3:9ad51c7bc036
1st commit. remove git dir and add all files.
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 15 May 2013 06:43:32 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 3:9ad51c7bc036 |
---|---|
1 //===- Parser.cpp - Main dispatch module for the Parser library -----------===// | |
2 // | |
3 // The LLVM Compiler Infrastructure | |
4 // | |
5 // This file is distributed under the University of Illinois Open Source | |
6 // License. See LICENSE.TXT for details. | |
7 // | |
8 //===----------------------------------------------------------------------===// | |
9 // | |
10 // This library implements the functionality defined in llvm/Assembly/Parser.h | |
11 // | |
12 //===----------------------------------------------------------------------===// | |
13 | |
14 #include "llvm/Assembly/Parser.h" | |
15 #include "LLParser.h" | |
16 #include "llvm/ADT/OwningPtr.h" | |
17 #include "llvm/IR/Module.h" | |
18 #include "llvm/Support/MemoryBuffer.h" | |
19 #include "llvm/Support/SourceMgr.h" | |
20 #include "llvm/Support/raw_ostream.h" | |
21 #include "llvm/Support/system_error.h" | |
22 #include <cstring> | |
23 using namespace llvm; | |
24 | |
25 Module *llvm::ParseAssembly(MemoryBuffer *F, | |
26 Module *M, | |
27 SMDiagnostic &Err, | |
28 LLVMContext &Context) { | |
29 SourceMgr SM; | |
30 SM.AddNewSourceBuffer(F, SMLoc()); | |
31 | |
32 // If we are parsing into an existing module, do it. | |
33 if (M) | |
34 return LLParser(F, SM, Err, M).Run() ? 0 : M; | |
35 | |
36 // Otherwise create a new module. | |
37 OwningPtr<Module> M2(new Module(F->getBufferIdentifier(), Context)); | |
38 if (LLParser(F, SM, Err, M2.get()).Run()) | |
39 return 0; | |
40 return M2.take(); | |
41 } | |
42 | |
43 Module *llvm::ParseAssemblyFile(const std::string &Filename, SMDiagnostic &Err, | |
44 LLVMContext &Context) { | |
45 OwningPtr<MemoryBuffer> File; | |
46 if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), File)) { | |
47 Err = SMDiagnostic(Filename, SourceMgr::DK_Error, | |
48 "Could not open input file: " + ec.message()); | |
49 return 0; | |
50 } | |
51 | |
52 return ParseAssembly(File.take(), 0, Err, Context); | |
53 } | |
54 | |
55 Module *llvm::ParseAssemblyString(const char *AsmString, Module *M, | |
56 SMDiagnostic &Err, LLVMContext &Context) { | |
57 MemoryBuffer *F = | |
58 MemoryBuffer::getMemBuffer(StringRef(AsmString, strlen(AsmString)), | |
59 "<string>"); | |
60 | |
61 return ParseAssembly(F, M, Err, Context); | |
62 } |