Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- ARMAttributeParser.h - ARM Attribute Information Printer -*- 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
#ifndef LLVM_SUPPORT_ARMATTRIBUTEPARSER_H
10
#define LLVM_SUPPORT_ARMATTRIBUTEPARSER_H
11
 
12
#include "ARMBuildAttributes.h"
13
#include "ELFAttributeParser.h"
14
#include "llvm/ADT/StringRef.h"
15
#include "llvm/Support/Error.h"
16
 
17
namespace llvm {
18
 
19
class ScopedPrinter;
20
 
21
class ARMAttributeParser : public ELFAttributeParser {
22
  struct DisplayHandler {
23
    ARMBuildAttrs::AttrType attribute;
24
    Error (ARMAttributeParser::*routine)(ARMBuildAttrs::AttrType);
25
  };
26
  static const DisplayHandler displayRoutines[];
27
 
28
  Error handler(uint64_t tag, bool &handled) override;
29
 
30
  Error stringAttribute(ARMBuildAttrs::AttrType tag);
31
 
32
  Error CPU_arch(ARMBuildAttrs::AttrType tag);
33
  Error CPU_arch_profile(ARMBuildAttrs::AttrType tag);
34
  Error ARM_ISA_use(ARMBuildAttrs::AttrType tag);
35
  Error THUMB_ISA_use(ARMBuildAttrs::AttrType tag);
36
  Error FP_arch(ARMBuildAttrs::AttrType tag);
37
  Error WMMX_arch(ARMBuildAttrs::AttrType tag);
38
  Error Advanced_SIMD_arch(ARMBuildAttrs::AttrType tag);
39
  Error MVE_arch(ARMBuildAttrs::AttrType tag);
40
  Error PCS_config(ARMBuildAttrs::AttrType tag);
41
  Error ABI_PCS_R9_use(ARMBuildAttrs::AttrType tag);
42
  Error ABI_PCS_RW_data(ARMBuildAttrs::AttrType tag);
43
  Error ABI_PCS_RO_data(ARMBuildAttrs::AttrType tag);
44
  Error ABI_PCS_GOT_use(ARMBuildAttrs::AttrType tag);
45
  Error ABI_PCS_wchar_t(ARMBuildAttrs::AttrType tag);
46
  Error ABI_FP_rounding(ARMBuildAttrs::AttrType tag);
47
  Error ABI_FP_denormal(ARMBuildAttrs::AttrType tag);
48
  Error ABI_FP_exceptions(ARMBuildAttrs::AttrType tag);
49
  Error ABI_FP_user_exceptions(ARMBuildAttrs::AttrType tag);
50
  Error ABI_FP_number_model(ARMBuildAttrs::AttrType tag);
51
  Error ABI_align_needed(ARMBuildAttrs::AttrType tag);
52
  Error ABI_align_preserved(ARMBuildAttrs::AttrType tag);
53
  Error ABI_enum_size(ARMBuildAttrs::AttrType tag);
54
  Error ABI_HardFP_use(ARMBuildAttrs::AttrType tag);
55
  Error ABI_VFP_args(ARMBuildAttrs::AttrType tag);
56
  Error ABI_WMMX_args(ARMBuildAttrs::AttrType tag);
57
  Error ABI_optimization_goals(ARMBuildAttrs::AttrType tag);
58
  Error ABI_FP_optimization_goals(ARMBuildAttrs::AttrType tag);
59
  Error compatibility(ARMBuildAttrs::AttrType tag);
60
  Error CPU_unaligned_access(ARMBuildAttrs::AttrType tag);
61
  Error FP_HP_extension(ARMBuildAttrs::AttrType tag);
62
  Error ABI_FP_16bit_format(ARMBuildAttrs::AttrType tag);
63
  Error MPextension_use(ARMBuildAttrs::AttrType tag);
64
  Error DIV_use(ARMBuildAttrs::AttrType tag);
65
  Error DSP_extension(ARMBuildAttrs::AttrType tag);
66
  Error T2EE_use(ARMBuildAttrs::AttrType tag);
67
  Error Virtualization_use(ARMBuildAttrs::AttrType tag);
68
  Error PAC_extension(ARMBuildAttrs::AttrType tag);
69
  Error BTI_extension(ARMBuildAttrs::AttrType tag);
70
  Error PACRET_use(ARMBuildAttrs::AttrType tag);
71
  Error BTI_use(ARMBuildAttrs::AttrType tag);
72
  Error nodefaults(ARMBuildAttrs::AttrType tag);
73
  Error also_compatible_with(ARMBuildAttrs::AttrType tag);
74
 
75
public:
76
  ARMAttributeParser(ScopedPrinter *sw)
77
      : ELFAttributeParser(sw, ARMBuildAttrs::getARMAttributeTags(), "aeabi") {}
78
  ARMAttributeParser()
79
      : ELFAttributeParser(ARMBuildAttrs::getARMAttributeTags(), "aeabi") {}
80
};
81
}
82
 
83
#endif