mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Don't consider difference of invalid labels constant
If a label is defined outside of a section, avoid trying to obtain its value.
This commit is contained in:
@@ -307,7 +307,9 @@ bool rpn_IsDiffConstant(struct Expression const *src, struct Symbol const *sym)
|
|||||||
if (!sym1 || !sym || sym1->type != SYM_LABEL || sym->type != SYM_LABEL)
|
if (!sym1 || !sym || sym1->type != SYM_LABEL || sym->type != SYM_LABEL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return sym_GetSection(sym1) == sym_GetSection(sym);
|
struct Section const *section1 = sym_GetSection(sym1);
|
||||||
|
struct Section const *section2 = sym_GetSection(sym);
|
||||||
|
return section1 && (section1 == section2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isDiffConstant(struct Expression const *src1,
|
static bool isDiffConstant(struct Expression const *src1,
|
||||||
|
|||||||
3
test/asm/use-label-outside-section.asm
Normal file
3
test/asm/use-label-outside-section.asm
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
lab:
|
||||||
|
PRINTV lab-lab
|
||||||
|
PRINTT "\n"
|
||||||
5
test/asm/use-label-outside-section.err
Normal file
5
test/asm/use-label-outside-section.err
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ERROR: use-label-outside-section.asm(1):
|
||||||
|
Label "lab" created outside of a SECTION
|
||||||
|
ERROR: use-label-outside-section.asm(2):
|
||||||
|
Expected constant expression: 'lab' is not constant at assembly time
|
||||||
|
error: Assembly aborted (2 errors)!
|
||||||
1
test/asm/use-label-outside-section.out
Normal file
1
test/asm/use-label-outside-section.out
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$0
|
||||||
Reference in New Issue
Block a user