From db9b4f48b0e7d1574711466a32b5dacefd86c22d Mon Sep 17 00:00:00 2001 From: Ofek Date: Sun, 6 Nov 2022 19:22:47 +0200 Subject: [PATCH] Add `Hide metadata` option to LLVM pipeline (#4243) --- lib/parsers/llvm-pass-dump-parser.ts | 12 ++++++++- static/panes/llvm-opt-pipeline.ts | 2 ++ test/llvm-pass-dump-parser-tests.js | 26 +++++++++++++++++++ .../llvm-opt-pipeline-output.interfaces.ts | 1 + views/templates/panes/llvm-opt-pipeline.pug | 5 ++-- 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/lib/parsers/llvm-pass-dump-parser.ts b/lib/parsers/llvm-pass-dump-parser.ts index 5e1704e84f8..ef4ae12b97a 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 diff --git a/static/panes/llvm-opt-pipeline.ts b/static/panes/llvm-opt-pipeline.ts index 0367ea6935e..8ca27ee135c 100644 --- a/static/panes/llvm-opt-pipeline.ts +++ b/static/panes/llvm-opt-pipeline.ts @@ -64,6 +64,7 @@ export class LLVMOptPipeline extends MonacoPane