@@ -148,7 +148,8 @@ class CodeRegionGenerator {
148
148
CodeRegionGenerator (const CodeRegionGenerator &) = delete ;
149
149
CodeRegionGenerator &operator =(const CodeRegionGenerator &) = delete ;
150
150
virtual Expected<const CodeRegions &>
151
- parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP) = 0 ;
151
+ parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP,
152
+ bool SkipUnsupportedInstructions) = 0 ;
152
153
153
154
public:
154
155
CodeRegionGenerator () {}
@@ -164,7 +165,8 @@ class AnalysisRegionGenerator : public virtual CodeRegionGenerator {
164
165
AnalysisRegionGenerator (llvm::SourceMgr &SM) : Regions(SM) {}
165
166
166
167
virtual Expected<const AnalysisRegions &>
167
- parseAnalysisRegions (const std::unique_ptr<MCInstPrinter> &IP) = 0 ;
168
+ parseAnalysisRegions (const std::unique_ptr<MCInstPrinter> &IP,
169
+ bool SkipUnsupportedInstructions) = 0 ;
168
170
};
169
171
170
172
// / Abstract CodeRegionGenerator with InstrumentRegionsRegions member
@@ -176,7 +178,8 @@ class InstrumentRegionGenerator : public virtual CodeRegionGenerator {
176
178
InstrumentRegionGenerator (llvm::SourceMgr &SM) : Regions(SM) {}
177
179
178
180
virtual Expected<const InstrumentRegions &>
179
- parseInstrumentRegions (const std::unique_ptr<MCInstPrinter> &IP) = 0 ;
181
+ parseInstrumentRegions (const std::unique_ptr<MCInstPrinter> &IP,
182
+ bool SkipUnsupportedInstructions) = 0 ;
180
183
};
181
184
182
185
// / This abstract class is responsible for parsing input ASM and
@@ -202,7 +205,8 @@ class AsmCodeRegionGenerator : public virtual CodeRegionGenerator {
202
205
203
206
unsigned getAssemblerDialect () const { return AssemblerDialect; }
204
207
Expected<const CodeRegions &>
205
- parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP) override ;
208
+ parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP,
209
+ bool SkipUnsupportedInstructions) override ;
206
210
};
207
211
208
212
class AsmAnalysisRegionGenerator final : public AnalysisRegionGenerator,
@@ -222,17 +226,21 @@ class AsmAnalysisRegionGenerator final : public AnalysisRegionGenerator,
222
226
MCStreamerWrapper *getMCStreamer () override { return &Streamer; }
223
227
224
228
Expected<const AnalysisRegions &>
225
- parseAnalysisRegions (const std::unique_ptr<MCInstPrinter> &IP) override {
226
- Expected<const CodeRegions &> RegionsOrErr = parseCodeRegions (IP);
229
+ parseAnalysisRegions (const std::unique_ptr<MCInstPrinter> &IP,
230
+ bool SkipUnsupportedInstructions) override {
231
+ Expected<const CodeRegions &> RegionsOrErr =
232
+ parseCodeRegions (IP, SkipUnsupportedInstructions);
227
233
if (!RegionsOrErr)
228
234
return RegionsOrErr.takeError ();
229
235
else
230
236
return static_cast <const AnalysisRegions &>(*RegionsOrErr);
231
237
}
232
238
233
239
Expected<const CodeRegions &>
234
- parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP) override {
235
- return AsmCodeRegionGenerator::parseCodeRegions (IP);
240
+ parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP,
241
+ bool SkipUnsupportedInstructions) override {
242
+ return AsmCodeRegionGenerator::parseCodeRegions (
243
+ IP, SkipUnsupportedInstructions);
236
244
}
237
245
};
238
246
@@ -254,17 +262,21 @@ class AsmInstrumentRegionGenerator final : public InstrumentRegionGenerator,
254
262
MCStreamerWrapper *getMCStreamer () override { return &Streamer; }
255
263
256
264
Expected<const InstrumentRegions &>
257
- parseInstrumentRegions (const std::unique_ptr<MCInstPrinter> &IP) override {
258
- Expected<const CodeRegions &> RegionsOrErr = parseCodeRegions (IP);
265
+ parseInstrumentRegions (const std::unique_ptr<MCInstPrinter> &IP,
266
+ bool SkipUnsupportedInstructions) override {
267
+ Expected<const CodeRegions &> RegionsOrErr =
268
+ parseCodeRegions (IP, SkipUnsupportedInstructions);
259
269
if (!RegionsOrErr)
260
270
return RegionsOrErr.takeError ();
261
271
else
262
272
return static_cast <const InstrumentRegions &>(*RegionsOrErr);
263
273
}
264
274
265
275
Expected<const CodeRegions &>
266
- parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP) override {
267
- return AsmCodeRegionGenerator::parseCodeRegions (IP);
276
+ parseCodeRegions (const std::unique_ptr<MCInstPrinter> &IP,
277
+ bool SkipUnsupportedInstructions) override {
278
+ return AsmCodeRegionGenerator::parseCodeRegions (
279
+ IP, SkipUnsupportedInstructions);
268
280
}
269
281
};
270
282
0 commit comments