Ignore:
Timestamp:
Apr 19, 2011, 11:12:07 PM (14 years ago)
Author:
Yuri Dario
Message:

clamav: update trunk to 0.97.

Location:
clamav/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • clamav/trunk

  • TabularUnified clamav/trunk/libclamav/c++/llvm/utils/TableGen/TableGen.cpp

    r189 r319  
    1919#include "AsmWriterEmitter.h"
    2020#include "CallingConvEmitter.h"
     21#include "ClangASTNodesEmitter.h"
     22#include "ClangAttrEmitter.h"
    2123#include "ClangDiagnosticsEmitter.h"
    2224#include "CodeEmitterGen.h"
     
    2931#include "IntrinsicEmitter.h"
    3032#include "LLVMCConfigurationEmitter.h"
     33#include "NeonEmitter.h"
    3134#include "OptParserEmitter.h"
    3235#include "Record.h"
    3336#include "RegisterInfoEmitter.h"
     37#include "ARMDecoderEmitter.h"
    3438#include "SubtargetEmitter.h"
    3539#include "TGParser.h"
    3640#include "llvm/Support/CommandLine.h"
    37 #include "llvm/Support/FileUtilities.h"
    3841#include "llvm/Support/MemoryBuffer.h"
    3942#include "llvm/Support/PrettyStackTrace.h"
     
    4952  GenRegisterEnums, GenRegister, GenRegisterHeader,
    5053  GenInstrEnums, GenInstrs, GenAsmWriter, GenAsmMatcher,
     54  GenARMDecoder,
    5155  GenDisassembler,
    5256  GenCallingConv,
     57  GenClangAttrClasses,
     58  GenClangAttrImpl,
     59  GenClangAttrList,
     60  GenClangAttrPCHRead,
     61  GenClangAttrPCHWrite,
    5362  GenClangDiagsDefs,
    5463  GenClangDiagGroups,
     64  GenClangDeclNodes,
     65  GenClangStmtNodes,
    5566  GenDAGISel,
    5667  GenFastISel,
     
    6071  GenTgtIntrinsic,
    6172  GenLLVMCConf,
    62   GenEDHeader, GenEDInfo,
     73  GenEDInfo,
     74  GenArmNeon,
     75  GenArmNeonSema,
    6376  PrintEnums
    6477};
     
    8598                    clEnumValN(GenAsmWriter, "gen-asm-writer",
    8699                               "Generate assembly writer"),
     100                    clEnumValN(GenARMDecoder, "gen-arm-decoder",
     101                               "Generate decoders for ARM/Thumb"),
    87102                    clEnumValN(GenDisassembler, "gen-disassembler",
    88103                               "Generate disassembler"),
     
    103118                    clEnumValN(GenTgtIntrinsic, "gen-tgt-intrinsic",
    104119                               "Generate target intrinsic information"),
     120                    clEnumValN(GenClangAttrClasses, "gen-clang-attr-classes",
     121                               "Generate clang attribute clases"),
     122                    clEnumValN(GenClangAttrImpl, "gen-clang-attr-impl",
     123                               "Generate clang attribute implementations"),
     124                    clEnumValN(GenClangAttrList, "gen-clang-attr-list",
     125                               "Generate a clang attribute list"),
     126                    clEnumValN(GenClangAttrPCHRead, "gen-clang-attr-pch-read",
     127                               "Generate clang PCH attribute reader"),
     128                    clEnumValN(GenClangAttrPCHWrite, "gen-clang-attr-pch-write",
     129                               "Generate clang PCH attribute writer"),
    105130                    clEnumValN(GenClangDiagsDefs, "gen-clang-diags-defs",
    106131                               "Generate Clang diagnostics definitions"),
    107132                    clEnumValN(GenClangDiagGroups, "gen-clang-diag-groups",
    108133                               "Generate Clang diagnostic groups"),
     134                    clEnumValN(GenClangDeclNodes, "gen-clang-decl-nodes",
     135                               "Generate Clang AST statement nodes"),
     136                    clEnumValN(GenClangStmtNodes, "gen-clang-stmt-nodes",
     137                               "Generate Clang AST statement nodes"),
    109138                    clEnumValN(GenLLVMCConf, "gen-llvmc",
    110139                               "Generate LLVMC configuration library"),
    111                     clEnumValN(GenEDHeader, "gen-enhanced-disassembly-header",
    112                                "Generate enhanced disassembly info header"),
    113140                    clEnumValN(GenEDInfo, "gen-enhanced-disassembly-info",
    114141                               "Generate enhanced disassembly info"),
     142                    clEnumValN(GenArmNeon, "gen-arm-neon",
     143                               "Generate arm_neon.h for clang"),
     144                    clEnumValN(GenArmNeonSema, "gen-arm-neon-sema",
     145                               "Generate ARM NEON sema support for clang"),
    115146                    clEnumValN(PrintEnums, "print-enums",
    116147                               "Print enum values for a class"),
     
    131162  IncludeDirs("I", cl::desc("Directory of include files"),
    132163              cl::value_desc("directory"), cl::Prefix);
    133  
     164
    134165  cl::opt<std::string>
    135166  ClangComponent("clang-component",
     
    158189  MemoryBuffer *F = MemoryBuffer::getFileOrSTDIN(Filename.c_str(), &ErrorStr);
    159190  if (F == 0) {
    160     errs() << "Could not open input file '" << Filename << "': " 
     191    errs() << "Could not open input file '" << Filename << "': "
    161192           << ErrorStr <<"\n";
    162193    return true;
    163194  }
    164  
     195
    165196  // Tell SrcMgr about this buffer, which is what TGParser will pick up.
    166197  SrcMgr.AddNewSourceBuffer(F, SMLoc());
     
    169200  // it later.
    170201  SrcMgr.setIncludeDirs(IncludeDirs);
    171  
     202
    172203  TGParser Parser(SrcMgr);
    173204
     
    180211  cl::ParseCommandLineOptions(argc, argv);
    181212
    182  
     213
    183214  // Parse the input file.
    184215  if (ParseFile(InputFilename, IncludeDirs, SrcMgr))
    185216    return 1;
    186217
    187   raw_ostream *Out = &outs();
    188   if (OutputFilename != "-") {
    189     std::string Error;
    190     Out = new raw_fd_ostream(OutputFilename.c_str(), Error);
    191 
    192     if (!Error.empty()) {
    193       errs() << argv[0] << ": error opening " << OutputFilename
    194              << ":" << Error << "\n";
    195       return 1;
    196     }
    197 
    198     // Make sure the file gets removed if *gasp* tablegen crashes...
    199     sys::RemoveFileOnSignal(sys::Path(OutputFilename));
     218  std::string Error;
     219  tool_output_file Out(OutputFilename.c_str(), Error);
     220  if (!Error.empty()) {
     221    errs() << argv[0] << ": error opening " << OutputFilename
     222           << ":" << Error << "\n";
     223    return 1;
    200224  }
    201225
     
    203227    switch (Action) {
    204228    case PrintRecords:
    205       *Out << Records;           // No argument, dump all contents
     229      Out.os() << Records;           // No argument, dump all contents
    206230      break;
    207231    case GenEmitter:
    208       CodeEmitterGen(Records).run(*Out);
     232      CodeEmitterGen(Records).run(Out.os());
    209233      break;
    210234
    211235    case GenRegisterEnums:
    212       RegisterInfoEmitter(Records).runEnums(*Out);
     236      RegisterInfoEmitter(Records).runEnums(Out.os());
    213237      break;
    214238    case GenRegister:
    215       RegisterInfoEmitter(Records).run(*Out);
     239      RegisterInfoEmitter(Records).run(Out.os());
    216240      break;
    217241    case GenRegisterHeader:
    218       RegisterInfoEmitter(Records).runHeader(*Out);
     242      RegisterInfoEmitter(Records).runHeader(Out.os());
    219243      break;
    220244    case GenInstrEnums:
    221       InstrEnumEmitter(Records).run(*Out);
     245      InstrEnumEmitter(Records).run(Out.os());
    222246      break;
    223247    case GenInstrs:
    224       InstrInfoEmitter(Records).run(*Out);
     248      InstrInfoEmitter(Records).run(Out.os());
    225249      break;
    226250    case GenCallingConv:
    227       CallingConvEmitter(Records).run(*Out);
    228       break;
    229     case GenAsmWriter:
    230       AsmWriterEmitter(Records).run(*Out);
     251      CallingConvEmitter(Records).run(Out.os());
     252      break;
     253/*    case GenAsmWriter:
     254      AsmWriterEmitter(Records).run(Out.os());
     255      break;*/
     256    case GenARMDecoder:
     257      ARMDecoderEmitter(Records).run(Out.os());
    231258      break;
    232259    case GenAsmMatcher:
    233       AsmMatcherEmitter(Records).run(*Out);
     260      AsmMatcherEmitter(Records).run(Out.os());
     261      break;
     262    case GenClangAttrClasses:
     263      ClangAttrClassEmitter(Records).run(Out.os());
     264      break;
     265    case GenClangAttrImpl:
     266      ClangAttrImplEmitter(Records).run(Out.os());
     267      break;
     268    case GenClangAttrList:
     269      ClangAttrListEmitter(Records).run(Out.os());
     270      break;
     271    case GenClangAttrPCHRead:
     272      ClangAttrPCHReadEmitter(Records).run(Out.os());
     273      break;
     274    case GenClangAttrPCHWrite:
     275      ClangAttrPCHWriteEmitter(Records).run(Out.os());
    234276      break;
    235277    case GenClangDiagsDefs:
    236       ClangDiagsDefsEmitter(Records, ClangComponent).run(*Out);
     278      ClangDiagsDefsEmitter(Records, ClangComponent).run(Out.os());
    237279      break;
    238280    case GenClangDiagGroups:
    239       ClangDiagGroupsEmitter(Records).run(*Out);
    240       break;
    241     case GenDisassembler:
    242       DisassemblerEmitter(Records).run(*Out);
    243       break;
     281      ClangDiagGroupsEmitter(Records).run(Out.os());
     282      break;
     283    case GenClangDeclNodes:
     284      ClangASTNodesEmitter(Records, "Decl", "Decl").run(Out.os());
     285      ClangDeclContextEmitter(Records).run(Out.os());
     286      break;
     287    case GenClangStmtNodes:
     288      ClangASTNodesEmitter(Records, "Stmt", "").run(Out.os());
     289      break;
     290/*    case GenDisassembler:
     291      DisassemblerEmitter(Records).run(Out.os());
     292      break;*/
    244293    case GenOptParserDefs:
    245       OptParserEmitter(Records, true).run(*Out);
     294      OptParserEmitter(Records, true).run(Out.os());
    246295      break;
    247296    case GenOptParserImpl:
    248       OptParserEmitter(Records, false).run(*Out);
     297      OptParserEmitter(Records, false).run(Out.os());
    249298      break;
    250299    case GenDAGISel:
    251       DAGISelEmitter(Records).run(*Out);
     300      DAGISelEmitter(Records).run(Out.os());
    252301      break;
    253302    case GenFastISel:
    254       FastISelEmitter(Records).run(*Out);
     303      FastISelEmitter(Records).run(Out.os());
    255304      break;
    256305    case GenSubtarget:
    257       SubtargetEmitter(Records).run(*Out);
     306      SubtargetEmitter(Records).run(Out.os());
    258307      break;
    259308    case GenIntrinsic:
    260       IntrinsicEmitter(Records).run(*Out);
     309      IntrinsicEmitter(Records).run(Out.os());
    261310      break;
    262311    case GenTgtIntrinsic:
    263       IntrinsicEmitter(Records, true).run(*Out);
     312      IntrinsicEmitter(Records, true).run(Out.os());
    264313      break;
    265314    case GenLLVMCConf:
    266       LLVMCConfigurationEmitter(Records).run(*Out);
    267       break;
    268     case GenEDHeader:
    269       EDEmitter(Records).runHeader(*Out);
     315      LLVMCConfigurationEmitter(Records).run(Out.os());
    270316      break;
    271317    case GenEDInfo:
    272       EDEmitter(Records).run(*Out);
     318      EDEmitter(Records).run(Out.os());
     319      break;
     320    case GenArmNeon:
     321      NeonEmitter(Records).run(Out.os());
     322      break;
     323    case GenArmNeonSema:
     324      NeonEmitter(Records).runHeader(Out.os());
    273325      break;
    274326    case PrintEnums:
     
    276328      std::vector<Record*> Recs = Records.getAllDerivedDefinitions(Class);
    277329      for (unsigned i = 0, e = Recs.size(); i != e; ++i)
    278         *Out << Recs[i]->getName() << ", ";
    279       *Out << "\n";
     330        Out.os() << Recs[i]->getName() << ", ";
     331      Out.os() << "\n";
    280332      break;
    281333    }
     
    284336      return 1;
    285337    }
    286    
    287     if (Out != &outs())
    288       delete Out;                               // Close the file
     338
     339    // Declare success.
     340    Out.keep();
    289341    return 0;
    290    
     342
    291343  } catch (const TGError &Error) {
    292344    errs() << argv[0] << ": error:\n";
    293345    PrintError(Error.getLoc(), Error.getMessage());
    294    
     346
    295347  } catch (const std::string &Error) {
    296348    errs() << argv[0] << ": " << Error << "\n";
     
    300352    errs() << argv[0] << ": Unknown unexpected exception occurred.\n";
    301353  }
    302  
    303   if (Out != &outs()) {
    304     delete Out;                             // Close the file
    305     std::remove(OutputFilename.c_str());    // Remove the file, it's broken
    306   }
     354
    307355  return 1;
    308356}
Note: See TracChangeset for help on using the changeset viewer.