summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/global-init.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-02-27 00:05:29 +0000
committerJordan Rose <jordan_rose@apple.com>2013-02-27 00:05:29 +0000
commit4a7bf49bd410d85299b6a4cdf60b50007e516a57 (patch)
tree266c85488870f54e93e04608c7d7ffaa64bc6457 /clang/test/CodeGenCXX/global-init.cpp
parent5ae44d2b759f7a7304d84f892e3eb3c2d0b87a50 (diff)
downloadbcm5719-llvm-4a7bf49bd410d85299b6a4cdf60b50007e516a57.tar.gz
bcm5719-llvm-4a7bf49bd410d85299b6a4cdf60b50007e516a57.zip
[analyzer] If a struct has a partial lazy binding, its fields aren't Undef.
This is essentially the same problem as r174031: a lazy binding for the first field of a struct may stomp on an existing default binding for the entire struct. Because of the way RegionStore is set up, we can't help but lose the top-level binding, but then we need to make sure that accessing one of the other fields doesn't come back as Undefined. In this case, RegionStore is now correctly detecting that the lazy binding we have isn't the right type, but then failing to follow through on the implications of that: we don't know anything about the other fields in the aggregate. This fix adds a test when searching for other kinds of default values to see if there's a lazy binding we rejected, and if so returns a symbolic value instead of Undefined. The long-term fix for this is probably a new Store model; see <rdar://problem/12701038>. Fixes <rdar://problem/13292559>. llvm-svn: 176144
Diffstat (limited to 'clang/test/CodeGenCXX/global-init.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud