diff options
Diffstat (limited to 'lib/parsers/llvm-pass-dump-parser.ts')
-rw-r--r-- | lib/parsers/llvm-pass-dump-parser.ts | 12 |
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 |