diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2019-12-05 23:41:47 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2019-12-10 23:26:23 +0100 |
| commit | 5d02fb958506ba44d85b449bef68883c68d6ecfa (patch) | |
| tree | 8abfeab6e1d54690e23b89c86a1745670bf54a82 /validation/expand | |
| parent | 706254f20d357735884c5e7b78c03d49bcad9cd3 (diff) | |
| download | sparse-dev-5d02fb958506ba44d85b449bef68883c68d6ecfa.tar.gz | |
fix simplify_loads() when doing type punning
When doing loads simplification for a location where
floats & integers are mixed, loads are systematically
replaced with the value of their dominating memop (this
checks if the corresponding write or load overlaps).
However, this must not be done if the involved operations
are doing some form of integer/float type punning.
Fix this by refusing to convert load of an integer by a
previous float value or the opposite.
Note: another way to describe this problem would be to say
that floats need to have their own memory operations:
OP_FSTORE & OP_FLOAD
or that instructions need to have some form of 'machine type'
in addition of the size (like clang's i32/f32, ...).
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/expand')
0 files changed, 0 insertions, 0 deletions
