laforge/swu
master
android-2.3.3-1
android-2.3.3
5.9.3
6.0dr7
5.9.3rc1
5.9.3dr4
5.9.3dr3
5.9.3dr2
5.9.3dr1
5.9.2
5.9.2rc2
5.9.2rc1
5.9.2dr2
5.9.2dr1
5.9.1
5.9.1rc1
5.9.1dr1
5.9.0
5.9.0rc1
5.9.0dr2
5.9.0dr1
5.8.4
5.8.3
5.8.3rc1
5.8.2
5.8.2rc2
5.8.2rc1
5.8.2dr2
5.8.2dr1
5.8.1
5.8.1rc2
5.8.1dr1
5.8.0
5.8.0rc1
5.8.0dr2
5.7.2
5.7.2rc1
5.7.2dr4
5.7.2dr3
5.7.2dr2
5.7.2dr1
5.7.1
5.7.0
5.7.0rc2
5.7.0rc1
5.7.0dr8
5.7.0dr6
5.7.0dr5
5.7.0dr4
5.7.0dr3
5.7.0dr2
5.7.0dr1
5.6.3
5.6.3rc1
5.6.3dr2
5.6.3dr1
5.6.2
5.6.2rc1
5.6.2dr4
5.6.2dr3
5.6.2dr2
5.6.2dr1
5.6.1
5.6.1rc1
5.6.1dr3
5.6.1dr2
5.6.1dr1
5.6.0
5.6.0rc2
5.6.0rc1
5.6.0dr4
5.6.0dr3
5.6.0dr2
5.6.0dr1
5.5.3
5.5.3dr2
5.5.3dr1
5.5.2
5.5.2rc1
5.5.2dr7
5.5.2dr6
5.5.2dr5
5.5.2dr4
5.5.2dr3
5.5.2dr2
5.5.2dr1
5.5.1
5.5.1rc2
5.5.1rc1
5.5.1dr5
5.5.1dr4
5.5.1dr3
5.5.1dr2
5.5.1dr1
5.5.0
5.5.0rc1
5.5.0dr1
5.4.1dr4
5.4.1dr3
5.4.1dr2
5.4.1dr1
5.4.0
5.4.0rc1
5.4.0dr8
5.4.0dr7
5.4.0dr6
5.4.0dr5
5.4.0dr4
5.4.0dr3
5.4.0dr2
5.4.0dr1
5.3.5
5.3.4
5.3.4rc1
5.3.4dr3
5.3.4dr2
5.3.4dr1
5.3.3
5.3.3rc2
5.3.3dr6
5.3.3dr5
5.3.3dr4
5.3.3dr3
5.3.3dr1
5.3.2
5.3.1
5.3.1rc1
5.3.1dr1
5.3.0
5.3.0rc1
5.3.0dr1
5.2.2
5.2.2rc1
5.2.2dr1
5.2.1
5.2.1rc1
5.2.1dr1
5.2.0
5.2.0rc1
5.2.0dr6
5.2.0dr5
5.2.0dr4
5.2.0dr3
5.2.0dr2
5.2.0dr1
5.1.3
5.1.3rc1
5.1.3dr1
5.1.2
5.1.2rc2
5.1.2rc1
5.1.2dr3
5.1.2.dr2
5.1.2dr1
5.1.1
5.1.1rc1
5.1.1dr4
5.1.1dr3
5.1.1dr2
5.1.1dr1
5.1.0
5.1.0rc1
5.1.0dr2
5.1.0dr1
5.0.4
5.0.3
5.0.3rc1
5.0.3dr3
5.0.3dr2
5.0.3dr1
5.0.2
5.0.2rc1
5.0.2dr4
5.0.1
5.0.0
4.6.4
4.6.3
4.6.2
4.6.1
4.6.0
4.5.3
4.5.2
4.5.1
4.5.0
4.3.7
4.4.1
4.4.0
4.3.6
4.3.5
4.3.5rc1
4.3.4
4.3.3
4.2.17
4.2.16
4.3.2
4.3.1
4.2.15
4.2.14
4.3.0
4.2.13
4.2.12
4.2.11
4.2.10
4.2.8
4.2.9
4.2.7
4.2.6
4.2.5
4.2.4
4.2.3
4.2.1
4.2.2
4.2.0
4.1.11
4.1.10
4.1.9
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.7
4.0.6
4.0.5
4.0.4
4.0.3
4.0.2
4.0.1
4.0.0
${ noResults }
1 Commits (laforge/swu)
Author | SHA1 | Message | Date |
---|---|---|---|
![]() |
8ea13bbc5c |
lgtm: Add query to detect problematic uses of chunk_from_chars()
GCC 9+ and clang 4+ (partially) optimize out usages of chunk_from_chars() if the value is read outside of the block where the macro is used. For instance: ``` chunk_t chunk = chunk_empty; if (...) { chunk = chunk_from_chars(0x01, 0x06); } /* do something with chunk */ ``` The chunk_from_chars() macro expands to a chunk_t declaration, which is technically only defined inside that block. Still, with older GCC versions the fourth line was compiled to something like this: ``` mov WORD PTR [rsp+14], 1537 # 0x0106 in little-endian lea rdx, [rsp+14] mov ecx, 2 ``` However, with GCC 9.1 and -O2 the first instruction might be omitted (strangely the others usually were not, so the chunk pointed to whatever was stored on the stack). It's not easily reproducible, so there are situations where the seemingly identical code is not optimized in this way. This query should detect such problematic uses of the macro (definition and usage in different blocks). References #3249. |
3 years ago |