Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: src/IceGlobalInits.cpp

Issue 686913005: Turn off dump/emit routines when building minimal subzero. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceGlobalInits.cpp - Global declarations ---------------===// 1 //===- subzero/src/IceGlobalInits.cpp - Global declarations ---------------===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This file implements the notion of function declarations, global 10 // This file implements the notion of function declarations, global
11 // variable declarations, and the corresponding variable initializers 11 // variable declarations, and the corresponding variable initializers
12 // in Subzero. 12 // in Subzero.
13 // 13 //
14 //===----------------------------------------------------------------------===// 14 //===----------------------------------------------------------------------===//
15 15
16 #include "llvm/ADT/STLExtras.h" 16 #include "llvm/ADT/STLExtras.h"
17 #include "llvm/IR/Function.h" 17 #include "llvm/IR/Function.h"
18 #include "llvm/IR/Value.h" 18 #include "llvm/IR/Value.h"
19 19
20 #include "IceDefs.h" 20 #include "IceDefs.h"
21 #include "IceGlobalContext.h" 21 #include "IceGlobalContext.h"
22 #include "IceGlobalInits.h" 22 #include "IceGlobalInits.h"
23 #include "IceTypes.h" 23 #include "IceTypes.h"
24 24
25 namespace { 25 namespace {
26 char hexdigit(unsigned X) { return X < 10 ? '0' + X : 'A' + X - 10; } 26 char hexdigit(unsigned X) { return X < 10 ? '0' + X : 'A' + X - 10; }
27 27
28 void dumpLinkage(Ice::Ostream &Stream, 28 void dumpLinkage(Ice::Ostream &Stream,
29 llvm::GlobalValue::LinkageTypes Linkage) { 29 llvm::GlobalValue::LinkageTypes Linkage) {
30 if (!ALLOW_DUMP)
31 return;
30 switch (Linkage) { 32 switch (Linkage) {
31 case llvm::GlobalValue::ExternalLinkage: 33 case llvm::GlobalValue::ExternalLinkage:
32 Stream << "external"; 34 Stream << "external";
33 return; 35 return;
34 case llvm::GlobalValue::InternalLinkage: 36 case llvm::GlobalValue::InternalLinkage:
35 Stream << "internal"; 37 Stream << "internal";
36 return; 38 return;
37 default: 39 default:
38 break; 40 break;
39 } 41 }
40 std::string Buffer; 42 std::string Buffer;
41 llvm::raw_string_ostream StrBuf(Buffer); 43 llvm::raw_string_ostream StrBuf(Buffer);
42 StrBuf << "Unknown linkage value: " << Linkage; 44 StrBuf << "Unknown linkage value: " << Linkage;
43 llvm::report_fatal_error(StrBuf.str()); 45 llvm::report_fatal_error(StrBuf.str());
44 } 46 }
45 47
46 void dumpCallingConv(Ice::Ostream &, llvm::CallingConv::ID CallingConv) { 48 void dumpCallingConv(Ice::Ostream &, llvm::CallingConv::ID CallingConv) {
49 if (!ALLOW_DUMP)
50 return;
47 if (CallingConv == llvm::CallingConv::C) 51 if (CallingConv == llvm::CallingConv::C)
48 return; 52 return;
49 std::string Buffer; 53 std::string Buffer;
50 llvm::raw_string_ostream StrBuf(Buffer); 54 llvm::raw_string_ostream StrBuf(Buffer);
51 StrBuf << "Unknown calling convention: " << CallingConv; 55 StrBuf << "Unknown calling convention: " << CallingConv;
52 llvm::report_fatal_error(StrBuf.str()); 56 llvm::report_fatal_error(StrBuf.str());
53 } 57 }
54 58
55 } // end of anonymous namespace 59 } // end of anonymous namespace
56 60
57 namespace Ice { 61 namespace Ice {
58 62
59 FunctionDeclaration * 63 FunctionDeclaration *
60 FunctionDeclaration::create(GlobalContext *Ctx, const FuncSigType &Signature, 64 FunctionDeclaration::create(GlobalContext *Ctx, const FuncSigType &Signature,
61 llvm::CallingConv::ID CallingConv, 65 llvm::CallingConv::ID CallingConv,
62 llvm::GlobalValue::LinkageTypes Linkage, 66 llvm::GlobalValue::LinkageTypes Linkage,
63 bool IsProto) { 67 bool IsProto) {
64 return Ctx->newFunctionDeclaration(&Signature, CallingConv, Linkage, IsProto); 68 return Ctx->newFunctionDeclaration(&Signature, CallingConv, Linkage, IsProto);
65 } 69 }
66 70
67 void FunctionDeclaration::dumpType(Ostream &Stream) const { 71 void FunctionDeclaration::dumpType(Ostream &Stream) const {
72 if (!ALLOW_DUMP)
73 return;
68 Stream << Signature; 74 Stream << Signature;
69 } 75 }
70 76
71 void FunctionDeclaration::dump(GlobalContext *Ctx, Ostream &Stream) const { 77 void FunctionDeclaration::dump(GlobalContext *Ctx, Ostream &Stream) const {
78 if (!ALLOW_DUMP)
79 return;
72 if (IsProto) 80 if (IsProto)
73 Stream << "declare "; 81 Stream << "declare ";
74 ::dumpLinkage(Stream, Linkage); 82 ::dumpLinkage(Stream, Linkage);
75 ::dumpCallingConv(Stream, CallingConv); 83 ::dumpCallingConv(Stream, CallingConv);
76 Stream << Signature.getReturnType() << " @" 84 Stream << Signature.getReturnType() << " @"
77 << (Ctx ? Ctx->mangleName(Name) : Name) << "("; 85 << (Ctx ? Ctx->mangleName(Name) : Name) << "(";
78 bool IsFirst = true; 86 bool IsFirst = true;
79 for (Type ArgTy : Signature.getArgList()) { 87 for (Type ArgTy : Signature.getArgList()) {
80 if (IsFirst) 88 if (IsFirst)
81 IsFirst = false; 89 IsFirst = false;
82 else 90 else
83 Stream << ", "; 91 Stream << ", ";
84 Stream << ArgTy; 92 Stream << ArgTy;
85 } 93 }
86 Stream << ")"; 94 Stream << ")";
87 } 95 }
88 96
89 VariableDeclaration *VariableDeclaration::create(GlobalContext *Ctx) { 97 VariableDeclaration *VariableDeclaration::create(GlobalContext *Ctx) {
90 return Ctx->newVariableDeclaration(); 98 return Ctx->newVariableDeclaration();
91 } 99 }
92 100
93 VariableDeclaration::~VariableDeclaration() { 101 VariableDeclaration::~VariableDeclaration() {
94 llvm::DeleteContainerPointers(Initializers); 102 llvm::DeleteContainerPointers(Initializers);
95 } 103 }
96 104
97 void VariableDeclaration::dumpType(Ostream &Stream) const { 105 void VariableDeclaration::dumpType(Ostream &Stream) const {
106 if (!ALLOW_DUMP)
107 return;
98 if (Initializers.size() == 1) { 108 if (Initializers.size() == 1) {
99 Initializers.front()->dumpType(Stream); 109 Initializers.front()->dumpType(Stream);
100 } else { 110 } else {
101 Stream << "<{ "; 111 Stream << "<{ ";
102 bool IsFirst = true; 112 bool IsFirst = true;
103 for (Initializer *Init : Initializers) { 113 for (Initializer *Init : Initializers) {
104 if (IsFirst) { 114 if (IsFirst) {
105 IsFirst = false; 115 IsFirst = false;
106 } else { 116 } else {
107 Stream << ", "; 117 Stream << ", ";
108 } 118 }
109 Init->dumpType(Stream); 119 Init->dumpType(Stream);
110 } 120 }
111 Stream << " }>"; 121 Stream << " }>";
112 } 122 }
113 } 123 }
114 124
115 void VariableDeclaration::dump(GlobalContext *Ctx, Ostream &Stream) const { 125 void VariableDeclaration::dump(GlobalContext *Ctx, Ostream &Stream) const {
126 if (!ALLOW_DUMP)
127 return;
116 Stream << "@" << ((Ctx && !getSuppressMangling()) 128 Stream << "@" << ((Ctx && !getSuppressMangling())
117 ? Ctx->mangleName(Name) : Name) << " = "; 129 ? Ctx->mangleName(Name) : Name) << " = ";
118 ::dumpLinkage(Stream, Linkage); 130 ::dumpLinkage(Stream, Linkage);
119 Stream << " " << (IsConstant ? "constant" : "global") << " "; 131 Stream << " " << (IsConstant ? "constant" : "global") << " ";
120 132
121 // Add initializer. 133 // Add initializer.
122 if (Initializers.size() == 1) { 134 if (Initializers.size() == 1) {
123 Initializers.front()->dump(Stream); 135 Initializers.front()->dump(Stream);
124 } else { 136 } else {
125 dumpType(Stream); 137 dumpType(Stream);
(...skipping 10 matching lines...) Expand all
136 Stream << " }>"; 148 Stream << " }>";
137 } 149 }
138 150
139 // Add alignment. 151 // Add alignment.
140 if (Alignment > 0) 152 if (Alignment > 0)
141 Stream << ", align " << Alignment; 153 Stream << ", align " << Alignment;
142 Stream << "\n"; 154 Stream << "\n";
143 } 155 }
144 156
145 void VariableDeclaration::Initializer::dumpType(Ostream &Stream) const { 157 void VariableDeclaration::Initializer::dumpType(Ostream &Stream) const {
158 if (!ALLOW_DUMP)
159 return;
146 Stream << "[" << getNumBytes() << " x " << Ice::IceType_i8 << "]"; 160 Stream << "[" << getNumBytes() << " x " << Ice::IceType_i8 << "]";
147 } 161 }
148 162
149 void VariableDeclaration::DataInitializer::dump( 163 void VariableDeclaration::DataInitializer::dump(
150 GlobalContext *, Ostream &Stream) const { 164 GlobalContext *, Ostream &Stream) const {
165 if (!ALLOW_DUMP)
166 return;
151 dumpType(Stream); 167 dumpType(Stream);
152 Stream << " c\""; 168 Stream << " c\"";
153 // Code taken from PrintEscapedString() in AsmWriter.cpp. Keep 169 // Code taken from PrintEscapedString() in AsmWriter.cpp. Keep
154 // the strings in the same format as the .ll file for practical 170 // the strings in the same format as the .ll file for practical
155 // diffing. 171 // diffing.
156 for (uint8_t C : Contents) { 172 for (uint8_t C : Contents) {
157 if (isprint(C) && C != '\\' && C != '"') 173 if (isprint(C) && C != '\\' && C != '"')
158 Stream << C; 174 Stream << C;
159 else 175 else
160 Stream << '\\' << hexdigit(C >> 4) << hexdigit(C & 0x0F); 176 Stream << '\\' << hexdigit(C >> 4) << hexdigit(C & 0x0F);
161 } 177 }
162 Stream << "\""; 178 Stream << "\"";
163 } 179 }
164 180
165 void VariableDeclaration::ZeroInitializer::dump( 181 void VariableDeclaration::ZeroInitializer::dump(
166 GlobalContext *, Ostream &Stream) const { 182 GlobalContext *, Ostream &Stream) const {
183 if (!ALLOW_DUMP)
184 return;
167 dumpType(Stream); 185 dumpType(Stream);
168 Stream << " zeroinitializer"; 186 Stream << " zeroinitializer";
169 } 187 }
170 188
171 void VariableDeclaration::RelocInitializer::dumpType(Ostream &Stream) const { 189 void VariableDeclaration::RelocInitializer::dumpType(Ostream &Stream) const {
190 if (!ALLOW_DUMP)
191 return;
172 Stream << Ice::IceType_i32; 192 Stream << Ice::IceType_i32;
173 } 193 }
174 194
175 void VariableDeclaration::RelocInitializer::dump( 195 void VariableDeclaration::RelocInitializer::dump(
176 GlobalContext *Ctx, Ostream &Stream) const { 196 GlobalContext *Ctx, Ostream &Stream) const {
197 if (!ALLOW_DUMP)
198 return;
177 if (Offset != 0) { 199 if (Offset != 0) {
178 dumpType(Stream); 200 dumpType(Stream);
179 Stream << " add ("; 201 Stream << " add (";
180 } 202 }
181 dumpType(Stream); 203 dumpType(Stream);
182 Stream << " ptrtoint ("; 204 Stream << " ptrtoint (";
183 Declaration->dumpType(Stream); 205 Declaration->dumpType(Stream);
184 Stream << "* @"; 206 Stream << "* @";
185 if (Ctx) 207 if (Ctx)
186 Stream << Ctx->mangleName(Declaration->getName()); 208 Stream << Ctx->mangleName(Declaration->getName());
187 else 209 else
188 Stream << Declaration->getName(); 210 Stream << Declaration->getName();
189 Stream << " to "; 211 Stream << " to ";
190 dumpType(Stream); 212 dumpType(Stream);
191 Stream << ")"; 213 Stream << ")";
192 if (Offset != 0) { 214 if (Offset != 0) {
193 Stream << ", "; 215 Stream << ", ";
194 dumpType(Stream); 216 dumpType(Stream);
195 Stream << " " << Offset << ")"; 217 Stream << " " << Offset << ")";
196 } 218 }
197 } 219 }
198 220
199 } // end of namespace Ice 221 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceGlobalInits.h ('k') | src/IceInst.h » ('j') | tests_lit/reader_tests/alloca.ll » ('J')

Powered by Google App Engine
This is Rietveld 408576698