diff options
author | Björn Gustavsson <[email protected]> | 2015-05-12 06:34:54 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2015-05-13 15:05:00 +0200 |
commit | c758fa81e1c48c56ff20ef2a95e6424c1e69033a (patch) | |
tree | 6ba7b0fcc44fe4896a690ecaa18db72a9fe47169 /lib/compiler/src/beam_dict.erl | |
parent | 6a3e878126da1e8d75c704510c7a7339ff306138 (diff) | |
download | otp-c758fa81e1c48c56ff20ef2a95e6424c1e69033a.tar.gz otp-c758fa81e1c48c56ff20ef2a95e6424c1e69033a.tar.bz2 otp-c758fa81e1c48c56ff20ef2a95e6424c1e69033a.zip |
sys_core_fold: Eliminate warnings for unused terms
The optimization introduced in 0a0d39d351fc would cause spurious
warnings of the type: "a term is constructed, but never used".
To avoid the warning, we must mark not only tuples and lists as
compiler_generated, but also each element. We must also propagate
compiler_generated annotations in lets. For example, if we have:
let <X -| ['compiler_generated']> = 42 in X + 1
we must propagate the compiler_generated annotation to the literal
when do constant propagation:
42 -| ['compiler_generated'] + 1
Diffstat (limited to 'lib/compiler/src/beam_dict.erl')
0 files changed, 0 insertions, 0 deletions