summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* PTX: Improve support for 64-bit addressingJustin Holewinski2011-03-233-21/+72
| | | | | | | | | - Fix bug in ADDRrr/ADDRri/ADDRii selection for 64-bit addresses - Add comparison selection for i64 - Add zext selection for i32 -> i64 - Add shl/shr/sha support for i64 llvm-svn: 128153
* 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
* Test case for r128150.Devang Patel2011-03-231-0/+23
| | | | llvm-svn: 128151
* Update type cache when a type is completed.Devang Patel2011-03-234-5/+28
| | | | | | Radar 9168773 llvm-svn: 128150
* Revert r128140 for now.Anders Carlsson2011-03-232-52/+0
| | | | llvm-svn: 128149
* Teach DelayedDiagnostic to copy its string, rather than hope that theDouglas Gregor2011-03-234-17/+55
| | | | | | | string itself lives longer than the DelayedDiagnostic. Fixes a recent use-after-free regression due to my availability attribute work. llvm-svn: 128148
* Ignore weak_import on Objective-C property and method declarations onDouglas Gregor2011-03-232-5/+5
| | | | | | all platforms, not just darwin. Fixes the regression in this test case. llvm-svn: 128147
* Fix PR9464 by correcting some math that just happened to be right in most casesCameron Zwarich2011-03-232-11/+26
| | | | | | that were hit in practice. llvm-svn: 128146
* Notify the delegate before removing dead values from a live interval.Jakob Stoklund Olesen2011-03-231-0/+2
| | | | | | The register allocator needs to know when the range shrinks. llvm-svn: 128145
* Allow the allocation of empty live ranges that have uses.Jakob Stoklund Olesen2011-03-231-1/+8
| | | | | | Empty ranges may represent undef values. llvm-svn: 128144
* Dump the register map before rewriting.Jakob Stoklund Olesen2011-03-231-1/+1
| | | | llvm-svn: 128143
* switch a few Driver APIs to use llvm::ArrayRef, cleaning up code.Chris Lattner2011-03-234-15/+12
| | | | llvm-svn: 128142
* remove a dead variable.Chris Lattner2011-03-231-1/+0
| | | | llvm-svn: 128141
* A global variable with internal linkage where all uses are in one function ↵Anders Carlsson2011-03-232-0/+52
| | | | | | and whose address is never taken is a non-escaping local object and can't alias anything else. llvm-svn: 128140
* Fix crash in clang_getInstantiationLoc() when ↵Ted Kremenek2011-03-232-9/+32
| | | | | | | | SourceManager::getInstantiationLoc() can return a SourceLocatin with an invalid FileID on invalid code. Fixes <rdar://problem/9164623>. llvm-svn: 128139
* std::vector::data() is not portable to VS. Use a gross hack instead.Ted Kremenek2011-03-231-1/+3
| | | | llvm-svn: 128138
* linux: simple support for process input and outputStephen Wilson2011-03-233-0/+72
| | | | llvm-svn: 128137
* Eliminate a pile of "type qualifiers ignored on function return type" warnings.Stephen Wilson2011-03-232-2/+2
| | | | llvm-svn: 128136
* Update autogen'd LLDB_vers.c.Stephen Wilson2011-03-231-1/+1
| | | | | | | | The makefile build uses scripts/generate-vers.pl to build an appropriate LLDB_vers.c file. The declarations for these symbols now carry a liblldb_core prefix so update the script to generate the correct names. llvm-svn: 128135
* Add a missing include needed on Linux and remove a trailing comma.Stephen Wilson2011-03-232-3/+4
| | | | llvm-svn: 128134
* linux: add Host/linux subdirectoryStephen Wilson2011-03-234-1/+55
| | | | | | | Start putting linux specific host code in its own directory. For now, just implement Host::GetOSVersion. llvm-svn: 128133
* Added block number and name to isel debug output.Andrew Trick2011-03-231-12/+25
| | | | | | | | I'm tired of doing this manually for each checkout. If anyone knows a better way debug isel for non-trivial tests feel free to revert and let me know how to do it. llvm-svn: 128132
* Checked in a modified test script to go with rdar://problem/9173060:Johnny Chen2011-03-231-0/+8
| | | | | | test suite: lldb hangs while running unique-types llvm-svn: 128131
* Update the Clang attribute emitter to handle attributes of 'version'Douglas Gregor2011-03-231-0/+46
| | | | | | | kind, and fix serialization/deserialization of IdentifierInfo attributes. These are requires for the new 'availability' attribute. llvm-svn: 128130
* Convert OffsetFromNearestVBast parameter of InitializeVTablePointer(s) toKen Dyck2011-03-232-14/+15
| | | | | | CharUnits. No change in functionality intended. llvm-svn: 128129
* linux: PlatformLinux improvementsStephen Wilson2011-03-232-10/+100
| | | | | | | Add a few missing virtual methods to PlatformLinux and have it register itself with PluginManager. llvm-svn: 128128
* Implement a new 'availability' attribute, that allows one to specifyDouglas Gregor2011-03-2345-109/+1060
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix test suite failures by modifying the script for testing abbreviations.Johnny Chen2011-03-231-2/+2
| | | | | | Failures were due to new commands introduced. llvm-svn: 128125
* Fix compile warnings wrt LLDBWrapPython.cpp.Johnny Chen2011-03-231-2/+2
| | | | llvm-svn: 128124
* Added new platform commands:Greg Clayton2011-03-2319-135/+848
| | | | | | | | | | | | | | | | platform connect <args> platform disconnect Each platform can decide the args they want to use for "platform connect". I will need to add a function that gets the connect options for the current platform as each one can have different options and argument counts. Hooked up more functionality in the PlatformMacOSX and PlatformRemoteiOS. Also started an platform agnostic PlatformRemoteGDBServer.cpp which can end up being used by one or more actual platforms. It can also be specialized and allow for platform specific commands. llvm-svn: 128123
* For ARM Disassembler, start a newline to dump the opcode and friends for an ↵Johnny Chen2011-03-221-1/+1
| | | | | | | | instruction. Change inspired by llvm-bug 9530 submitted by Jyun-Yan You. llvm-svn: 128122
* Fix an error with the declaration of block parameters that dependJohn McCall2011-03-222-5/+19
| | | | | | | on previous block parameters that crept in as part of my captures work a month or so ago. llvm-svn: 128121
* Add disassembly test cases for:Johnny Chen2011-03-222-0/+6
| | | | | | A8.6.292 VCMPE llvm-svn: 128120
* Remove the test.Devang Patel2011-03-221-19/+0
| | | | llvm-svn: 128119
* Warn about unused declaration-specifiers on tag declarations.John McCall2011-03-223-10/+54
| | | | llvm-svn: 128118
* RIT_ARM_ThumbBranch32Bit relocations are not used and should never be generated.Owen Anderson2011-03-221-6/+2
| | | | | | | This fixes kimwitu++, bullet, and tramp3dv4 with the ARM integrated assembler. Fixes <rdar://problem/9165738>. llvm-svn: 128117
* Added Mac OS X build instructions and included the Linux build instructionsGreg Clayton2011-03-222-0/+133
| | | | | | that Stephen Wilson sent out. llvm-svn: 128116
* More fixes for ARM instruction emulation code:Caroline Tice2011-03-221-13/+36
| | | | | | | | - Remove duplicate write from EmulateLDRRtPCRelative. - Add a missing encoding to EmulateADDSPImm. - Fix minor problems in Thumb instruction tables. llvm-svn: 128115
* Reapply r128045 and r128051 with fixes.Jakob Stoklund Olesen2011-03-224-57/+94
| | | | | | | | | | | | | | | | This will extend the ranges of debug info variables in registers until they are clobbered. Fix 1: Don't mistake DBG_VALUE instructions referring to incoming arguments on the stack with DBG_VALUE instructions referring to variables in the frame pointer. This fixes the gdb test-suite failure. Fix 2: Don't trace through copies to physical registers setting up call arguments. These registers are call clobbered, and the source register is more likely to be a callee-saved register that can be extended through the call instruction. llvm-svn: 128114
* LDRT and LDRBT was incorrectly tagged as IndexModeNone during the ↵Johnny Chen2011-03-222-2/+5
| | | | | | | | | | refactorings (r119821). We now tag them as IndexModePost. This fixed http://llvm.org/bugs/show_bug.cgi?id=9530. llvm-svn: 128113
* Try to appease buildbot gods.Devang Patel2011-03-221-1/+1
| | | | llvm-svn: 128112
* Added AVX support to the Intel portion of debugserver. AVXSean Callanan2011-03-228-349/+1522
| | | | | | | autodetection is not yet implemented, but the structures and register reading/writing code are there. llvm-svn: 128111
* Make the definition of "long double" consistent for llvm::Triple::Win32 forEli Friedman2011-03-221-1/+3
| | | | | | both 32-bit and 64-bit targets. llvm-svn: 128110
* 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
* Add a lto_codegen_compile_to_file to avoid producing a file, reading it toRafael Espindola2011-03-226-73/+70
| | | | | | memory and writing it back to disk. llvm-svn: 128108
* A bit more analysis of a memset-related README entry.Eli Friedman2011-03-221-4/+5
| | | | llvm-svn: 128107
* Add one more test case for VFP Load/Store Multiple (vpop).Johnny Chen2011-03-221-0/+3
| | | | llvm-svn: 128106
* Hopefully fix VS build by not using std::vector::data().Ted Kremenek2011-03-221-3/+6
| | | | llvm-svn: 128105
* 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
OpenPOWER on IntegriCloud