remove a dead bool.
[llvm/avr.git] / lib / Target / PIC16 / PIC16DebugInfo.h
blob54e27c7c33771e146679ce19d90bc6672b91ff89
1 //===-- PIC16DebugInfo.h - Interfaces for PIC16 Debug Information ============//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the helper functions for representing debug information.
12 //===----------------------------------------------------------------------===//
14 #ifndef PIC16DBG_H
15 #define PIC16DBG_H
17 #include "llvm/Analysis/DebugInfo.h"
18 #include "llvm/Module.h"
20 namespace llvm {
21 class MachineFunction;
22 class DebugLoc;
23 namespace PIC16Dbg {
24 enum VarType {
25 T_NULL,
26 T_VOID,
27 T_CHAR,
28 T_SHORT,
29 T_INT,
30 T_LONG,
31 T_FLOAT,
32 T_DOUBLE,
33 T_STRUCT,
34 T_UNION,
35 T_ENUM,
36 T_MOE,
37 T_UCHAR,
38 T_USHORT,
39 T_UINT,
40 T_ULONG
42 enum DerivedType {
43 DT_NONE,
44 DT_PTR,
45 DT_FCN,
46 DT_ARY
48 enum TypeSize {
49 S_BASIC = 5,
50 S_DERIVED = 3
52 enum DbgClass {
53 C_NULL,
54 C_AUTO,
55 C_EXT,
56 C_STAT,
57 C_REG,
58 C_EXTDEF,
59 C_LABEL,
60 C_ULABEL,
61 C_MOS,
62 C_ARG,
63 C_STRTAG,
64 C_MOU,
65 C_UNTAG,
66 C_TPDEF,
67 C_USTATIC,
68 C_ENTAG,
69 C_MOE,
70 C_REGPARM,
71 C_FIELD,
72 C_AUTOARG,
73 C_LASTENT,
74 C_BLOCK = 100,
75 C_FCN,
76 C_EOS,
77 C_FILE,
78 C_LINE,
79 C_ALIAS,
80 C_HIDDEN,
81 C_EOF,
82 C_LIST,
83 C_SECTION,
84 C_EFCN = 255
86 enum SymbolSize {
87 AuxSize =20
91 class formatted_raw_ostream;
93 class PIC16DbgInfo {
94 formatted_raw_ostream &O;
95 const MCAsmInfo *MAI;
96 std::string CurFile;
97 unsigned CurLine;
99 // EmitDebugDirectives is set if debug information is available. Default
100 // value for it is false.
101 bool EmitDebugDirectives;
103 public:
104 PIC16DbgInfo(formatted_raw_ostream &o, const MCAsmInfo *T)
105 : O(o), MAI(T) {
106 CurFile = "";
107 CurLine = 0;
108 EmitDebugDirectives = false;
111 void BeginModule (Module &M);
112 void BeginFunction (const MachineFunction &MF);
113 void ChangeDebugLoc (const MachineFunction &MF, const DebugLoc &DL,
114 bool IsInBeginFunction = false);
115 void EndFunction (const MachineFunction &MF);
116 void EndModule (Module &M);
119 private:
120 void SwitchToCU (MDNode *CU);
121 void SwitchToLine (unsigned Line, bool IsInBeginFunction = false);
123 void PopulateDebugInfo (DIType Ty, unsigned short &TypeNo, bool &HasAux,
124 int Aux[], std::string &TypeName);
125 void PopulateBasicTypeInfo (DIType Ty, unsigned short &TypeNo);
126 void PopulateDerivedTypeInfo (DIType Ty, unsigned short &TypeNo,
127 bool &HasAux, int Aux[],
128 std::string &TypeName);
130 void PopulateCompositeTypeInfo (DIType Ty, unsigned short &TypeNo,
131 bool &HasAux, int Aux[],
132 std::string &TypeName);
133 void PopulateArrayTypeInfo (DIType Ty, unsigned short &TypeNo,
134 bool &HasAux, int Aux[],
135 std::string &TypeName);
137 void PopulateStructOrUnionTypeInfo (DIType Ty, unsigned short &TypeNo,
138 bool &HasAux, int Aux[],
139 std::string &TypeName);
140 void PopulateEnumTypeInfo (DIType Ty, unsigned short &TypeNo);
142 unsigned GetTypeDebugNumber(std::string &Type);
143 short getStorageClass(DIGlobalVariable DIGV);
144 void EmitFunctBeginDI(const Function *F);
145 void EmitCompositeTypeDecls(Module &M);
146 void EmitCompositeTypeElements (DICompositeType CTy, std::string Suffix);
147 void EmitFunctEndDI(const Function *F, unsigned Line);
148 void EmitAuxEntry(const std::string VarName, int Aux[],
149 int num = PIC16Dbg::AuxSize, std::string TagName = "");
150 inline void EmitSymbol(std::string Name, short Class,
151 unsigned short Type = PIC16Dbg::T_NULL,
152 unsigned long Value = 0);
153 void EmitVarDebugInfo(Module &M);
154 void EmitEOF();
156 } // end namespace llvm;
157 #endif