llvm-project/clang/lib
Douglas Gregor 7c38f153ac Rework our handling of binding a reference to a temporary
subobject. Previously, we could only properly bind to a base class
subobject while extending the lifetime of the complete object (of a
derived type); for non-static data member subobjects, we could memcpy
(!) the result and bind to that, which is rather broken.

Now, we pull apart the expression that we're binding to, to figure out
which subobject we're accessing, then construct the temporary object
(adding a destruction if needed) and, finally, dig out the subobject
we actually meant to access.

This fixes yet another instance where we were memcpy'ing rather than
doing the right thing. However, note the FIXME in references.cpp:
there's more work to be done for binding to subobjects, since the AST
is incorrectly modeling some member accesses in base classes as
lvalues when they are really rvalues.

llvm-svn: 104219
2010-05-20 08:36:28 +00:00
..
AST Support implicitly closing on 'this' in a block. Fixed PR7165. 2010-05-20 01:18:31 +00:00
Analysis Don't add a null successor to a CFGBlock when the contents of an @synchronized statement is empty. 2010-05-13 16:38:08 +00:00
Basic Update the types for warning option subgroup arrays to 'short', we have more 2010-05-13 07:43:05 +00:00
Checker Add clang support for IBOutletCollection. 2010-05-19 17:38:06 +00:00
CodeGen Rework our handling of binding a reference to a temporary 2010-05-20 08:36:28 +00:00
Driver Expose -fobjc-nonfragile-abi2 as a top-level clang driver option. Fixes <rdar://problem/8007063>. 2010-05-20 02:12:37 +00:00
Frontend Added basic source locations to Elaborated and DependentName types. 2010-05-19 21:37:53 +00:00
Headers fix _mm_shuffle_pd too, thanks to Joel Falcou for pointing this out. 2010-05-15 16:54:46 +00:00
Index Substantially alter the design of the Objective C type AST by introducing 2010-05-15 11:32:37 +00:00
Lex robustify the conflict marker stuff. Don't add 7 twice, which would 2010-05-17 20:27:25 +00:00
Parse Added basic source locations to Elaborated and DependentName types. 2010-05-19 21:37:53 +00:00
Rewrite Add a write(raw_ostream&) method to RewriteBuffer. This uses an inefficient 2010-04-16 18:49:45 +00:00
Runtime build: Add CLANG_NO_RUNTIME build variable, which disables building clang 2010-04-28 23:36:26 +00:00
Sema Whoops. 2010-05-20 07:13:26 +00:00
CMakeLists.txt Split libAnalysis into two libraries: libAnalysis and libChecker. 2010-01-25 04:41:41 +00:00
Makefile Split libAnalysis into two libraries: libAnalysis and libChecker. 2010-01-25 04:41:41 +00:00