Repository: compiler-explorer/compiler-explorer
Pull request #7323 (2025-01-29 00:22:45)

Update to add Boost 1.87 support
<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE IT
Thanks for taking the time to improve CE. We really appreciate it.
  Before opening the PR, please make sure that the tests & linter pass their checks,
  by running `make check`.
  In the best case scenario, you are also adding tests to back up your changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->



Patch:
diff --git a/app.ts b/app.ts
index 73aea33ab..b0fd6a3e3 100755
--- a/app.ts
+++ b/app.ts
@@ -546,7 +546,7 @@ async function main() {
     const compileHandler = new CompileHandler(compilationEnvironment, awsProps);
     const storageType = getStorageTypeByKey(storageSolution);
     const storageHandler = new storageType(httpRoot, compilerProps, awsProps);
-    const compilerFinder = new CompilerFinder(compileHandler, compilerProps, awsProps, defArgs, clientOptionsHandler);
+    const compilerFinder = new CompilerFinder(compileHandler, compilerProps, defArgs, clientOptionsHandler);
 
     const isExecutionWorker = ceProps<boolean>('execqueue.is_worker', false);
     const healthCheckFilePath = ceProps('healthCheckFilePath', null) as string | null;
diff --git a/etc/config/c++.amazon.properties b/etc/config/c++.amazon.properties
index dfe116499..0e92d05d4 100644
--- a/etc/config/c++.amazon.properties
+++ b/etc/config/c++.amazon.properties
@@ -4043,7 +4043,7 @@ libs.blaze.versions.38.version=3.8
 libs.blaze.versions.38.path=/opt/compiler-explorer/libs/blaze/v3.8
 
 libs.boost.name=Boost
-libs.boost.versions=164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186
+libs.boost.versions=164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187
 libs.boost.url=https://www.boost.org
 libs.boost.versions.164.version=1.64.0
 libs.boost.versions.164.path=/opt/compiler-explorer/libs/boost_1_64_0
@@ -4096,6 +4096,10 @@ libs.boost.versions.186.version=1.86.0
 libs.boost.versions.186.packagedheaders=true
 libs.boost.versions.186.lookupname=boost_bin
 
+libs.boost.versions.187.version=1.87.0
+libs.boost.versions.187.packagedheaders=true
+libs.boost.versions.187.lookupname=boost_bin
+
 libs.bmulti.name=B-Multi
 libs.bmulti.url=https://gitlab.com/correaa/boost-multi
 libs.bmulti.versions=trunk
diff --git a/etc/config/c.amazon.properties b/etc/config/c.amazon.properties
index 7511e62e7..4b33421da 100644
--- a/etc/config/c.amazon.properties
+++ b/etc/config/c.amazon.properties
@@ -3259,7 +3259,7 @@ compiler.cc65_219.options=-I/opt/compiler-explorer/6502/cc65-2.19/share/cc65/inc
 
 #################################
 # sdcc compilers
-group.sdcc.compilers=sdcc400:sdcc410:sdcc420:sdcc430:sdcc440
+group.sdcc.compilers=sdcc400:sdcc410:sdcc420:sdcc430:sdcc440:sdcc450
 group.sdcc.compilerType=sdcc
 group.sdcc.groupName=SDCC
 group.sdcc.baseName=SDCC
@@ -3278,6 +3278,8 @@ compiler.sdcc430.exe=/opt/compiler-explorer/sdcc-4.3.0/bin/sdcc
 compiler.sdcc430.semver=4.3.0
 compiler.sdcc440.exe=/opt/compiler-explorer/sdcc-4.4.0/bin/sdcc
 compiler.sdcc440.semver=4.4.0
+compiler.sdcc450.exe=/opt/compiler-explorer/sdcc-4.5.0/bin/sdcc
+compiler.sdcc450.semver=4.5.0
 
 #################################
 # z88dk
diff --git a/etc/config/cmakescript.amazon.properties b/etc/config/cmakescript.amazon.properties
index 6ba0e3d2a..69e99bfa9 100644
--- a/etc/config/cmakescript.amazon.properties
+++ b/etc/config/cmakescript.amazon.properties
@@ -1,7 +1,7 @@
-compilers=cmake-3_26_1:cmake-3_26_4:cmake-3_27_9:cmake-3_28_0:cmake-3_28_4:cmake-3_29_2:cmake-3_29_20240506_g1ea8fa8
+compilers=cmake-3_26_1:cmake-3_26_4:cmake-3_27_9:cmake-3_28_0:cmake-3_28_4:cmake-3_29_2:cmake-3_29_20240506_g1ea8fa8:cmake-3_30_7:cmake-3_31_5
 isSemVer=true
 baseName=cmake
-defaultCompiler=cmake-3_28_0
+defaultCompiler=cmake-3_31_5
 
 compiler.cmake-3_26_1.exe=/opt/compiler-explorer/cmake-v3.26.1/bin/cmake
 compiler.cmake-3_26_1.semver=3.26.1
@@ -23,3 +23,9 @@ compiler.cmake-3_29_2.semver=3.29.2
 
 compiler.cmake-3_29_20240506_g1ea8fa8.exe=/opt/compiler-explorer/cmake-v3.29.20240506-g1ea8fa8/bin/cmake
 compiler.cmake-3_29_20240506_g1ea8fa8.semver=3.29.20240506-g1ea8fa8
+
+compiler.cmake-3_30_7.exe=/opt/compiler-explorer/cmake-v3.30.7/bin/cmake
+compiler.cmake-3_30_7.semver=3.30.7
+
+compiler.cmake-3_31_5.exe=/opt/compiler-explorer/cmake-v3.31.5/bin/cmake
+compiler.cmake-3_31_5.semver=3.31.5
diff --git a/etc/config/swift.amazon.properties b/etc/config/swift.amazon.properties
index 33075658d..3b18b2e5c 100644
--- a/etc/config/swift.amazon.properties
+++ b/etc/config/swift.amazon.properties
@@ -3,7 +3,7 @@ demangler=/opt/compiler-explorer/swift-6.0.3/usr/bin/swift-demangle
 defaultCompiler=swift603
 objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump
 
-group.swift.compilers=swift311:swift402:swift403:swift41:swift411:swift412:swift42:swift50:swift51:swift52:swift53:swift54:swift55:swift56:swift57:swift58:swift59:swift510:swift603:swiftnightly
+group.swift.compilers=swift311:swift402:swift403:swift41:swift411:swift412:swift42:swift50:swift51:swift52:swift53:swift54:swift55:swift56:swift57:swift58:swift59:swift510:swift603:swiftdevsnapshot:swiftnightly
 group.swift.isSemVer=true
 group.swift.baseName=x86-64 swiftc
 compiler.swift311.exe=/opt/compiler-explorer/swift-3.1.1/usr/bin/swiftc
@@ -50,9 +50,11 @@ compiler.swift59.exe=/opt/compiler-explorer/swift-5.9/usr/bin/swiftc
 compiler.swift59.semver=5.9
 compiler.swift510.exe=/opt/compiler-explorer/swift-5.10/usr/bin/swiftc
 compiler.swift510.semver=5.10
+compiler.swift510.alias=switf510nightly
 compiler.swift603.exe=/opt/compiler-explorer/swift-6.0.3/usr/bin/swiftc
 compiler.swift603.semver=6.0.3
-compiler.swift510.alias=switf510nightly
+compiler.swiftdevsnapshot.exe=/opt/compiler-explorer/swift-dev-snapshot/usr/bin/swiftc
+compiler.swiftdevsnapshot.semver=devsnapshot
 compiler.swiftnightly.exe=/opt/compiler-explorer/swift-nightly/usr/bin/swiftc
 compiler.swiftnightly.semver=nightly
 compiler.swiftnightly.isNightly=true
diff --git a/lib/compiler-finder.ts b/lib/compiler-finder.ts
index 67d296250..e62685b3b 100644
--- a/lib/compiler-finder.ts
+++ b/lib/compiler-finder.ts
@@ -39,7 +39,6 @@ import type {Language, LanguageKey} from '../types/languages.interfaces.js';
 import {Tool, ToolInfo} from '../types/tool.interfaces.js';
 
 import {assert, unwrap, unwrapString} from './assert.js';
-import {InstanceFetcher} from './aws.js';
 import {CompileHandler} from './handlers/compile.js';
 import {logger} from './logger.js';
 import {ClientOptionsHandler} from './options-handler.js';
@@ -55,36 +54,25 @@ const sleep = promisify(setTimeout);
 export class CompilerFinder {
     compilerProps: CompilerProps['get'];
     ceProps: PropertyGetter;
-    awsProps: PropertyGetter;
     args: AppDefaultArguments;
     compileHandler: CompileHandler;
     languages: Record<string, Language>;
-    awsPoller: InstanceFetcher | null = null;
     optionsHandler: ClientOptionsHandler;
-    //visitedCompilers = new Set<string>();
 
     constructor(
         compileHandler: CompileHandler,
         compilerProps: CompilerProps,
-        awsProps: PropertyGetter,
         args: AppDefaultArguments,
         optionsHandler: ClientOptionsHandler,
     ) {
         this.compilerProps = compilerProps.get.bind(compilerProps);
         this.ceProps = compilerProps.ceProps;
-        this.awsProps = awsProps;
         this.args = args;
         this.compileHandler = compileHandler;
         this.languages = compilerProps.languages;
-        this.awsPoller = null;
         this.optionsHandler = optionsHandler;
     }
 
-    awsInstances() {
-        if (!this.awsPoller) this.awsPoller = new InstanceFetcher(this.awsProps);
-        return this.awsPoller.getInstances();
-    }
-
     static prepareRemoteUrlParts(host: string, port: number, uriBase: string, langId: string | null) {
         const uriSchema = port === 443 ? 'https' : 'http';
         return {
@@ -159,12 +147,6 @@ export class CompilerFinder {
                                 res.on('end', () => {
                                     try {
                                         const compilers = (JSON.parse(str) as CompilerInfo[]).map(compiler => {
-                                            // Fix up old upstream implementations of Compiler Explorer
-                                            // e.g. https://www.godbolt.ms
-                                            // (see https://github.com/compiler-explorer/compiler-explorer/issues/1768)
-                                            if (!compiler.alias) compiler.alias = [];
-                                            if (typeof compiler.alias == 'string') compiler.alias = [compiler.alias];
-                                            // End fixup
                                             compiler.exe = '/dev/null';
                                             compiler.remote = CompilerFinder.getRemoteInfo(
                                                 uriSchema,
@@ -185,7 +167,7 @@ export class CompilerFinder {
                         )
                         .on('error', reject)
                         .on('timeout', () => reject('timeout'));
-                    request.setTimeout(this.awsProps('proxyTimeout', 1000));
+                    request.setTimeout(this.ceProps('proxyTimeout', 1000));
                 });
             },
             `${host}:${port}`,
@@ -197,22 +179,6 @@ export class CompilerFinder {
         });
     }
 
-    async fetchAws() {
-        logger.info('Fetching instances from AWS');
-        const instances = await this.awsInstances();
-        const mapped = await Promise.all(
-            instances.map(instance => {
-                logger.info('Checking instance ' + instance.InstanceId);
-                const address = this.awsProps('externalTestMode', false)
-                    ? instance.PublicDnsName
-                    : instance.PrivateDnsName;
-                return this.fetchRemote(unwrap(address), this.args.port, '', this.awsProps, null);
-            }),
-        );
-
-        return remove(mapped.flat(), null);
-    }
-
     async compilerConfigFor(
         langId: string,
         compilerId: string,
@@ -425,7 +391,6 @@ export class CompilerFinder {
             );
             return allCompilers.flat();
         }
-        if (compilerName === 'AWS') return this.fetchAws();
         const configs = [await this.compilerConfigFor(langId, compilerName, parentProps)];
         return remove(configs, null);
     }
diff --git a/lib/compilers/dex2oat.ts b/lib/compilers/dex2oat.ts
index 6fe875606..25e66ef95 100644
--- a/lib/compilers/dex2oat.ts
+++ b/lib/compilers/dex2oat.ts
@@ -145,7 +145,7 @@ export class Dex2OatCompiler extends BaseCompiler {
 
         // Regexes that apply to .smali files (R8/D8 dump output).
         this.smaliLineNumberRegex = /^\s+\.line\s+(\d+).*$/;
-        this.smaliClassRegex = /^\.class\s.*(L.*;)$/;
+        this.smaliClassRegex = /^\.class.*\s(L.*;)$/;
         this.smaliDexPcRegex = /^\s+#@(\w+).*$/;
         this.smaliMethodStartRegex = /^\.method\s(.*)$/;
         this.smaliMethodEndRegex = /^\s*\.end\smethod.*$/;
diff --git a/lib/compilers/odin.ts b/lib/compilers/odin.ts
index a5a9157c2..08f132716 100644
--- a/lib/compilers/odin.ts
+++ b/lib/compilers/odin.ts
@@ -98,13 +98,6 @@ export class OdinCompiler extends BaseCompiler {
                     continue;
                 }
 
-                // skip main
-                if (match[1] === 'main') {
-                    outputLines.push(line);
-                    lastLine = line;
-                    continue;
-                }
-
                 // last line already has require?
                 if (lastLine.includes('@require') || lastLine.includes('@(require)')) {
                     outputLines.push(line);
diff --git a/lib/parsers/asm-parser.ts b/lib/parsers/asm-parser.ts
index 0b6af58da..30bd6e763 100644
--- a/lib/parsers/asm-parser.ts
+++ b/lib/parsers/asm-parser.ts
@@ -32,7 +32,7 @@ import {
     ParsedAsmResultLine,
 } from '../../types/asmresult/asmresult.interfaces.js';
 import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
-import {assert} from '../assert.js';
+import {assert, unwrap} from '../assert.js';
 import {PropertyGetter} from '../properties.interfaces.js';
 import * as utils from '../utils.js';
 
@@ -60,6 +60,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
     definesFunction: RegExp;
     definesGlobal: RegExp;
     definesWeak: RegExp;
+    definesAlias: RegExp;
     indentedLabelDef: RegExp;
     assignmentDef: RegExp;
     directive: RegExp;
@@ -109,11 +110,12 @@ export class AsmParser extends AsmRegex implements IAsmParser {
         this.definesFunction = /^\s*\.(type.*,\s*[#%@]function|proc\s+[.A-Z_a-z][\w$.]*:.*)$/;
         this.definesGlobal = /^\s*\.(?:globa?l|GLB|export)\s*([.A-Z_a-z][\w$.]*)/;
         this.definesWeak = /^\s*\.(?:weakext|weak)\s*([.A-Z_a-z][\w$.]*)/;
+        this.definesAlias = /^\s*\.set\s*([.A-Z_a-z][\w$.]*\s*),\s*\.\s*(\+\s*0)?$/;
         this.indentedLabelDef = /^\s*([$.A-Z_a-z][\w$.]*):/;
         this.assignmentDef = /^\s*([$.A-Z_a-z][\w$.]*)\s*=\s*(.*)/;
         this.directive = /^\s*\..*$/;
-        // These four regexes when phrased as /\s*#APP.*/ etc exhibit costly polynomial backtracking
-        // Instead use ^$ and test with regex.test(line.trim()), more robust anyway
+        // These four regexes when phrased as /\s*#APP.*/ etc exhibit costly polynomial backtracking. Instead use ^$ and
+        // test with regex.test(line.trim()), more robust anyway
         this.startAppBlock = /^#APP.*$/;
         this.endAppBlock = /^#NO_APP.*$/;
         this.startAsmNesting = /^# Begin ASM.*$/;
@@ -142,8 +144,8 @@ export class AsmParser extends AsmRegex implements IAsmParser {
             this.lineRe = /^(\/[^:]+):(?<line>\d+).*/;
         }
 
-        // labelRe is made very greedy as it's also used with demangled objdump
-        // output (eg. it can have c++ template with <>).
+        // labelRe is made very greedy as it's also used with demangled objdump output (eg. it can have c++ template
+        // with <>).
         this.labelRe = /^([\da-f]+)\s+<(.+)>:$/;
         this.destRe = /\s([\da-f]+)\s+<([^+>]+)(\+0x[\da-f]+)?>$/;
         this.commentRe = /[#;]/;
@@ -165,11 +167,11 @@ export class AsmParser extends AsmRegex implements IAsmParser {
         this.blockComments = /^[\t ]*\/\*(\*(?!\/)|[^*])*\*\/\s*/gm;
     }
 
-    checkVLIWpacket(line: string, inVLIWpacket: boolean) {
+    checkVLIWpacket(_line: string, inVLIWpacket: boolean) {
         return inVLIWpacket;
     }
 
-    hasOpcode(line: string, inNvccCode: boolean = false, inVLIWpacket: boolean = false) {
+    hasOpcode(line: string, inNvccCode: boolean = false, _inVLIWpacket: boolean = false) {
         // Remove any leading label definition...
         const match = line.match(this.labelDef);
         if (match) {
@@ -182,19 +184,25 @@ export class AsmParser extends AsmRegex implements IAsmParser {
         // Detect assignment, that's not an opcode...
         if (this.assignmentDef.test(line)) return false;
         if (inNvccCode) {
-            return !!this.hasNvccOpcodeRe.test(line);
+            return this.hasNvccOpcodeRe.test(line);
         }
-        return !!this.hasOpcodeRe.test(line);
+        return this.hasOpcodeRe.test(line);
     }
 
     labelFindFor(asmLines: string[]) {
-        const isMips = _.any(asmLines, line => !!this.mipsLabelDefinition.test(line));
+        const isMips = _.any(asmLines, line => this.mipsLabelDefinition.test(line));
         return isMips ? this.labelFindMips : this.labelFindNonMips;
     }
 
-    findUsedLabels(asmLines: string[], filterDirectives?: boolean) {
-        const labelsUsed: Record<string, boolean> = {};
-        const weakUsages: Record<string, Array<string>> = {};
+    findUsedLabels(asmLines: string[], filterDirectives?: boolean): Set<string> {
+        const labelsUsed: Set<string> = new Set();
+        const weakUsages: Map<string, Set<string>> = new Map();
+
+        function markWeak(fromLabel: string, toLabel: string) {
+            if (!weakUsages.has(fromLabel)) weakUsages.set(fromLabel, new Set());
+            unwrap(weakUsages.get(fromLabel)).add(toLabel);
+        }
+
         const labelFind = this.labelFindFor(asmLines);
         // The current label set is the set of labels all pointing at the current code, so:
         // foo:
@@ -209,18 +217,17 @@ export class AsmParser extends AsmRegex implements IAsmParser {
         let inFunction = false;
         let inNvccCode = false;
         let inVLIWpacket = false;
+        let definingAlias: string | undefined;
 
-        // Scan through looking for definite label usages (ones used by opcodes),
-        // and ones that are weakly used: that is, their use is conditional on another label.
-        // For example:
+        // Scan through looking for definite label usages (ones used by opcodes), and ones that are weakly used: that
+        // is, their use is conditional on another label. For example:
         // .foo: .string "moo"
         // .baz: .quad .foo
         //       mov eax, .baz
         // In this case, the '.baz' is used by an opcode, and so is strongly used.
         // The '.foo' is weakly used by .baz.
-        // Also, if we have random data definitions within a block of a function (between
-        // cfi_startproc and cfi_endproc), we assume they are strong usages. This covers things
-        // like jump tables embedded in ARM code.
+        // Also, if we have random data definitions within a block of a function (between cfi_startproc and
+        // cfi_endproc), we assume they are strong usages. This covers things like jump tables embedded in ARM code.
         // See https://github.com/compiler-explorer/compiler-explorer/issues/2788
         for (let line of asmLines) {
             if (this.startAppBlock.test(line.trim()) || this.startAsmNesting.test(line.trim())) {
@@ -244,14 +251,26 @@ export class AsmParser extends AsmRegex implements IAsmParser {
                 if (inLabelGroup) currentLabelSet.push(match[1]);
                 else currentLabelSet = [match[1]];
                 inLabelGroup = true;
+                if (definingAlias) {
+                    // If we're defining an alias, then any labels in this group are weakly used by the alias.
+                    markWeak(definingAlias, match[1]);
+                }
             } else {
-                inLabelGroup = false;
+                if (inLabelGroup) {
+                    inLabelGroup = false;
+                    // Once we exit the label group after an alias, we're no longer defining an alias.
+                    definingAlias = undefined;
+                }
             }
             match = line.match(this.definesGlobal);
             if (!match) match = line.match(this.definesWeak);
             if (!match) match = line.match(this.cudaBeginDef);
-            if (match) {
-                labelsUsed[match[1]] = true;
+            if (match) labelsUsed.add(match[1]);
+
+            const definesAlias = line.match(this.definesAlias);
+            if (definesAlias) {
+                // We are defining an alias for match[1]; so the next label definition is the _same_ as this.
+                definingAlias = definesAlias[1];
             }
 
             const definesFunction = line.match(this.definesFunction);
@@ -262,46 +281,37 @@ export class AsmParser extends AsmRegex implements IAsmParser {
 
             if (!filterDirectives || this.hasOpcode(line, inNvccCode, inVLIWpacket) || definesFunction) {
                 // Only count a label as used if it's used by an opcode, or else we're not filtering directives.
-                for (const label of match) labelsUsed[label] = true;
+                for (const label of match) labelsUsed.add(label);
             } else {
                 // If we have a current label, then any subsequent opcode or data definition's labels are referred to
                 // weakly by that label.
-                const isDataDefinition = !!this.dataDefn.test(line);
+                const isDataDefinition = this.dataDefn.test(line);
                 const isOpcode = this.hasOpcode(line, inNvccCode, inVLIWpacket);
                 if (isDataDefinition || isOpcode) {
-                    for (const currentLabel of currentLabelSet) {
-                        if (inFunction && isDataDefinition) {
-                            // Data definitions in the middle of code should be treated as if they were used strongly.
-                            for (const label of match) labelsUsed[label] = true;
-                        } else {
-                            if (!weakUsages[currentLabel]) weakUsages[currentLabel] = [];
-                            for (const label of match) weakUsages[currentLabel].push(label);
+                    if (inFunction && isDataDefinition) {
+                        // Data definitions in the middle of code should be treated as if they were used strongly.
+                        for (const label of match) labelsUsed.add(label);
+                    } else {
+                        for (const currentLabel of currentLabelSet) {
+                            for (const label of match) markWeak(currentLabel, label);
                         }
                     }
                 }
             }
         }
 
-        // Now follow the chains of used labels, marking any weak references they refer
-        // to as also used. We iteratively do this until either no new labels are found,
-        // or we hit a limit (only here to prevent a pathological case from hanging).
-        function markUsed(label: string) {
-            labelsUsed[label] = true;
-        }
-
-        const MaxLabelIterations = 10;
-        for (let iter = 0; iter < MaxLabelIterations; ++iter) {
-            const toAdd: string[] = [];
-            _.each(labelsUsed, (t, label) => {
-                // jshint ignore:line
-                _.each(weakUsages[label], (nowused: string) => {
-                    if (labelsUsed[nowused]) return;
-                    toAdd.push(nowused);
-                });
-            });
-            if (!toAdd) break;
-            _.each(toAdd, markUsed);
-        }
+        // Now follow the chains of used labels, marking any weak references they refer to as also used. We recursively
+        // follow the newly-strong references along the path until we hit something that's already marked as used.
+        const recurseMarkUsed = (label: string) => {
+            labelsUsed.add(label);
+            const usages = weakUsages.get(label);
+            if (!usages) return;
+            for (const nowUsed of usages) {
+                if (!labelsUsed.has(nowUsed)) recurseMarkUsed(nowUsed);
+            }
+        };
+        // Iterate over a copy of the initial used labels, as the set will be modified during iteration.
+        for (const label of new Set(labelsUsed)) recurseMarkUsed(label);
         return labelsUsed;
     }
 
@@ -396,7 +406,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
                     context.source = {
                         file: file,
                         line: sourceLine,
-                        mainsource: !!this.stdInLooking.test(file),
+                        mainsource: this.stdInLooking.test(file),
                     };
                 } else {
                     context.source = {
@@ -429,7 +439,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
                         context.source = {
                             file: file,
                             line: sourceLine,
-                            mainsource: !!this.stdInLooking.test(file),
+                            mainsource: this.stdInLooking.test(file),
                         };
                     } else {
                         context.source = {
@@ -473,7 +483,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
                 context.source = {
                     file: file,
                     line: sourceLine,
-                    mainsource: !!this.stdInLooking.test(file),
+                    mainsource: this.stdInLooking.test(file),
                 };
             } else {
                 context.source = {
@@ -618,16 +628,17 @@ export class AsmParser extends AsmRegex implements IAsmParser {
             if (match) {
                 // It's a label definition.
 
-                // g-as shows local labels as eg: "1:  call  mcount". We characterize such a label as
-                // "the label-matching part doesn't equal the whole line" and treat it as used.
-                // As a special case, consider assignments of the form "symbol = ." to be labels.
+                // g-as shows local labels as eg: "1:  call  mcount". We characterize such a label as "the
+                // label-matching part doesn't equal the whole line" and treat it as used. As a special case, consider
+                // assignments of the form "symbol = ." to be labels.
                 if (
-                    labelsUsed[match[1]] === undefined &&
+                    !labelsUsed.has(match[1]) &&
                     match[0] === line &&
                     (match[2] === undefined || match[2].trim() === '.')
                 ) {
                     // It's an unused label.
                     if (filters.labels) {
+                        context.prevLabel = '';
                         continue;
                     }
                 } else {
@@ -643,13 +654,14 @@ export class AsmParser extends AsmRegex implements IAsmParser {
             if (inNvccDef) {
                 if (this.cudaEndDef.test(line)) inNvccDef = false;
             } else if (!match && filters.directives) {
-                // Check for directives only if it wasn't a label; the regexp would
-                // otherwise misinterpret labels as directives.
+                // Check for directives only if it wasn't a label; the regexp would otherwise misinterpret labels as
+                // directives.
                 if (this.dataDefn.test(line) && context.prevLabel) {
                     // We're defining data that's being used somewhere.
                 } else {
-                    // .inst generates an opcode, so does not count as a directive
-                    if (this.directive.test(line) && !this.instOpcodeRe.test(line)) {
+                    // .inst generates an opcode, so does not count as a directive, nor does an alias definition that's
+                    // used.
+                    if (this.directive.test(line) && !this.instOpcodeRe.test(line) && !this.definesAlias.test(line)) {
                         continue;
                     }
                 }
@@ -763,9 +775,9 @@ export class AsmParser extends AsmRegex implements IAsmParser {
 
             if (!func || !this.isUserFunction(func)) continue;
 
-            // note: normally the source.file will be null if it's code from example.ext
-            //  but with filters.dontMaskFilenames it will be filled with the actual filename
-            //  instead we can test source.mainsource in that situation
+            // note: normally the source.file will be null if it's code from example.ext but with
+            //  filters.dontMaskFilenames it will be filled with the actual filename instead we can test
+            //  source.mainsource in that situation
             const isMainsource = source && (source.file === null || source.mainsource);
             if (filters.libraryCode && !isMainsource) {
                 if (mayRemovePreviousLabel && asm.length > 0) {
diff --git a/static/modes/asm-mode.ts b/static/modes/asm-mode.ts
index 1ddebb0ca..b91401164 100644
--- a/static/modes/asm-mode.ts
+++ b/static/modes/asm-mode.ts
@@ -41,14 +41,20 @@ function definition(): monaco.languages.IMonarchLanguage {
                 [/^<.*>$/, {token: 'annotation'}],
                 // inline comments
                 [/\/\*/, 'comment', '@comment'],
-                // Label definition
-                [/^[.a-zA-Z0-9_$?@].*:/, {token: 'type.identifier'}],
+                // Label definition (anything looking like a label, followed by anything that's not valid in a demangled
+                // identifier, until we get to a colon followed by any whitespace. This is to avoid finding the colon in
+                // a scoped (blah::foo) identifier.
+                [/^[.a-zA-Z0-9_$?@][^#;/]*:(?=\s)/, {token: 'type.identifier'}],
                 // Label definition (quoted)
                 [/^"([^"\\]|\\.)*":/, {token: 'type.identifier'}],
                 // Label definition (ARM style)
                 [/^\s*[|][^|]*[|]/, {token: 'type.identifier'}],
-                // Label definition (CL style)
-                [/^\s*[.a-zA-Z0-9_$|]*\s+(PROC|ENDP|DB|DD)/, {token: 'type.identifier', next: '@rest'}],
+                // Label definition (CL style). This is pretty hideous: we essentially take anything that ends in spaces
+                // followed by a definition (PROC, ENDP etc) and assume it's a label. That means we have to use
+                // backtracking and then a lookahead to ensure we don't consume the definition. As a nod to efficiency
+                // we assume the line has to start with a non-whitespace character before we go all back-tracky.
+                // See https://github.com/compiler-explorer/compiler-explorer/issues/1645 for examples.
+                [/^\S.*?(?=\s+(PROC|ENDP|D[BDWQ]))/, {token: 'type.identifier', next: '@rest'}],
                 // Constant definition
                 [/^[.a-zA-Z0-9_$?@][^=]*=/, {token: 'type.identifier'}],
                 // opcode
@@ -70,6 +76,8 @@ function definition(): monaco.languages.IMonarchLanguage {
                 [/@intelOperators/, 'annotation'],
                 // inline comments
                 [/\/\*/, 'comment', '@comment'],
+                // CL style post-label definition.
+                [/PROC|ENDP|D[BDWQ]/, 'keyword'],
 
                 // brackets
                 [/[{}<>()[\]]/, '@brackets'],


Test patch:
diff --git a/test/android-tests.ts b/test/android-tests.ts
index 0873bb09b..f3bf43cdd 100644
--- a/test/android-tests.ts
+++ b/test/android-tests.ts
@@ -75,6 +75,14 @@ describe('dex2oat', () => {
             return testParseSmaliForLineNumbers(androidJavaInfo, 'test/android/parse-data');
         });
 
+        it("Classes with 'L' in the name compile correctly", () => {
+            return testParseSmaliClassWithL(androidJavaInfo, 'test/android/parse-data');
+        });
+
+        it('Inner classes are correctly read in .smali files', () => {
+            return testParseSmaliInnerClasses(androidJavaInfo, 'test/android/parse-data');
+        });
+
         it('Dex PCs are correctly extracted from classes.cfg', () => {
             return testParsePassDumpsForDexPcs(androidJavaInfo, 'test/android/parse-data');
         });
@@ -119,6 +127,14 @@ describe('dex2oat', () => {
             return testParseSmaliForLineNumbers(androidKotlinInfo, 'test/android/parse-data');
         });
 
+        it("Classes with 'L' in the name compile correctly", () => {
+            return testParseSmaliClassWithL(androidKotlinInfo, 'test/android/parse-data');
+        });
+
+        it('Inner classes are correctly read in .smali files', () => {
+            return testParseSmaliInnerClasses(androidKotlinInfo, 'test/android/parse-data');
+        });
+
         it('Dex PCs are correctly extracted from classes.cfg', () => {
             return testParsePassDumpsForDexPcs(androidKotlinInfo, 'test/android/parse-data');
         });
@@ -184,6 +200,48 @@ describe('dex2oat', () => {
         expect(dexPcsToLines).toHaveProperty('int Square.square(int)', {0: 14, 1: 14});
     }
 
+    async function testParseSmaliClassWithL(info: CompilerInfo, baseFolder: string) {
+        const compiler = new Dex2OatCompiler(info, env);
+        const rawSmaliText = fs.readFileSync(`${baseFolder}/ClassWithL.smali`, {encoding: 'utf8'});
+
+        const dexPcsToLines: Record<string, Record<number, number>> = {};
+        compiler.parseSmaliForLineNumbers(dexPcsToLines, rawSmaliText.split(/\n/));
+
+        expect(Object.keys(dexPcsToLines)).toHaveLength(2);
+        expect(dexPcsToLines).toHaveProperty('void LSLqLuLaLrLeL.<init>()', {0: 12, 3: 12});
+        expect(dexPcsToLines).toHaveProperty('int LSLqLuLaLrLeL.square(int)', {0: 14, 1: 14});
+    }
+
+    async function testParseSmaliInnerClasses(info: CompilerInfo, baseFolder: string) {
+        const compiler = new Dex2OatCompiler(info, env);
+        const rawSmaliText = fs.readFileSync(`${baseFolder}/InnerClassCases.smali`, {encoding: 'utf8'});
+
+        const dexPcsToLines: Record<string, Record<number, number>> = {};
+        compiler.parseSmaliForLineNumbers(dexPcsToLines, rawSmaliText.split(/\n/));
+
+        expect(Object.keys(dexPcsToLines)).toHaveLength(6);
+
+        // Self
+        expect(dexPcsToLines).toHaveProperty('void InnerClassCases.<init>()', {0: 1, 3: 1});
+
+        // Non-static
+        expect(dexPcsToLines).toHaveProperty('void InnerClassCases$InnerClass.<init>(InnerClassCases)', {
+            0: 2,
+            2: 2,
+            5: 2,
+        });
+        expect(dexPcsToLines).toHaveProperty('void InnerClassCases$FinalInnerClass.<init>(InnerClassCases)', {
+            0: 3,
+            2: 3,
+            5: 3,
+        });
+
+        // Static
+        expect(dexPcsToLines).toHaveProperty('void InnerClassCases$StaticInnerClass.<init>()', {0: 4, 3: 4});
+        expect(dexPcsToLines).toHaveProperty('void InnerClassCases$StaticFinalInnerClass.<init>()', {0: 5, 3: 5});
+        expect(dexPcsToLines).toHaveProperty('void InnerClassCases$LStartsWithL.<init>()', {0: 6, 3: 6});
+    }
+
     async function testParsePassDumpsForDexPcs(info: CompilerInfo, baseFolder: string) {
         const compiler = new Dex2OatCompiler(info, env);
         const rawCfgText = fs.readFileSync(`${baseFolder}/classes.cfg`, {encoding: 'utf8'});
diff --git a/test/android/parse-data/ClassWithL.smali b/test/android/parse-data/ClassWithL.smali
new file mode 100644
index 000000000..063eb502b
--- /dev/null
+++ b/test/android/parse-data/ClassWithL.smali
@@ -0,0 +1,27 @@
+.class LLSLqLuLaLrLeL;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# direct methods
+.method constructor <init>()V
+    .registers 1
+
+    #@0
+    .line 12
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@3
+    return-void
+.end method
+
+.method static square(I)I
+    .registers 1
+
+    #@0
+    .line 14
+    mul-int/2addr p0, p0
+
+    #@1
+    return p0
+.end method
diff --git a/test/android/parse-data/InnerClassCases.smali b/test/android/parse-data/InnerClassCases.smali
new file mode 100644
index 000000000..2707544e2
--- /dev/null
+++ b/test/android/parse-data/InnerClassCases.smali
@@ -0,0 +1,187 @@
+.class final LInnerClassCases$FinalInnerClass;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+    value = LInnerClassCases;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+    accessFlags = 0x10
+    name = "FinalInnerClass"
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:LInnerClassCases;
+
+
+# direct methods
+.method constructor <init>(LInnerClassCases;)V
+    .registers 2
+
+    #@0
+    .line 3
+    iput-object p1, p0, LInnerClassCases$FinalInnerClass;->this$0:LInnerClassCases;
+
+    #@2
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@5
+    return-void
+.end method
+
+
+.class LInnerClassCases$InnerClass;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+    value = LInnerClassCases;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+    accessFlags = 0x0
+    name = "InnerClass"
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:LInnerClassCases;
+
+
+# direct methods
+.method constructor <init>(LInnerClassCases;)V
+    .registers 2
+
+    #@0
+    .line 2
+    iput-object p1, p0, LInnerClassCases$InnerClass;->this$0:LInnerClassCases;
+
+    #@2
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@5
+    return-void
+.end method
+
+
+.class final LInnerClassCases$LStartsWithL;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+    value = LInnerClassCases;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+    accessFlags = 0x18
+    name = "LStartsWithL"
+.end annotation
+
+
+# direct methods
+.method constructor <init>()V
+    .registers 1
+
+    #@0
+    .line 6
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@3
+    return-void
+.end method
+
+
+.class final LInnerClassCases$StaticFinalInnerClass;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+    value = LInnerClassCases;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+    accessFlags = 0x18
+    name = "StaticFinalInnerClass"
+.end annotation
+
+
+# direct methods
+.method constructor <init>()V
+    .registers 1
+
+    #@0
+    .line 5
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@3
+    return-void
+.end method
+
+
+.class LInnerClassCases$StaticInnerClass;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+    value = LInnerClassCases;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+    accessFlags = 0x8
+    name = "StaticInnerClass"
+.end annotation
+
+
+# direct methods
+.method constructor <init>()V
+    .registers 1
+
+    #@0
+    .line 4
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@3
+    return-void
+.end method
+
+
+.class LInnerClassCases;
+.super Ljava/lang/Object;
+.source "example.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+    value = {
+        LInnerClassCases$LStartsWithL;,
+        LInnerClassCases$StaticFinalInnerClass;,
+        LInnerClassCases$StaticInnerClass;,
+        LInnerClassCases$FinalInnerClass;,
+        LInnerClassCases$InnerClass;
+    }
+.end annotation
+
+
+# direct methods
+.method constructor <init>()V
+    .registers 1
+
+    #@0
+    .line 1
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    #@3
+    return-void
+.end method
diff --git a/test/compiler-finder-tests.ts b/test/compiler-finder-tests.ts
index 88522c200..6774327b6 100644
--- a/test/compiler-finder-tests.ts
+++ b/test/compiler-finder-tests.ts
@@ -121,72 +121,36 @@ describe('Compiler-finder', () => {
     });
 
     it('should not hang for undefined groups (Bug #860)', async () => {
-        const finder = new CompilerFinder(
-            {} as any,
-            compilerProps,
-            properties.fakeProps({}),
-            {} as any,
-            optionsHandler,
-        );
+        const finder = new CompilerFinder({} as any, compilerProps, {} as any, optionsHandler);
         await expect(finder.getCompilers()).resolves.toHaveLength(1);
     });
 
     it('should behave properly if no options are provided at all', async () => {
-        const finder = new CompilerFinder(
-            {} as any,
-            noOptionsAtAllProps,
-            properties.fakeProps({}),
-            {} as any,
-            optionsHandler,
-        );
+        const finder = new CompilerFinder({} as any, noOptionsAtAllProps, {} as any, optionsHandler);
         const compilers = await finder.getCompilers();
         expect(compilers[0].options).toEqual('');
     });
 
     it('should behave properly if no base options are provided', async () => {
-        const finder = new CompilerFinder(
-            {} as any,
-            noBaseOptionsProps,
-            properties.fakeProps({}),
-            {} as any,
-            optionsHandler,
-        );
+        const finder = new CompilerFinder({} as any, noBaseOptionsProps, {} as any, optionsHandler);
         const compilers = await finder.getCompilers();
         expect(compilers[0].options).toEqual('bar');
     });
 
     it('should behave properly if only base options are provided', async () => {
-        const finder = new CompilerFinder(
-            {} as any,
-            onlyBaseOptionsProps,
-            properties.fakeProps({}),
-            {} as any,
-            optionsHandler,
-        );
+        const finder = new CompilerFinder({} as any, onlyBaseOptionsProps, {} as any, optionsHandler);
         const compilers = await finder.getCompilers();
         expect(compilers[0].options).toEqual('foo');
     });
 
     it('should behave properly if both options are provided', async () => {
-        const finder = new CompilerFinder(
-            {} as any,
-            bothOptionsProps,
-            properties.fakeProps({}),
-            {} as any,
-            optionsHandler,
-        );
+        const finder = new CompilerFinder({} as any, bothOptionsProps, {} as any, optionsHandler);
         const compilers = await finder.getCompilers();
         expect(compilers[0].options).toEqual('foo bar');
     });
 
     it('should be able to filter libraries', async () => {
-        const finder = new CompilerFinder(
-            {} as any,
-            libraryCompilerProps,
-            properties.fakeProps({}),
-            {} as any,
-            optionsHandler,
-        );
+        const finder = new CompilerFinder({} as any, libraryCompilerProps, {} as any, optionsHandler);
         const compilers = await finder.getCompilers();
         const libsArr = compilers[0].libsArr;
         expect(libsArr).toEqual(['fmt', 'catch2.2101']);
diff --git a/test/filters-cases/bug-1799.asm b/test/filters-cases/bug-1799.asm
new file mode 100644
index 000000000..5dfd6a17b
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm
@@ -0,0 +1,120 @@
+  .cpu arm7tdmi
+  .eabi_attribute 20, 1
+  .eabi_attribute 21, 1
+  .eabi_attribute 23, 3
+  .eabi_attribute 24, 1
+  .eabi_attribute 25, 1
+  .eabi_attribute 26, 1
+  .eabi_attribute 30, 2
+  .eabi_attribute 34, 0
+  .eabi_attribute 18, 4
+  .file "example.cpp"
+  .text
+.Ltext0:
+  .cfi_sections .debug_frame
+  .align 2
+  .global DaysInMonth2()
+  .arch armv4t
+  .syntax unified
+  .arm
+  .fpu softvfp
+  .type DaysInMonth2(), %function
+DaysInMonth2():
+  .fnstart
+.LFB2:
+  .file 1 "/app/example.cpp"
+  .loc 1 22 20 view -0
+  .cfi_startproc
+  .loc 1 22 22 view .LVU1
+  .loc 1 22 40 is_stmt 0 view .LVU2
+  ldr r3, .L8
+  ldr r3, [r3]
+  ldr r2, .L8+4
+.LBB8:
+  .loc 1 13 18 view .LVU3
+  cmp r3, #1
+.LBE8:
+  .loc 1 22 40 view .LVU4
+  ldr r2, [r2]
+.LVL0:
+.LBB13:
+.LBI8:
+  .loc 1 10 15 is_stmt 1 view .LVU5
+  .loc 1 13 3 view .LVU6
+  .loc 1 13 18 is_stmt 0 view .LVU7
+  beq .L7
+.L2:
+  .loc 1 17 3 is_stmt 1 view .LVU8
+  .loc 1 17 23 is_stmt 0 view .LVU9
+  ldr r2, .L8+8
+.LVL1:
+  .loc 1 17 23 view .LVU10
+  ldr r0, [r2, r3, lsl #2]
+  bx lr
+.LVL2:
+.L7:
+.LBB10:
+.LBI10:
+  .loc 1 1 16 is_stmt 1 view .LVU11
+  .loc 1 4 3 view .LVU12
+  .loc 1 4 26 is_stmt 0 view .LVU13
+  tst r2, #3
+  bne .L2
+  .loc 1 4 36 view .LVU14
+  ldr r1, .L8+12
+  smull ip, r0, r1, r2
+  asr r1, r2, #31
+  rsb r1, r1, r0, asr #3
+  add r1, r1, r1, lsl #2
+  add r1, r1, r1, lsl #2
+  .loc 1 4 26 view .LVU15
+  cmp r2, r1
+  bne .L5
+  .loc 1 4 47 view .LVU16
+  tst r2, #15
+  bne .L2
+.L5:
+  .loc 1 4 47 view .LVU17
+.LBE10:
+  .loc 1 14 12 view .LVU18
+  mov r0, #29
+.LVL3:
+  .loc 1 14 12 view .LVU19
+.LBE13:
+  .loc 1 22 48 view .LVU20
+  bx lr
+  .align 2
+.L8:
+  .word b
+  .word a
+  .word .LANCHOR0
+  .word 1374389535
+  .cfi_endproc
+.LFE2:
+  .cantunwind
+  .fnend
+  .size DaysInMonth2(), .-DaysInMonth2()
+  .section .rodata
+  .align 2
+  .set .LANCHOR0,. + 0
+  .type sg_days, %object
+  .size sg_days, 48
+sg_days:
+  .word 31
+  .word 28
+  .word 31
+  .word 30
+  .word 31
+  .word 30
+  .word 31
+  .word 31
+  .word 30
+  .word 31
+  .word 30
+  .word 31
+  .text
+.Letext0:
+  .section .debug_info,"",%progbits
+.Ldebug_info0:
+  .4byte 0x135
+  .2byte 0x4
diff --git a/test/filters-cases/bug-1799.asm.binary.directives.labels.comments.json b/test/filters-cases/bug-1799.asm.binary.directives.labels.comments.json
new file mode 100644
index 000000000..720205208
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.binary.directives.labels.comments.json
@@ -0,0 +1,4 @@
+{
+  "asm": [],
+  "labelDefinitions": {}
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.comments.json b/test/filters-cases/bug-1799.asm.directives.comments.json
new file mode 100644
index 000000000..78bf6d297
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.comments.json
@@ -0,0 +1,482 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ltext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFB2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB8:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE8:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB13:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI8:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL1:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB10:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI10:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE10:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL3:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE13:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFE2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Letext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ldebug_info0:"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 15,
+    ".L5": 36,
+    ".L7": 21,
+    ".L8": 42,
+    "sg_days": 49
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.json b/test/filters-cases/bug-1799.asm.directives.json
new file mode 100644
index 000000000..78bf6d297
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.json
@@ -0,0 +1,482 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ltext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFB2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB8:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE8:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB13:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI8:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL1:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB10:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI10:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE10:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL3:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE13:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFE2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Letext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ldebug_info0:"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 15,
+    ".L5": 36,
+    ".L7": 21,
+    ".L8": 42,
+    "sg_days": 49
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.labels.comments.json b/test/filters-cases/bug-1799.asm.directives.labels.comments.json
new file mode 100644
index 000000000..e2edcaeda
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.labels.comments.json
@@ -0,0 +1,397 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 8,
+    ".L5": 25,
+    ".L7": 12,
+    ".L8": 28,
+    "sg_days": 34
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.labels.comments.library.dontMaskFilenames.json b/test/filters-cases/bug-1799.asm.directives.labels.comments.library.dontMaskFilenames.json
new file mode 100644
index 000000000..72d9157e2
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.labels.comments.library.dontMaskFilenames.json
@@ -0,0 +1,420 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": "example.cpp",
+        "line": 22,
+        "mainsource": true
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": "example.cpp",
+        "line": 22,
+        "mainsource": true
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": "example.cpp",
+        "line": 22,
+        "mainsource": true
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": "example.cpp",
+        "line": 13,
+        "mainsource": true
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": "example.cpp",
+        "line": 22,
+        "mainsource": true
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": "example.cpp",
+        "line": 13,
+        "mainsource": true
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": "example.cpp",
+        "line": 17,
+        "mainsource": true
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": "example.cpp",
+        "line": 17,
+        "mainsource": true
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": "example.cpp",
+        "line": 17,
+        "mainsource": true
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": "example.cpp",
+        "line": 4,
+        "mainsource": true
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": "example.cpp",
+        "line": 14,
+        "mainsource": true
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": "example.cpp",
+        "line": 22,
+        "mainsource": true
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 8,
+    ".L5": 25,
+    ".L7": 12,
+    ".L8": 28,
+    "sg_days": 34
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.labels.comments.library.json b/test/filters-cases/bug-1799.asm.directives.labels.comments.library.json
new file mode 100644
index 000000000..e2edcaeda
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.labels.comments.library.json
@@ -0,0 +1,397 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 8,
+    ".L5": 25,
+    ".L7": 12,
+    ".L8": 28,
+    "sg_days": 34
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.labels.json b/test/filters-cases/bug-1799.asm.directives.labels.json
new file mode 100644
index 000000000..e2edcaeda
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.labels.json
@@ -0,0 +1,397 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 8,
+    ".L5": 25,
+    ".L7": 12,
+    ".L8": 28,
+    "sg_days": 34
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.directives.library.json b/test/filters-cases/bug-1799.asm.directives.library.json
new file mode 100644
index 000000000..78bf6d297
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.directives.library.json
@@ -0,0 +1,482 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ltext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFB2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB8:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE8:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB13:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI8:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL1:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB10:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI10:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE10:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL3:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE13:"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFE2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Letext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ldebug_info0:"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 15,
+    ".L5": 36,
+    ".L7": 21,
+    ".L8": 42,
+    "sg_days": 49
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-1799.asm.none.json b/test/filters-cases/bug-1799.asm.none.json
new file mode 100644
index 000000000..48b044e8a
--- /dev/null
+++ b/test/filters-cases/bug-1799.asm.none.json
@@ -0,0 +1,783 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .cpu arm7tdmi"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 20, 1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 21, 1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 23, 3"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 24, 1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 25, 1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 26, 1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 30, 2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 34, 0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .eabi_attribute 18, 4"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .file \"example.cpp\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .text"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ltext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .cfi_sections .debug_frame"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .align 2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .global DaysInMonth2()"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .arch armv4t"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .syntax unified"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .arm"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .fpu softvfp"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .type DaysInMonth2(), %function"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "DaysInMonth2():"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .fnstart"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFB2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .file 1 \"/app/example.cpp\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 22 20 view -0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .cfi_startproc"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 22 22 view .LVU1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 22 40 is_stmt 0 view .LVU2"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, .L8"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r3, [r3]"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, .L8+4"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 13 18 view .LVU3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  cmp r3, #1"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 22 40 view .LVU4"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 40,
+        "file": null,
+        "line": 22
+      },
+      "text": "  ldr r2, [r2]"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB13:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 10 15 is_stmt 1 view .LVU5"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 13 3 view .LVU6"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 13 18 is_stmt 0 view .LVU7"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L7",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 18,
+        "file": null,
+        "line": 13
+      },
+      "text": "  beq .L7"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 17 3 is_stmt 1 view .LVU8"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 17 23 is_stmt 0 view .LVU9"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r2, .L8+8"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL1:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 17 23 view .LVU10"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  ldr r0, [r2, r3, lsl #2]"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 23,
+        "file": null,
+        "line": 17
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L7:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBB10:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBI10:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 1 16 is_stmt 1 view .LVU11"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 4 3 view .LVU12"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 4 26 is_stmt 0 view .LVU13"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #3"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 4 36 view .LVU14"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L8",
+          "range": {
+            "endCol": 14,
+            "startCol": 11
+          }
+        }
+      ],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  ldr r1, .L8+12"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  smull ip, r0, r1, r2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  asr r1, r2, #31"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  rsb r1, r1, r0, asr #3"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 36,
+        "file": null,
+        "line": 4
+      },
+      "text": "  add r1, r1, r1, lsl #2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 4 26 view .LVU15"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  cmp r2, r1"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L5",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 26,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L5"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 4 47 view .LVU16"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  tst r2, #15"
+    },
+    {
+      "labels": [
+        {
+          "name": ".L2",
+          "range": {
+            "endCol": 10,
+            "startCol": 7
+          }
+        }
+      ],
+      "source": {
+        "column": 47,
+        "file": null,
+        "line": 4
+      },
+      "text": "  bne .L2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L5:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 4 47 view .LVU17"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE10:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 14 12 view .LVU18"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 12,
+        "file": null,
+        "line": 14
+      },
+      "text": "  mov r0, #29"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LVL3:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 14 12 view .LVU19"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LBE13:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .loc 1 22 48 view .LVU20"
+    },
+    {
+      "labels": [],
+      "source": {
+        "column": 48,
+        "file": null,
+        "line": 22
+      },
+      "text": "  bx lr"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .align 2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".L8:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word b"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word .LANCHOR0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 1374389535"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .cfi_endproc"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LFE2:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .cantunwind"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .fnend"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .size DaysInMonth2(), .-DaysInMonth2()"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .section .rodata"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .align 2"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .set .LANCHOR0,. + 0"
+    },
+    {
+      "labels": [
+        {
+          "name": "sg_days",
+          "range": {
+            "endCol": 16,
+            "startCol": 9
+          }
+        }
+      ],
+      "source": null,
+      "text": "  .type sg_days, %object"
+    },
+    {
+      "labels": [
+        {
+          "name": "sg_days",
+          "range": {
+            "endCol": 16,
+            "startCol": 9
+          }
+        }
+      ],
+      "source": null,
+      "text": "  .size sg_days, 48"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "sg_days:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 28"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 30"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .word 31"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .text"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Letext0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .section .debug_info,\"\",%progbits"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".Ldebug_info0:"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .4byte 0x135"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "  .2byte 0x4"
+    }
+  ],
+  "labelDefinitions": {
+    ".L2": 46,
+    ".L5": 76,
+    ".L7": 55,
+    ".L8": 87,
+    "sg_days": 102
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-2788.asm.directives.labels.comments.json b/test/filters-cases/bug-2788.asm.directives.labels.comments.json
index d55d27c55..368d58d81 100644
--- a/test/filters-cases/bug-2788.asm.directives.labels.comments.json
+++ b/test/filters-cases/bug-2788.asm.directives.labels.comments.json
@@ -49,266 +49,6 @@
       },
       "text": "        b       .L7"
     },
-    {
-      "labels": [
-        {
-          "name": ".L8",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L8"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L6",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L6"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L5",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L5"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L3",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L3"
-    },
     {
       "labels": [],
       "source": null,
@@ -408,11 +148,11 @@
     }
   ],
   "labelDefinitions": {
-    ".L3": 30,
-    ".L5": 33,
-    ".L6": 36,
-    ".L7": 28,
-    ".L8": 26,
+    ".L3": 10,
+    ".L5": 13,
+    ".L6": 16,
+    ".L7": 8,
+    ".L8": 6,
     "_Z4revcc": 1
   }
 }
diff --git a/test/filters-cases/bug-2788.asm.directives.labels.comments.library.dontMaskFilenames.json b/test/filters-cases/bug-2788.asm.directives.labels.comments.library.dontMaskFilenames.json
index 0bde0dd09..8d4247207 100644
--- a/test/filters-cases/bug-2788.asm.directives.labels.comments.library.dontMaskFilenames.json
+++ b/test/filters-cases/bug-2788.asm.directives.labels.comments.library.dontMaskFilenames.json
@@ -53,266 +53,6 @@
       },
       "text": "        b       .L7"
     },
-    {
-      "labels": [
-        {
-          "name": ".L8",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L8"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L6",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L6"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L5",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L5"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L3",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L3"
-    },
     {
       "labels": [],
       "source": null,
@@ -420,11 +160,11 @@
     }
   ],
   "labelDefinitions": {
-    ".L3": 30,
-    ".L5": 33,
-    ".L6": 36,
-    ".L7": 28,
-    ".L8": 26,
+    ".L3": 10,
+    ".L5": 13,
+    ".L6": 16,
+    ".L7": 8,
+    ".L8": 6,
     "_Z4revcc": 1
   }
 }
diff --git a/test/filters-cases/bug-2788.asm.directives.labels.comments.library.json b/test/filters-cases/bug-2788.asm.directives.labels.comments.library.json
index d55d27c55..368d58d81 100644
--- a/test/filters-cases/bug-2788.asm.directives.labels.comments.library.json
+++ b/test/filters-cases/bug-2788.asm.directives.labels.comments.library.json
@@ -49,266 +49,6 @@
       },
       "text": "        b       .L7"
     },
-    {
-      "labels": [
-        {
-          "name": ".L8",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L8"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L6",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L6"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L5",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L5"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L3",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L3"
-    },
     {
       "labels": [],
       "source": null,
@@ -408,11 +148,11 @@
     }
   ],
   "labelDefinitions": {
-    ".L3": 30,
-    ".L5": 33,
-    ".L6": 36,
-    ".L7": 28,
-    ".L8": 26,
+    ".L3": 10,
+    ".L5": 13,
+    ".L6": 16,
+    ".L7": 8,
+    ".L8": 6,
     "_Z4revcc": 1
   }
 }
diff --git a/test/filters-cases/bug-2788.asm.directives.labels.json b/test/filters-cases/bug-2788.asm.directives.labels.json
index 47cd641a3..13b4bc14a 100644
--- a/test/filters-cases/bug-2788.asm.directives.labels.json
+++ b/test/filters-cases/bug-2788.asm.directives.labels.json
@@ -69,266 +69,6 @@
       },
       "text": "        b       .L7"
     },
-    {
-      "labels": [
-        {
-          "name": ".L8",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L8"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L6",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L6"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L5",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L5"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L7",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L7"
-    },
-    {
-      "labels": [
-        {
-          "name": ".L3",
-          "range": {
-            "endCol": 20,
-            "startCol": 17
-          }
-        }
-      ],
-      "source": null,
-      "text": "        .word   .L3"
-    },
     {
       "labels": [],
       "source": null,
@@ -428,11 +168,11 @@
     }
   ],
   "labelDefinitions": {
-    ".L3": 34,
-    ".L5": 37,
-    ".L6": 40,
-    ".L7": 32,
-    ".L8": 30,
+    ".L3": 14,
+    ".L5": 17,
+    ".L6": 20,
+    ".L7": 12,
+    ".L8": 10,
     "_Z4revcc": 1
   }
 }
diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.comments.json b/test/filters-cases/clang-hellow.asm.directives.labels.comments.json
index d380563f0..abbef4d05 100644
--- a/test/filters-cases/clang-hellow.asm.directives.labels.comments.json
+++ b/test/filters-cases/clang-hellow.asm.directives.labels.comments.json
@@ -131,16 +131,6 @@
       "source": null,
       "text": "        .long   .Lset0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -200,16 +190,6 @@
       "source": null,
       "text": "        .long   .Lset2"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -237,9 +217,9 @@
   "labelDefinitions": {
     ".L.str": 12,
     ".Lset0": 16,
-    ".Lset1": 20,
-    ".Lset2": 25,
-    ".Lset3": 29,
+    ".Lset1": 18,
+    ".Lset2": 23,
+    ".Lset3": 25,
     "main": 1,
     "str": 14
   }
diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json
index 2e490b579..4c199fc27 100644
--- a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json
+++ b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json
@@ -141,16 +141,6 @@
       "source": null,
       "text": "        .long   .Lset0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -210,16 +200,6 @@
       "source": null,
       "text": "        .long   .Lset2"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -247,9 +227,9 @@
   "labelDefinitions": {
     ".L.str": 12,
     ".Lset0": 16,
-    ".Lset1": 20,
-    ".Lset2": 25,
-    ".Lset3": 29,
+    ".Lset1": 18,
+    ".Lset2": 23,
+    ".Lset3": 25,
     "main": 1,
     "str": 14
   }
diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json
index d380563f0..abbef4d05 100644
--- a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json
+++ b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json
@@ -131,16 +131,6 @@
       "source": null,
       "text": "        .long   .Lset0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -200,16 +190,6 @@
       "source": null,
       "text": "        .long   .Lset2"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -237,9 +217,9 @@
   "labelDefinitions": {
     ".L.str": 12,
     ".Lset0": 16,
-    ".Lset1": 20,
-    ".Lset2": 25,
-    ".Lset3": 29,
+    ".Lset1": 18,
+    ".Lset2": 23,
+    ".Lset3": 25,
     "main": 1,
     "str": 14
   }
diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.json b/test/filters-cases/clang-hellow.asm.directives.labels.json
index 80a3db93e..20727eb53 100644
--- a/test/filters-cases/clang-hellow.asm.directives.labels.json
+++ b/test/filters-cases/clang-hellow.asm.directives.labels.json
@@ -136,16 +136,6 @@
       "source": null,
       "text": "        .long   .Lset0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -205,16 +195,6 @@
       "source": null,
       "text": "        .long   .Lset2"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .short  2                       # DWARF Version"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .long   .Linfo_begin1           # Offset of Compilation Unit Info"
-    },
     {
       "labels": [],
       "source": null,
@@ -242,9 +222,9 @@
   "labelDefinitions": {
     ".L.str": 13,
     ".Lset0": 17,
-    ".Lset1": 21,
-    ".Lset2": 26,
-    ".Lset3": 30,
+    ".Lset1": 19,
+    ".Lset2": 24,
+    ".Lset3": 26,
     "main": 1,
     "str": 15
   }
diff --git a/test/filters-cases/diab.asm.directives.labels.comments.json b/test/filters-cases/diab.asm.directives.labels.comments.json
index 591444908..4ea4a93b5 100644
--- a/test/filters-cases/diab.asm.directives.labels.comments.json
+++ b/test/filters-cases/diab.asm.directives.labels.comments.json
@@ -2417,31 +2417,6 @@
       "source": null,
       "text": "        .byte         0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +1.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +2.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +3.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +4.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +5.0000000000000000000"
-    },
     {
       "labels": [],
       "source": null,
@@ -2559,14 +2534,14 @@
     }
   ],
   "labelDefinitions": {
-    ".L114": 280,
-    ".L115": 283,
-    ".L116": 286,
-    ".L117": 289,
-    ".L131": 292,
+    ".L114": 275,
+    ".L115": 278,
+    ".L116": 281,
+    ".L117": 284,
+    ".L131": 287,
     ".L158": 206,
-    ".L159": 295,
-    ".L160": 298,
+    ".L159": 290,
+    ".L160": 293,
     ".L42": 12,
     ".L44": 31,
     ".L45": 56,
@@ -2585,7 +2560,7 @@
     ".L64": 229,
     ".L65": 272,
     ".L66": 217,
-    ".L86": 301,
+    ".L86": 296,
     "main": 235
   }
 }
diff --git a/test/filters-cases/diab.asm.directives.labels.comments.library.dontMaskFilenames.json b/test/filters-cases/diab.asm.directives.labels.comments.library.dontMaskFilenames.json
index 591444908..4ea4a93b5 100644
--- a/test/filters-cases/diab.asm.directives.labels.comments.library.dontMaskFilenames.json
+++ b/test/filters-cases/diab.asm.directives.labels.comments.library.dontMaskFilenames.json
@@ -2417,31 +2417,6 @@
       "source": null,
       "text": "        .byte         0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +1.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +2.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +3.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +4.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +5.0000000000000000000"
-    },
     {
       "labels": [],
       "source": null,
@@ -2559,14 +2534,14 @@
     }
   ],
   "labelDefinitions": {
-    ".L114": 280,
-    ".L115": 283,
-    ".L116": 286,
-    ".L117": 289,
-    ".L131": 292,
+    ".L114": 275,
+    ".L115": 278,
+    ".L116": 281,
+    ".L117": 284,
+    ".L131": 287,
     ".L158": 206,
-    ".L159": 295,
-    ".L160": 298,
+    ".L159": 290,
+    ".L160": 293,
     ".L42": 12,
     ".L44": 31,
     ".L45": 56,
@@ -2585,7 +2560,7 @@
     ".L64": 229,
     ".L65": 272,
     ".L66": 217,
-    ".L86": 301,
+    ".L86": 296,
     "main": 235
   }
 }
diff --git a/test/filters-cases/diab.asm.directives.labels.comments.library.json b/test/filters-cases/diab.asm.directives.labels.comments.library.json
index 591444908..4ea4a93b5 100644
--- a/test/filters-cases/diab.asm.directives.labels.comments.library.json
+++ b/test/filters-cases/diab.asm.directives.labels.comments.library.json
@@ -2417,31 +2417,6 @@
       "source": null,
       "text": "        .byte         0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +1.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +2.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +3.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +4.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +5.0000000000000000000"
-    },
     {
       "labels": [],
       "source": null,
@@ -2559,14 +2534,14 @@
     }
   ],
   "labelDefinitions": {
-    ".L114": 280,
-    ".L115": 283,
-    ".L116": 286,
-    ".L117": 289,
-    ".L131": 292,
+    ".L114": 275,
+    ".L115": 278,
+    ".L116": 281,
+    ".L117": 284,
+    ".L131": 287,
     ".L158": 206,
-    ".L159": 295,
-    ".L160": 298,
+    ".L159": 290,
+    ".L160": 293,
     ".L42": 12,
     ".L44": 31,
     ".L45": 56,
@@ -2585,7 +2560,7 @@
     ".L64": 229,
     ".L65": 272,
     ".L66": 217,
-    ".L86": 301,
+    ".L86": 296,
     "main": 235
   }
 }
diff --git a/test/filters-cases/diab.asm.directives.labels.json b/test/filters-cases/diab.asm.directives.labels.json
index 2be6e32e9..0e0266ed1 100644
--- a/test/filters-cases/diab.asm.directives.labels.json
+++ b/test/filters-cases/diab.asm.directives.labels.json
@@ -2877,31 +2877,6 @@
       "source": null,
       "text": "        .byte         0"
     },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +1.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +2.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +3.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +4.0000000000000000000"
-    },
-    {
-      "labels": [],
-      "source": null,
-      "text": "        .double   +5.0000000000000000000"
-    },
     {
       "labels": [],
       "source": null,
@@ -3024,14 +2999,14 @@
     }
   ],
   "labelDefinitions": {
-    ".L114": 372,
-    ".L115": 375,
-    ".L116": 378,
-    ".L117": 381,
-    ".L131": 384,
+    ".L114": 367,
+    ".L115": 370,
+    ".L116": 373,
+    ".L117": 376,
+    ".L131": 379,
     ".L158": 273,
-    ".L159": 387,
-    ".L160": 390,
+    ".L159": 382,
+    ".L160": 385,
     ".L42": 27,
     ".L44": 46,
     ".L45": 83,
@@ -3050,7 +3025,7 @@
     ".L64": 296,
     ".L65": 364,
     ".L66": 284,
-    ".L86": 394,
+    ".L86": 389,
     "main": 313
   }
 }
diff --git a/test/odin-tests.ts b/test/odin-tests.ts
index 8daeb3385..88164d1b1 100644
--- a/test/odin-tests.ts
+++ b/test/odin-tests.ts
@@ -46,7 +46,7 @@ const info = {
     lang: languages.odin.id,
 };
 
-describe('GO asm tests', () => {
+describe('Odin source preprocessing tests', () => {
     beforeAll(() => {
         ce = makeCompilationEnvironment({languages});
     });
diff --git a/test/odin/add_require.odin.expected b/test/odin/add_require.odin.expected
index 5020a61df..61f57775f 100644
--- a/test/odin/add_require.odin.expected
+++ b/test/odin/add_require.odin.expected
@@ -13,6 +13,6 @@ test_proc1 :: proc() {
 test_proc2 :: proc() {
 }
 
-main :: proc() {
+@(require) main :: proc() {
     fmt.println("asd")
 }