summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Convert FinalOverriders::Offset to CharUnits. No change in functionalityKen Dyck2011-03-261-8/+8
| | | | | | intended. llvm-svn: 128321
* Convert offset in MethodBaseOffsetPairTy to CharUnits. No change inKen Dyck2011-03-261-9/+8
| | | | | | functionality intended. llvm-svn: 128318
* Convert the offsets in SubobjectOffsetMapTy to CharUnits. No change inKen Dyck2011-03-261-8/+8
| | | | | | functionality intended. llvm-svn: 128317
* Convert several local variables to CharUnits. No change in functionalityKen Dyck2011-03-261-45/+39
| | | | | | intended. llvm-svn: 128315
* Provide blockDecl's startLoc to startFunction. This fixes hidden bug exposed ↵Devang Patel2011-03-251-1/+1
| | | | | | by recent code gen changes. This is tested by global-blocks-lines.exp in gdb testsuite. llvm-svn: 128303
* Obj-C/NeXT: Update and reapply 108847, now that changes are more baked.Daniel Dunbar2011-03-251-5/+15
| | | | llvm-svn: 128300
* Refactor CGObjCMac to use the shared code for EH stuff.David Chisnall2011-03-251-154/+7
| | | | | | Sanity checked by John McCall. llvm-svn: 128287
* Unbreak CMake build.Anders Carlsson2011-03-251-0/+1
| | | | llvm-svn: 128276
* Added some doc comments.David Chisnall2011-03-251-14/+263
| | | | llvm-svn: 128275
* Continuing work on ObjC tidyup:David Chisnall2011-03-254-449/+427
| | | | | | | | | | | | | | | | - Moved the CGObjCRuntime functions out of CGObjCMac.cpp into CGObjCRuntime.cpp - Added generic functions in CGObjCRuntime for emitting @try and @synchronize blocks, usable by any runtime that uses DWARF exceptions. - Made the GNU runtimes use these functions. It should now be possible to replace the equivalent functions in CGObjCNonFragileABIMac with simple calls to these two functions, providing the runtime functions as arguments. I'll post a diff to the list for review before making any changes to the Mac runtime stuff. llvm-svn: 128274
* Make sure we aggressively attach nounwind (etc.) to calls to libraryEli Friedman2011-03-241-2/+1
| | | | | | functions of the form __builtin_XXX. llvm-svn: 128198
* Convert the BaseOffset member of BaseSubobject to CharUnits from bits. NoKen Dyck2011-03-245-82/+104
| | | | | | change in functionality intended. llvm-svn: 128190
* Fixed type error in last commit (forgot that now that selectors are notDavid Chisnall2011-03-231-147/+199
| | | | | | | | | | | | | accessed via the indirect pointer, they don't need to be pointers to pointers). Finished moving the message lookup code into separate subclasses for each runtime. Also performed a few smallish related tidies. We're now bitcasting the result of the message lookup functions, rather than casting the lookup functions themselves, so the messages.m test needed updating to reflect this. llvm-svn: 128180
* Revert r128156 because of CodeGenObjC/messages.m and Coverage/codegen-gnu.m.Andrew Trick2011-03-231-9/+10
| | | | llvm-svn: 128157
* Remove the redundant loads / stores to globals that we were generating for ↵David Chisnall2011-03-231-10/+9
| | | | | | selectors (GNU runtimes). llvm-svn: 128156
* Initial work on refactoring GNU runtime code (long overdue - it's quite obviousDavid Chisnall2011-03-231-298/+349
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that I hadn't used C++ for several years before writing most of this code). Still lots more to do. This set of changes includes: - Remove the distinction between typed and untyped selectors. More accurately reflect what the runtime does, by using typed selectors everywhere, with an empty type field if the types are unknown. Now we just store a small list of types for each selector (in theory, this should always be exactly one, but this constraint was not enforced back in 1986 when it should have been). - Add some consistency to how runtime functions are created. These are all generated via the LazyRuntimeFunction class (which might be useful outside CGObjCGNU - feel free to move it into a header if it is). This function stores the types of a function, looks it up the first time it's used, and caches the result. This means that we're now not wasting time constructing the llvm::FunctionType every time some of the functions are looked up, but also not inserting references to runtime functions into the module if they're not actually used. - Started separating out the fragile and non-fragile ABI behaviours into two subclasses of CGObjCGNU: CGObjCGCC for the legacy GCC runtime ABI and CGObjCGNUstep for the new GNUstep ABI. Not all of the differences in behaviour are factored out yet, but they will be in future commits. - Removed all of the CodeGen:: things: we've been using namespace CodeGen in this file for ages, so having explicit namespace specifiers is just a bit confusing. - Added a few more comments. - Used llvm::StringRef instead of std::string in a few places. - Finally got around to storing the module path in the module structure. The ABI says that the compiler should do this, although it's not used in the runtime or exposed outside the runtime, so it's pretty useless. Still to do: - We currently have two code paths for generating try blocks, one for ObjC and one for ObjC++. Not only are these substantially similar, they are also very similar to the CGObjCMac version. These need factoring out into a single parameterised implementation, either in CGObjCRuntime or CodeGenFunction. The EmitObjCXXTryStmt() function was added so that the changes to fix a bug in time for the 2.9 release would be self-contained and reduce the chances of breaking anything else, but these should be done properly as soon as possible. - Split up some large functions (e.g. GenerateClass()) into smaller functions for generating the various data structures. - The method lookup code into the two subclasses, removing the conditionals in the message send functions. - Add doxygen comments on the remaining undocumented functions. - We seem to be generating global pointer variables for selectors, then storing a pointer to the selector, then generating a load of this pointer (and then a load of the real selector later) every time a static selector is used. I can only assume I was asleep or drunk when I did this - we should just be referencing the selectors directly in the selector array. llvm-svn: 128152
* Update type cache when a type is completed.Devang Patel2011-03-234-5/+28
| | | | | | Radar 9168773 llvm-svn: 128150
* Convert OffsetFromNearestVBast parameter of InitializeVTablePointer(s) toKen Dyck2011-03-232-14/+15
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128129
* Implement a new 'availability' attribute, that allows one to specifyDouglas Gregor2011-03-232-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | which versions of an OS provide a certain facility. For example, void foo() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6))); says that the function "foo" was introduced in 10.2, deprecated in 10.4, and completely obsoleted in 10.6. This attribute ties in with the deployment targets (e.g., -mmacosx-version-min=10.1 specifies that we want to deploy back to Mac OS X 10.1). There are several concrete behaviors that this attribute enables, as illustrated with the function foo() above: - If we choose a deployment target >= Mac OS X 10.4, uses of "foo" will result in a deprecation warning, as if we had placed attribute((deprecated)) on it (but with a better diagnostic) - If we choose a deployment target >= Mac OS X 10.6, uses of "foo" will result in an "unavailable" warning (in C)/error (in C++), as if we had placed attribute((unavailable)) on it - If we choose a deployment target prior to 10.2, foo() is weak-imported (if it is a kind of entity that can be weak imported), as if we had placed the weak_import attribute on it. Naturally, there can be multiple availability attributes on a declaration, for different platforms; only the current platform matters when checking availability attributes. The only platforms this attribute currently works for are "ios" and "macosx", since we already have -mxxxx-version-min flags for them and we have experience there with macro tricks translating down to the deprecated/unavailable/weak_import attributes. The end goal is to open this up to other platforms, and even extension to other "platforms" that are really libraries (say, through a #pragma clang define_system), but that hasn't yet been designed and we may want to shake out more issues with this narrower problem first. Addresses <rdar://problem/6690412>. As a drive-by bug-fix, if an entity is both deprecated and unavailable, we only emit the "unavailable" diagnostic. llvm-svn: 128127
* Convert NonVirtual parameter of ApplyNonVirtualAndVirtualOffset() toKen Dyck2011-03-231-8/+11
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128126
* Simplify Mac runtime selection - it's the factory function's job to select ↵David Chisnall2011-03-223-16/+4
| | | | | | which class to produce, not CodeGenModule's. llvm-svn: 128109
* Make the property accessor functions that take a ptrdiff_t actually take a ↵David Chisnall2011-03-222-4/+6
| | | | | | ptrdiff_t instead of a long (should have no impact on any sane platforms, but win64 is not sane). llvm-svn: 128104
* Make the ivar offset always be a ptrdiff_t, because stuff in CGObjC.cpp ↵David Chisnall2011-03-221-3/+5
| | | | | | expects this. Actually, it expects a long, but that's a bug that will be fixed in the next commit... llvm-svn: 128102
* Fix typo in comment.Nick Lewycky2011-03-221-1/+1
| | | | llvm-svn: 128088
* Frontend: Add a more explicit -backend-option flag for passing backend commandDaniel Dunbar2011-03-221-0/+2
| | | | | | | | line options, instead of leveraging the blanket -mllvm option. - This allows using the frontend itself without requiring the backend have those options available (i.e., if the target wasn't built). llvm-svn: 128087
* The emission of an Objective-C++'s class .cxx_destruct method should beJohn McCall2011-03-222-55/+123
| | | | | | | conditioned on whether it has any destructible ivars, not on whether it has any non-trivial class-object initializers. llvm-svn: 128074
* Convert Offset variable in GetAddressOfDirectBaseInCompleteClass() toKen Dyck2011-03-221-5/+5
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128060
* Change return value of ComputeNonVirtualBaseClassOffset() to CharUnits. NoKen Dyck2011-03-221-13/+13
| | | | | | change in functionality intended. llvm-svn: 128050
* Eliminate some literal '8's in FillInNullDataMemberPointers() by switchingKen Dyck2011-03-221-5/+6
| | | | | | to CharUnits. No change in functionality intended. llvm-svn: 128047
* Fix Objective-C++ exceptions (GNU runtime).David Chisnall2011-03-204-3/+205
| | | | llvm-svn: 127980
* __cxa_atexit does not throw.Anders Carlsson2011-03-201-0/+2
| | | | llvm-svn: 127977
* Use CharUnits's new increment operator. No change in functionality intended.Ken Dyck2011-03-191-2/+2
| | | | llvm-svn: 127938
* Replace literal '8's with CharWidth in AppendBitField. No change inKen Dyck2011-03-191-13/+15
| | | | | | functionality intended. llvm-svn: 127927
* Add support for language-specific address spaces. On top of that,Peter Collingbourne2011-03-187-14/+22
| | | | | | | | | add support for the OpenCL __private, __local, __constant and __global address spaces, as well as the __read_only, _read_write and __write_only image access specifiers. Patch originally by ARM; language-specific address space support by myself. llvm-svn: 127915
* The Darwin kernel does not provide useful guard variable support.John McCall2011-03-183-0/+16
| | | | | | | | Issue this as an IR-gen error; it's not really worthwhile doing this "right", i.e. in Sema, because IR gen knows a lot of tricks beyond what the constant evaluator knows. llvm-svn: 127854
* Convert alignment values to CharUnits. No change in functionality intended.Ken Dyck2011-03-181-18/+18
| | | | llvm-svn: 127848
* Convert getSizeInBytes() to getSizeInChars(), which returns its result inKen Dyck2011-03-181-9/+10
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 127846
* Convert variables to CharUnits in ConvertStructToPacked(). No change inKen Dyck2011-03-181-12/+12
| | | | | | functionality intended. llvm-svn: 127844
* Remove code that was intentionally generating bad code on the GNU runtime ↵David Chisnall2011-03-171-1/+1
| | | | | | for no reason (failing to emit .cxx_constructor / .cxx_destructor methods). llvm-svn: 127806
* Convert NextOffsetInBytes to CharUnits and rename to NextOffsetInChars. NoKen Dyck2011-03-171-36/+40
| | | | | | change in functionality intended. llvm-svn: 127787
* Politely inform GCC that we will never fall off the end of that switch.Matt Beaumont-Gay2011-03-171-0/+1
| | | | llvm-svn: 127783
* PR9494: Get rid of bitcast which was both unnecessary and written incorrectly.Eli Friedman2011-03-161-3/+2
| | | | llvm-svn: 127768
* Fix foreign exception handling (GNU runtime).David Chisnall2011-03-161-6/+17
| | | | llvm-svn: 127736
* Don't emit read barriers for reading __weak __block variablesJohn McCall2011-03-161-4/+2
| | | | | | in non-GC mode. llvm-svn: 127725
* Reorganize the emission of (unfoldable) constant casts a bit, andJohn McCall2011-03-151-36/+97
| | | | | | | make sure that upcasts of member pointer types are covered as constants. Fixed rdar://problem/9130221 llvm-svn: 127702
* Reintroduce r127617: "Code generation for noexcept." with fixes.Sebastian Redl2011-03-151-17/+25
| | | | llvm-svn: 127685
* Introduce a CharUnits FieldOffsetInChars variable in AppendField() toKen Dyck2011-03-151-3/+7
| | | | | | | | replace some uses of FieldOffsetInBytes. The remaining uses of FieldOffsetInBytes will be replaced once NextFieldOffsetInBytes is converted to CharUnits. No change in functionality intended. llvm-svn: 127641
* Revert r127617: "Code generation for noexcept."Jakob Stoklund Olesen2011-03-151-25/+17
| | | | | | The tests fail in a -Asserts build. llvm-svn: 127635
* Switch from internal to linker_private linkage, it is sufficient to please ↵Rafael Espindola2011-03-141-1/+1
| | | | | | the new linker. llvm-svn: 127622
* Code generation for noexcept.Sebastian Redl2011-03-141-17/+25
| | | | llvm-svn: 127617
OpenPOWER on IntegriCloud