Remove :map: sym-dep generation

This was incorrect to begin with---it does not make sense that an input
mapping should depend upon the identifier that it maps to, in the sense that
we make use of these dependencies.  If we add weak symbol references in the
future, then this can be reintroduced.

By removing this, we free tameld from having to perform the check itself.

.rev-xmlo bumped to force rebuilding of object files since the linker now
expects that no such dependencies will exist within them.
main
Mike Gerwitz 2021-07-22 13:39:28 -04:00
parent 8a2cc28ddb
commit 1f24cfdf25
4 changed files with 18 additions and 35 deletions

View File

@ -1,4 +1,4 @@
# This number is incremented for every compiler change to force rebuilding
# of xmlo files.
3
4

View File

@ -14,6 +14,18 @@ commits that introduce the changes. To make a new release, run
`tools/mkrelease`, which will handle updating the heading for you.
NEXT
====
Compiler
--------
- Input mappings will no longer emit the destination param as a dependency.
Linker
------
- Remove exception for input map dependency processing (now that compiler no
longer emits such a dependency).
v18.0.3 (2021-07-21)
====================
This release significantly improves the performance of executables

View File

@ -348,9 +348,7 @@
<template match="lvm:pass" mode="preproc:depgen" priority="5">
<preproc:sym-dep name=":map:{@name}">
<preproc:sym-ref name="{@name}" lax="true" />
</preproc:sym-dep>
<preproc:sym-dep name=":map:{@name}" />
</template>
<template match="lvm:pass[ root(.)/@lvmc:type = 'retmap' ]"
@ -408,9 +406,7 @@
<template match="lvm:map[ @from
and root(.)/@lvmc:type = 'map' ]"
mode="preproc:depgen" priority="5">
<preproc:sym-dep name=":map:{@to}">
<preproc:sym-ref name="{@to}" lax="true" />
</preproc:sym-dep>
<preproc:sym-dep name=":map:{@to}" />
</template>
<template match="lvm:map[ @from
@ -632,9 +628,7 @@
</template>
<template match="lvm:map[ * ]" mode="preproc:depgen" priority="5">
<preproc:sym-dep name=":map:{@to}">
<preproc:sym-ref name="{@to}" lax="true" />
</preproc:sym-dep>
<preproc:sym-dep name=":map:{@to}" />
</template>
<template match="lvm:map[ *

View File

@ -212,15 +212,8 @@ where
}
XmloEvent::SymDeps(sym, deps) => {
// Maps should not pull in symbols since we may end up
// mapping to params that are never actually used.
// TODO: Can these just be removed from the xmlo files
// rather than adding exceptions?
// TODO: No string comparison.
if !sym.starts_with(":map:") {
for dep_sym in deps {
self.add_dep_lookup(sym, dep_sym);
}
for dep_sym in deps {
self.add_dep_lookup(sym, dep_sym);
}
}
@ -450,22 +443,6 @@ mod test {
assert!(sut.has_dep(node_from, node_to2));
}
#[test]
fn ignores_map_sym_deps() {
let mut sut = Sut::new();
let sym_from = symbol_dummy!(1, ":map:sym");
let sym_to = symbol_dummy!(2, "to");
let evs = vec![Ok(XmloEvent::SymDeps(&sym_from, vec![&sym_to]))];
let _ = sut
.import_xmlo(evs.into_iter(), SutState::new())
.expect("unexpected failure");
assert!(sut.lookup(&sym_from).is_none());
}
#[test]
fn sym_decl_with_src_not_added_and_populates_found() {
let mut sut = Sut::new();