aboutsummaryrefslogtreecommitdiff
path: root/lib/parsers/llvm-pass-dump-parser.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/parsers/llvm-pass-dump-parser.ts')
-rw-r--r--lib/parsers/llvm-pass-dump-parser.ts12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/parsers/llvm-pass-dump-parser.ts b/lib/parsers/llvm-pass-dump-parser.ts
index 5e1704e84..ef4ae12b9 100644
--- a/lib/parsers/llvm-pass-dump-parser.ts
+++ b/lib/parsers/llvm-pass-dump-parser.ts
@@ -84,6 +84,7 @@ export class LlvmPassDumpParser {
lineFilters: RegExp[];
debugInfoFilters: RegExp[];
debugInfoLineFilters: RegExp[];
+ metadataLineFilters: RegExp[];
irDumpHeader: RegExp;
machineCodeDumpHeader: RegExp;
functionDefine: RegExp;
@@ -119,6 +120,12 @@ export class LlvmPassDumpParser {
];
this.debugInfoLineFilters = [
/,? !dbg !\d+/, // instruction/function debug metadata
+ /,? debug-location !\d+/, // Direct source locations like 'example.cpp:8:1' not filtered
+ ];
+
+ // Conditionally enabled by `filterIRMetadata`
+ this.metadataLineFilters = [
+ /,?(?: ![\d.A-Za-z]+){2}/, // any instruction metadata
];
// Ir dump headers look like "*** IR Dump After XYZ ***"
@@ -454,13 +461,16 @@ export class LlvmPassDumpParser {
}
applyIrFilters(ir: ResultLine[], llvmOptPipelineOptions: LLVMOptPipelineBackendOptions) {
- // Additional filters conditionally enabled by `filterDebugInfo`
+ // Additional filters conditionally enabled by `filterDebugInfo`/`filterIRMetadata`
let filters = this.filters;
let lineFilters = this.lineFilters;
if (llvmOptPipelineOptions.filterDebugInfo) {
filters = filters.concat(this.debugInfoFilters);
lineFilters = lineFilters.concat(this.debugInfoLineFilters);
}
+ if (llvmOptPipelineOptions.filterIRMetadata) {
+ lineFilters = lineFilters.concat(this.metadataLineFilters);
+ }
return (
ir