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/ELFAttributeParser.h" 18 #include "llvm/Support/MSP430Attributes.h" 19 20 namespace llvm { 21 class MSP430AttributeParser : public ELFAttributeParser { 22 struct DisplayHandler { 23 MSP430Attrs::AttrType Attribute; 24 Error (MSP430AttributeParser::*Routine)(MSP430Attrs::AttrType); 25 }; 26 static const std::array<DisplayHandler, 4> DisplayRoutines; 27 28 Error parseISA(MSP430Attrs::AttrType Tag); 29 Error parseCodeModel(MSP430Attrs::AttrType Tag); 30 Error parseDataModel(MSP430Attrs::AttrType Tag); 31 Error parseEnumSize(MSP430Attrs::AttrType Tag); 32 33 Error handler(uint64_t Tag, bool &Handled) override; 34 35 public: 36 MSP430AttributeParser(ScopedPrinter *SW) 37 : ELFAttributeParser(SW, MSP430Attrs::getMSP430AttributeTags(), 38 "mspabi") {} 39 MSP430AttributeParser() 40 : ELFAttributeParser(MSP430Attrs::getMSP430AttributeTags(), "mspabi") {} 41 }; 42 } // namespace llvm 43 44 #endif 45