1 //===-- MSP430AttributeParser.h - MSP430 Attribute Parser -------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 /// 9 /// \file 10 /// This file contains support routines for parsing MSP430 ELF build attributes. 11 /// 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_SUPPORT_MSP430ATTRIBUTEPARSER_H 15 #define LLVM_SUPPORT_MSP430ATTRIBUTEPARSER_H 16 17 #include "llvm/Support/Compiler.h" 18 #include "llvm/Support/ELFAttrParserCompact.h" 19 #include "llvm/Support/MSP430Attributes.h" 20 21 namespace llvm { 22 class LLVM_ABI MSP430AttributeParser : public ELFCompactAttrParser { 23 struct DisplayHandler { 24 MSP430Attrs::AttrType Attribute; 25 Error (MSP430AttributeParser::*Routine)(MSP430Attrs::AttrType); 26 }; 27 static const std::array<DisplayHandler, 4> DisplayRoutines; 28 29 Error parseISA(MSP430Attrs::AttrType Tag); 30 Error parseCodeModel(MSP430Attrs::AttrType Tag); 31 Error parseDataModel(MSP430Attrs::AttrType Tag); 32 Error parseEnumSize(MSP430Attrs::AttrType Tag); 33 34 Error handler(uint64_t Tag, bool &Handled) override; 35 36 public: MSP430AttributeParser(ScopedPrinter * SW)37 MSP430AttributeParser(ScopedPrinter *SW) 38 : ELFCompactAttrParser(SW, MSP430Attrs::getMSP430AttributeTags(), 39 "mspabi") {} MSP430AttributeParser()40 MSP430AttributeParser() 41 : ELFCompactAttrParser(MSP430Attrs::getMSP430AttributeTags(), "mspabi") {} 42 }; 43 } // namespace llvm 44 45 #endif 46