aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
2010-08-15Explicitly handle every case in the switch in RTTIBuilder::BuildTypeInfo.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111085 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-14More cleanup enabling.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111070 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-13Sketch out a framework for delaying the activation of a cleanup.John McCall
Not yet complete or used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111044 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-13Zap unused UnaryOperator::OffsetOf.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110996 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-13Make use of __func__ in a block actually refer toFariborz Jahanian
block's helper function. Fixes radar 7860965. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110988 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-12Just disable the hidden-visibility optimization for now by hiding it behindJohn McCall
a -cc1 option. The Darwin linker complains about mixed visibility when linking gcc-built objects with clang-built objects, and the optimization isn't really that valuable. Platforms with less ornery linkers can feel free to enable this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110979 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-12Implement RTTI generation for Objective C types. Fixes PR7864.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110900 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-12Emit debug info for static const class member.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110885 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11Revise r110163: don't mark weak functions nounwind, because the optimizerJohn McCall
treats that as a contract to be fulfilled by any replacements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110864 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11Emit a stop point for delegate constructor call. This gives user a chance to ↵Devang Patel
step into constructor body. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110853 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11When re-raising an exception after a cleanup, we need to call ↵John McCall
_Unwind_Resume_or_Rethrow instead of _Unwind_Resume. With SJLJ exceptions, this is spelled "_Unwind_SjLj_Resume_or_Rethrow", not "_Unwind_SjLj_Resume", which has significantly different semantics. We should actually never be generating a call to _Unwind_SjLj_Resume directly; even if we were generating true cleanups (which we aren't because of the horrible hack), we should be calling __cxa_end_cleanup() on ARM. I haven't implemented this because there's little point as long as the HH is present. I believe this fixes <rdar://problem/8281377>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110851 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11Work in progress for PR7864. Someone more familiar with ObjC++ needs to fillEli Friedman
in the code after the "FIXME: Needs to be written". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110849 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11IRGen support for functions returning objc objectFariborz Jahanian
types. Fixes PR7865. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110832 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11Fix a bug in @finally emission in both the fragile and non-fragile EH schemesJohn McCall
where we weren't accounting for the possibility that a @finally block might have internal cleanups and therefore might write to the cleanup destination slot. Fixes <rdar://problem/8293901>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110760 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10SimplifyDevang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110716 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10Slightly revised handling of mult-alt constraints, to avoid an assert, until ↵John Thompson
we have the full fix. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110706 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10When initializing a static local, pop the guard-abort EH cleanup afterJohn McCall
the variable is fully initialized. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110704 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10Do not use DIGlobalVariable to emit debugging information for enums.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110697 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10Simplify code and add comments, in code that generate debug info for ↵Devang Patel
constant integer globals, based on Chris's feedback. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110694 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-10Even if a constant's evaluated value is used, emit debug info for the ↵Devang Patel
constant variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110660 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-09Support ObjC implementation decls for PCH.Argyrios Kyrtzidis
Strictly speaking, implementations don't go in headers but there's no law against it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110567 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-08Thread local variables aren't considered common linkage.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110530 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-07Allow reference binding of a reference of Objective-C object type toDouglas Gregor
an lvalue of another, compatible Objective-C object type (e.g., a subclass). Introduce a new initialization sequence step kind to describe this binding, along with a new cast kind. Fixes PR7741. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110513 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-07Inline a special case of EmitAggregateCopy into EmitNullInitializationJohn McCall
to avoid the awesome-but-wrong-in-this-case assertion in the canon EAC. Fixes PR7834. Also fix a subtle address-space bug in the memset path. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110511 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-07Store inheritance paths after CastExprs instead of inside them.John McCall
This takes some trickery since CastExpr has subclasses (and indeed, is abstract). Also, smoosh the CastKind into the bitfield from Expr. Drops two words of storage from Expr in the common case of expressions which don't need inheritance paths. Avoids a separate allocation and another word of overhead in cases needing inheritance paths. Also has the advantage of not leaking memory, since destructors for AST nodes are never run. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110507 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-07Correct -ftrapv to trap on errors, instead of calling theChris Lattner
__overflow_handler entrypoint that David Chisnall made up. Calling __overflow_handler is not part of the contract of -ftrapv provided by GCC, and should never have been checked in in the first place. According to: http://permalink.gmane.org/gmane.comp.compilers.clang.devel/8699 David is using this for some of arbitrary precision integer stuff or something, which is not an appropriate thing to implement on this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110490 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06Initialize variable to work around warning; unfortunately, there isn't anyEli Friedman
way to tell gcc "really, values outside the enum aren't valid". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110450 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06Finishing up block variable layout API by supporting Fariborz Jahanian
union type variables and their nesting inside other aggregate types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110448 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06vdup_lane was missingNate Begeman
<rdar://problem/8278732> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110420 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06Attempt to fix uninitialized value warning reported on cfe-commits.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110418 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Don't crash when mangling empty anonymous unions. We never actually *need*John McCall
these, but it's convenient to mangle them when deferring them (in the 99.99% case where it's not an anonymous union, of course). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110381 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Add support for block imported struct variable layout info.Fariborz Jahanian
(objc gc and blocks in NeXt runtime). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110377 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05It turns out that linkers (at least, the Darwin linker) don't necessarilyJohn McCall
do the right thing with mixed-visibility symbols, so disable the visibility optimization where that's possible, i.e. with template classes (since it's possible that an arbitrary template might be subject to an explicit instantiation elsewhere). 447.dealII actually does this. I've put the code under an option that's currently not hooked up to anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110374 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Argument evaluation order is not guaranteed. Split these out to force an order.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110354 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Fix a major bug with -ftrapv and ++/--. Patch by David Keaton!John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110347 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05For now skip over aggregate non-byref block variables.Fariborz Jahanian
(objc gc specific). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110340 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Trying to unbreak buildbot.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110339 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Add IRGen support for non-constant OffsetOfExpr.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110326 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Implement #pragma GCC visibility.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110315 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-05Clean up of my last patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110290 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Block variable layout bitmap API generation.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110287 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Extend the visibility-hidden optimization to linkonce_odr thunks forJohn McCall
functions with in-line definitions, since such thunks will be emitted at any use of the function. Completes the feature work for rdar://problem/7523229. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110285 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04More objc block variable layout info. work.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110239 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Some early work for providing block layout info. Fariborz Jahanian
for objective-c/c++ blocks (NeXt runtime). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110213 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Emit standard-library RTTI with external linkage, not weak_odr.John McCall
Apply hidden visibility to most RTTI; libstdc++ does not rely on exact pointer equality for the type info (just the type info names). Apply the same optimization to RTTI that we do to vtables. Fixes PR5962. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110192 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Extend the hidden-visibility vtables optimization to template classes thatJohn McCall
haven't been explicitly instantiated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110189 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04Some more correctness fixes and code-size optimizations for fragile-ABIJohn McCall
ObjC exceptions: - don't enter a try for the catch blocks unless there's a finally - put the setjmp buffer in the locals set for liveness reasons - dump the sync object into an alloca in the locals set for liveness reasons Some of this can go away if the backend starts to properly calculate liveness in the presence of setjmp (which would also be a *much* stabler solution). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110188 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03Do a very simple pass over every function we emit to infer whether we canJohn McCall
mark it nounwind based on whether it contains any non-nounwind calls. <rdar://problem/8087431> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110163 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03Add support for VFP status & control operations for ARM.Nate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110153 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03Emit weak vtables of non-template classes with hidden visibility.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110107 91177308-0d34-0410-b5e6-96231b3b80d8