]> granicus.if.org Git - clang/commit
Significantly simplify CGExprAgg's logic about ignored results:
authorJohn McCall <rjmccall@apple.com>
Mon, 2 Jul 2012 23:58:38 +0000 (23:58 +0000)
committerJohn McCall <rjmccall@apple.com>
Mon, 2 Jul 2012 23:58:38 +0000 (23:58 +0000)
commite0c1168ec7910a1a7ed08df4d4f0c58c2fa2ecd1
treeaed58809e392029eb37c5a12f21da3e0b6156685
parent109e6de8db5614fa327754a279ca4f0be04dea3f
Significantly simplify CGExprAgg's logic about ignored results:
if we want to ignore a result, the Dest will be null.  Otherwise,
we must copy into it.  This means we need to ensure a slot when
loading from a volatile l-value.

With all that in place, fix a bug with chained assignments into
__block variables of aggregate type where we were losing insight into
the actual source of the value during the second assignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159630 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGExprAgg.cpp
lib/CodeGen/CGValue.h
lib/CodeGen/CodeGenFunction.h
test/CodeGen/block-byref-aggr.c