xref: /freebsd/contrib/llvm-project/llvm/include/llvm/Support/MSP430AttributeParser.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
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