@@ -35,13 +35,16 @@ ASTConsumer *AnalysisAction::CreateASTConsumer(CompilerInstance &CI,
35
35
36
36
ASTConsumer *ASTPrintAction::CreateASTConsumer (CompilerInstance &CI,
37
37
llvm::StringRef InFile) {
38
- return CreateASTPrinter (CI.createDefaultOutputFile (false , InFile));
38
+ if (llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , InFile))
39
+ return CreateASTPrinter (OS);
40
+ return 0 ;
39
41
}
40
42
41
43
ASTConsumer *ASTPrintXMLAction::CreateASTConsumer (CompilerInstance &CI,
42
44
llvm::StringRef InFile) {
43
- return CreateASTPrinterXML (CI.createDefaultOutputFile (false , InFile,
44
- " xml" ));
45
+ if (llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , InFile, " xml" ))
46
+ return CreateASTPrinterXML (OS);
47
+ return 0 ;
45
48
}
46
49
47
50
ASTConsumer *ASTDumpAction::CreateASTConsumer (CompilerInstance &CI,
@@ -74,6 +77,9 @@ ASTConsumer *GeneratePCHAction::CreateASTConsumer(CompilerInstance &CI,
74
77
}
75
78
76
79
llvm::raw_ostream *OS = CI.createDefaultOutputFile (true , InFile);
80
+ if (!OS)
81
+ return 0 ;
82
+
77
83
if (CI.getFrontendOpts ().RelocatablePCH )
78
84
return CreatePCHGenerator (CI.getPreprocessor (), OS, Sysroot.c_str ());
79
85
@@ -82,8 +88,9 @@ ASTConsumer *GeneratePCHAction::CreateASTConsumer(CompilerInstance &CI,
82
88
83
89
ASTConsumer *HTMLPrintAction::CreateASTConsumer (CompilerInstance &CI,
84
90
llvm::StringRef InFile) {
85
- return CreateHTMLPrinter (CI.createDefaultOutputFile (false , InFile),
86
- CI.getPreprocessor ());
91
+ if (llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , InFile))
92
+ return CreateHTMLPrinter (OS, CI.getPreprocessor ());
93
+ return 0 ;
87
94
}
88
95
89
96
ASTConsumer *InheritanceViewAction::CreateASTConsumer (CompilerInstance &CI,
@@ -140,10 +147,11 @@ void FixItAction::EndSourceFileAction() {
140
147
141
148
ASTConsumer *RewriteObjCAction::CreateASTConsumer (CompilerInstance &CI,
142
149
llvm::StringRef InFile) {
143
- return CreateObjCRewriter (InFile,
144
- CI.createDefaultOutputFile (true , InFile, " cpp" ),
145
- CI.getDiagnostics (), CI.getLangOpts (),
146
- CI.getDiagnosticOpts ().NoRewriteMacros );
150
+ if (llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , InFile, " cpp" ))
151
+ return CreateObjCRewriter (InFile, OS,
152
+ CI.getDiagnostics (), CI.getLangOpts (),
153
+ CI.getDiagnosticOpts ().NoRewriteMacros );
154
+ return 0 ;
147
155
}
148
156
149
157
ASTConsumer *RewriteBlocksAction::CreateASTConsumer (CompilerInstance &CI,
@@ -162,12 +170,21 @@ ASTConsumer *CodeGenAction::CreateASTConsumer(CompilerInstance &CI,
162
170
llvm::StringRef InFile) {
163
171
BackendAction BA = static_cast <BackendAction>(Act);
164
172
llvm::OwningPtr<llvm::raw_ostream> OS;
165
- if (BA == Backend_EmitAssembly)
173
+ switch (BA) {
174
+ case Backend_EmitAssembly:
166
175
OS.reset (CI.createDefaultOutputFile (false , InFile, " s" ));
167
- else if (BA == Backend_EmitLL)
176
+ break ;
177
+ case Backend_EmitLL:
168
178
OS.reset (CI.createDefaultOutputFile (false , InFile, " ll" ));
169
- else if (BA == Backend_EmitBC)
179
+ break ;
180
+ case Backend_EmitBC:
170
181
OS.reset (CI.createDefaultOutputFile (true , InFile, " bc" ));
182
+ break ;
183
+ case Backend_EmitNothing:
184
+ break ;
185
+ }
186
+ if (BA != Backend_EmitNothing && !OS)
187
+ return 0 ;
171
188
172
189
return CreateBackendConsumer (BA, CI.getDiagnostics (), CI.getLangOpts (),
173
190
CI.getCodeGenOpts (), CI.getTargetOpts (),
@@ -228,6 +245,8 @@ void GeneratePTHAction::ExecuteAction() {
228
245
}
229
246
llvm::raw_fd_ostream *OS =
230
247
CI.createDefaultOutputFile (true , getCurrentFile ());
248
+ if (!OS) return ;
249
+
231
250
CacheTokens (CI.getPreprocessor (), OS);
232
251
}
233
252
@@ -255,6 +274,8 @@ void PrintParseAction::ExecuteAction() {
255
274
CompilerInstance &CI = getCompilerInstance ();
256
275
Preprocessor &PP = getCompilerInstance ().getPreprocessor ();
257
276
llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , getCurrentFile ());
277
+ if (!OS) return ;
278
+
258
279
llvm::OwningPtr<Action> PA (CreatePrintParserActionsAction (PP, OS));
259
280
260
281
Parser P (PP, *PA);
@@ -265,18 +286,24 @@ void PrintParseAction::ExecuteAction() {
265
286
void PrintPreprocessedAction::ExecuteAction () {
266
287
CompilerInstance &CI = getCompilerInstance ();
267
288
llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , getCurrentFile ());
289
+ if (!OS) return ;
290
+
268
291
DoPrintPreprocessedInput (CI.getPreprocessor (), OS,
269
292
CI.getPreprocessorOutputOpts ());
270
293
}
271
294
272
295
void RewriteMacrosAction::ExecuteAction () {
273
296
CompilerInstance &CI = getCompilerInstance ();
274
297
llvm::raw_ostream *OS = CI.createDefaultOutputFile (true , getCurrentFile ());
298
+ if (!OS) return ;
299
+
275
300
RewriteMacrosInInput (CI.getPreprocessor (), OS);
276
301
}
277
302
278
303
void RewriteTestAction::ExecuteAction () {
279
304
CompilerInstance &CI = getCompilerInstance ();
280
305
llvm::raw_ostream *OS = CI.createDefaultOutputFile (false , getCurrentFile ());
306
+ if (!OS) return ;
307
+
281
308
DoRewriteTest (CI.getPreprocessor (), OS);
282
309
}
0 commit comments