staticanalysis / memory-sanitizer

Automatically exported from code.google.com/p/memory-sanitizer
0 stars 0 forks source link

Precise instrumentation of select IR instruction #50

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Some bits of select result do not depend on select condition, and must stay 
initialized even if select condition is not. These are the bits that are equal 
and initialized in both left and right select arguments.

We hit this issue here:
https://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/arm64/simu
lator-arm64.cc?spec=svn20227&r=20213#2112

"topbits" has a bunch of zeroes in lower bits, but we mark the entire result as 
uninitialized.

Original issue reported on code.google.com by euge...@google.com on 25 Mar 2014 at 9:40

GoogleCodeExporter commented 9 years ago
Should be fixed in r204715, r204717.

A workaround is to move "<< (diff + 1)" chunk from line 2111 to line 2112 (i.e. 
instead of 
... ? (... << ...) : 0
do
(... ? ... : 0) << ...

Original comment by euge...@google.com on 25 Mar 2014 at 1:18