summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [mips] Move ABI-dependent register selections to MipsABIInfo. NFC.Daniel Sanders2015-04-176-49/+84
| | | | | | | | | | | | | | | | | | | | | Summary: For example, a common idiom was 'isN64 ? Mips::SP_64 : Mips::SP'. This has been moved to MipsABIInfo and replaced with 'ABI.GetStackPtr()'. There are others that should also be moved. This patch sticks to the ones that are obviously non-functional. The others have minor mistakes that need fixing at the same time, mostly involving checks for 64-bit GPR's instead of checks for 64-bit pointers. Reviewers: tomatabacu Reviewed By: tomatabacu Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D8972 llvm-svn: 235173
* Make several test case arm32 compatibleTamas Berghammer2015-04-174-3/+9
| | | | llvm-svn: 235172
* Fix mapping symbol handling on arm 32/64Tamas Berghammer2015-04-171-25/+31
| | | | | | | | | | | | The debug info section contains some $d mapping symbol what is overlapping with code sections in other sections of the object file causing problem in the address class detection. This CL ignores these symboles from the address class map as the debug info sections don't use this map. Differential revision: http://reviews.llvm.org/D9050 llvm-svn: 235171
* Revert r235154-r235156, they cause asserts when building win64 code ↵Nico Weber2015-04-1719-420/+361
| | | | | | (http://crbug.com/477988) llvm-svn: 235170
* XFAILing TestPrintStackTraces on linux to stabilize the build botPavel Labath2015-04-171-6/+4
| | | | llvm-svn: 235169
* Add a reduced testcase from pr23025.Rafael Espindola2015-04-171-0/+18
| | | | llvm-svn: 235168
* Don't walk aliases from global to local symbols in comdats.Rafael Espindola2015-04-172-1/+48
| | | | | | This fixes pr23196. llvm-svn: 235167
* Move fixit for const init from note to diag, weaken to warning in MS mode.Nico Weber2015-04-1714-43/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r235046 turned "extern __declspec(selectany) int a;" from a declaration into a definition to fix PR23242 (required for compatibility with mc.exe output). However, this broke parsing Windows headers: A d3d11 headers contain something like struct SomeStruct {}; extern const __declspec(selectany) SomeStruct some_struct; This is now a definition, and const objects either need an explicit default ctor or an initializer so this errors out with d3d11.h(1065,48) : error: default initialization of an object of const type 'const CD3D11_DEFAULT' without a user-provided default constructor (cl.exe just doesn't implement this rule, independent of selectany.) To work around this, weaken this error into a warning for selectany decls in microsoft mode, and recover with zero-initialization. Doing this is a bit hairy since it adds a fixit on an error emitted by InitializationSequence – this means it needs to build a correct AST, which in turn means InitializationSequence::Failed() cannot return true when this fixit is applied. As a workaround, the patch adds a fixit member to InitializationSequence, and InitializationSequence::Perform() prints the diagnostic if the fixit member is set right after its call to Diagnose. That function is usually called when InitializationSequences are used – InitListChecker::PerformEmptyInit() doesn't call it, but the InitListChecker case never performs default-initialization, so this is technically OK. This is the alternative, original fix for PR20208 that got reviewed in the thread "[patch] Improve diagnostic on default-initializing const variables (PR20208)". This change basically reverts r213725, adds the original fix for PR20208, and makes the error a warning in Microsoft mode. llvm-svn: 235166
* Write relocation sections contiguously.Rafael Espindola2015-04-175-11/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Linkers normally read all the relocations upfront to compute the references between sections. Putting them together is a bit more cache friendly. I benchmarked linking a Release+Asserts clang with gold on a vm. I tried all 4 combinations of --gc-sections/no --gc-section hot and cold cache. I cleared the cache with echo 3 > /proc/sys/vm/drop_caches and warmed it up by running the link once before timing the subsequent ones. With cold cache and --gc-sections the time goes from 1.86130781665 +- 0.01713126697463843 seconds to 1.82370735105 +- 0.014127522318814516 seconds With cold cache and no --gc-sections the time goes from 1.6087245435500002 +- 0.012999066825178644 seconds to 1.5687122041500001 +- 0.013145850126026619 seconds With hot cache and no --gc-sections the time goes from 0.926200939 ( +- 0.33% ) seconds to 0.907200079 ( +- 0.31% ) seconds With hot cache and gc sections the time goes from 1.183038049 ( +- 0.34% ) seconds to 1.147355862 ( +- 0.39% ) seconds llvm-svn: 235165
* Uses the target platform to determine the platform context.Robert Flack2015-04-172-12/+11
| | | | | | | | | | | | | | | Uses the target platform to determine the platform context to use. This fixes an early failure in some tests when running on a different remote target. Test Plan: ./dotest.py $DOTEST_OPTS -t -p TestGlobalVariables.py|TestSharedLib.py Running on macosx -> linux, this fails at a later stage in the test - rather than in registerSharedLibrariesWithTarget looking for a library without the correct "lib" prefix and ".so" suffix. Differential Revision: http://reviews.llvm.org/D9047 llvm-svn: 235164
* Revert file unintentionally changed in r235162.Daniel Jasper2015-04-171-1/+1
| | | | llvm-svn: 235163
* clang-format: Add default fallback style.Daniel Jasper2015-04-172-1/+2
| | | | | | Thanks to Michael Schlottke. llvm-svn: 235162
* [MS ABI] Use the right types for filter and finally blocksDavid Majnemer2015-04-175-52/+54
| | | | | | | The type for abnormal_termination can't be an i1, it an i8. Filter functions return 'LONG', not 'int'. llvm-svn: 235161
* [opaque pointer type] Explicit pointee type for call instructionDavid Blaikie2015-04-175-12/+31
| | | | | | | | | | Use an extra bit in the CCInfo to flag the newer version of the instructiont hat includes the type explicitly. Tested the newer error cases I added, but didn't add tests for the finer granularity improvements to existing error paths. llvm-svn: 235160
* Narrow down the type of CallInst::getFunctionType to a FunctionTypeDavid Blaikie2015-04-171-2/+3
| | | | llvm-svn: 235159
* Add a "force_kill" arg to Process::Destroy(). This is needed afterJason Molenda2015-04-177-14/+25
| | | | | | | | | | | | | | | | | | the changes in r233255/r233258. Normally if lldb attaches to a running process, when we call Process::Destroy, we want to detach from the process. If lldb launched the process itself, ::Destroy should kill it. However, if we attach to a process and the driver calls SBProcess::Kill() (which calls Destroy), we need to kill it even if we didn't launch it originally. The force_kill param allows for the SBProcess::Kill method to force the behavior of Destroy. <rdar://problem/20424439> llvm-svn: 235158
* Fix a bug where argdumper would not launch inferiors correctly in the ↵Enrico Granata2015-04-174-20/+55
| | | | | | | | presence of arguments of the form word1\ word2 (vs. the quoted form "word1 word2") Fixes rdar://20493444 llvm-svn: 235157
* Fix test failure due to racing commitsReid Kleckner2015-04-172-4/+4
| | | | | | | It looks like r235145 changed the .ll syntax for variadic calls. Update tests to use the new syntax. llvm-svn: 235156
* Fix unused variable warningReid Kleckner2015-04-171-5/+0
| | | | llvm-svn: 235155
* [SEH] Reimplement x64 SEH using WinEHPrepareReid Kleckner2015-04-1719-356/+420
| | | | | | | | | | | | | | | | This now emits simple, unoptimized xdata tables for __C_specific_handler based on the handlers listed in @llvm.eh.actions calls produced by WinEHPrepare. This adds support for running __finally blocks when exceptions are thrown, and removes the old landingpad fan-in codepath. I ran some manual execution tests on small basic test cases with and without optimization, as well as on Chrome base_unittests, which uses a small amount of SEH. I'm sure there are bugs, and we may need to revert. llvm-svn: 235154
* Fix "help language", the languages printer was assuming the Jim Ingham2015-04-173-6/+15
| | | | | | | eLanguageType numbers would be sequential, but vendor types are not and the printer went crazy. llvm-svn: 235153
* DebugInfo: Fixup r235149 after IR change in r235145Duncan P. N. Exon Smith2015-04-171-7/+7
| | | | | | | This shouldn't have used varargs anyway; change the functions to be `void`. Also remove my accidentally-committed directory path. llvm-svn: 235152
* [NaryReassociate] run NaryReassociate iterativelyJingyue Wu2015-04-172-9/+69
| | | | | | | | | | | | | | | | | | | | | | | Summary: An alternative is to use a worklist approach. However, that approach would break the traversing order so that we couldn't lookup SeenExprs efficiently. I don't see a clear winner here, so I picked the easier approach. Along with two minor improvements: 1. preserves ScalarEvolution by forgetting instructions replaced 2. removes dead code locally avoiding the need of running DCE afterwards Test Plan: add to slsr-add.ll a test that requires multiple iterations Reviewers: broune, dberlin, atrick, meheff Reviewed By: atrick Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9058 llvm-svn: 235151
* Improve const-nessDavid Blaikie2015-04-172-6/+4
| | | | | | | | This allows callers to pass a char ** (such as the one coming from the standard decreed main declaration - even though everyone usually puts const on that themselves). llvm-svn: 235150
* DebugInfo: Simplify testcase from LiveDebugVariables fix in r235140Duncan P. N. Exon Smith2015-04-171-80/+50
| | | | | | | This testcase is less brittle and exactly tests for the misbehaviour. Thanks to David Blaikie for the suggestion. llvm-svn: 235149
* [AArch64] Don't assert on f16 in DUP PerfectShuffle generator.Ahmed Bougacha2015-04-162-1/+38
| | | | | | | | Found by code inspection, but breaking i16 at least breaks other tests. They aren't checking this in particular though, so also add some explicit tests for the already working types. llvm-svn: 235148
* [opaque pointer types] Explicit non-pointer type for call expressionsDavid Blaikie2015-04-1654-163/+163
| | | | | | (migration for recent LLVM change to textual IR for calls) llvm-svn: 235147
* [opaque pointer types] Explicit non-pointer type for call expressionsDavid Blaikie2015-04-1610-12/+12
| | | | | | (migration for recent LLVM change to textual IR for calls) llvm-svn: 235146
* [opaque pointer type] Add textual IR support for explicit type parameter to ↵David Blaikie2015-04-16560-1503/+1498
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the call instruction See r230786 and r230794 for similar changes to gep and load respectively. Call is a bit different because it often doesn't have a single explicit type - usually the type is deduced from the arguments, and just the return type is explicit. In those cases there's no need to change the IR. When that's not the case, the IR usually contains the pointer type of the first operand - but since typed pointers are going away, that representation is insufficient so I'm just stripping the "pointerness" of the explicit type away. This does make the IR a bit weird - it /sort of/ reads like the type of the first operand: "call void () %x(" but %x is actually of type "void ()*" and will eventually be just of type "ptr". But this seems not too bad and I don't think it would benefit from repeating the type ("void (), void () * %x(" and then eventually "void (), ptr %x(") as has been done with gep and load. This also has a side benefit: since the explicit type is no longer a pointer, there's no ambiguity between an explicit type and a function that returns a function pointer. Previously this case needed an explicit type (eg: a function returning a void() function was written as "call void () () * @x(" rather than "call void () * @x(" because of the ambiguity between a function returning a pointer to a void() function and a function returning void). No ambiguity means even function pointer return types can just be written alone, without writing the whole function's type. This leaves /only/ the varargs case where the explicit type is required. Given the special type syntax in call instructions, the regex-fu used for migration was a bit more involved in its own unique way (as every one of these is) so here it is. Use it in conjunction with the apply.sh script and associated find/xargs commands I've provided in rr230786 to migrate your out of tree tests. Do let me know if any of this doesn't cover your cases & we can iterate on a more general script/regexes to help others with out of tree tests. About 9 test cases couldn't be automatically migrated - half of those were functions returning function pointers, where I just had to manually delete the function argument types now that we didn't need an explicit function type there. The other half were typedefs of function types used in calls - just had to manually drop the * from those. import fileinput import sys import re pat = re.compile(r'((?:=|:|^|\s)call\s(?:[^@]*?))(\s*$|\s*(?:(?:\[\[[a-zA-Z0-9_]+\]\]|[@%](?:(")?[\\\?@a-zA-Z0-9_.]*?(?(3)"|)|{{.*}}))(?:\(|$)|undef|inttoptr|bitcast|null|asm).*$)') addrspace_end = re.compile(r"addrspace\(\d+\)\s*\*$") func_end = re.compile("(?:void.*|\)\s*)\*$") def conv(match, line): if not match or re.search(addrspace_end, match.group(1)) or not re.search(func_end, match.group(1)): return line return line[:match.start()] + match.group(1)[:match.group(1).rfind('*')].rstrip() + match.group(2) + line[match.end():] for line in sys.stdin: sys.stdout.write(conv(re.search(pat, line), line)) llvm-svn: 235145
* Define LIBXML2_DEFINED in the Xcode project for Xcode builds so Darwin ↵Greg Clayton2015-04-163-17/+22
| | | | | | | | | | builds can take advantage of the new GDB register info from the target XML. Also add "#if defined( LIBXML2_DEFINED )" around code that already used libxml2 in SymbolVendorMacOSX.cpp. Cleaned up some warnings in ProcessGDBRemote.cpp. llvm-svn: 235144
* Fix warnings about construction ordering.Greg Clayton2015-04-161-1/+1
| | | | llvm-svn: 235143
* Use a singleton accessor for the static list of alternate mangling prefixes ↵Greg Clayton2015-04-162-9/+15
| | | | | | so we don't have a global constructor. Apple build systems like for shared libraries to have no global constructors. llvm-svn: 235142
* For llvm-objdump, dump the (__OBJC,__protocol) section for Objc1 32-bit ↵Kevin Enderby2015-04-162-0/+191
| | | | | | | | Mach-O files with the -section option as objc_protocol_t structs. llvm-svn: 235141
* DebugInfo: Fix UserValue::match() in LiveDebugVariables after r235050Duncan P. N. Exon Smith2015-04-162-5/+110
| | | | | | | | r235050 dropped the inlined-at field from `MDLocalVariable`, deferring to the `!dbg` attachments. Fix `UserValue` to take the `!dbg` into account when differentiating between variables. llvm-svn: 235140
* AsmPrinter: Remove dead code, NFCDuncan P. N. Exon Smith2015-04-161-1/+0
| | | | llvm-svn: 235139
* AsmPrinter: Simplify logic for debug info intrinsics' !dbg attachmentsDuncan P. N. Exon Smith2015-04-163-11/+6
| | | | | | These are required, so just assume they're there. llvm-svn: 235138
* Fix TestPluginCommands for gcc.Chaoren Lin2015-04-162-3/+2
| | | | | | | | | | | | | | | | Summary: gcc requires that LDFLAGS come after DYLIB_OBJECTS. Test Plan: TestPluginCommands passes. Reviewers: sivachandra, pcc, clayborg Reviewed By: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D9045 llvm-svn: 235137
* Updating symbol wildcards one more time.Chris Bieneman2015-04-161-1/+1
| | | | | | This should catch all C++ symbols containing llvm in the name. llvm-svn: 235136
* [Objective-C Sema]. In my last patch change theFariborz Jahanian2015-04-165-40/+40
| | | | | | | attribute name to objc_independent_class. rdar://20255473 llvm-svn: 235135
* A few bits of N2994 didn't get fully implemented a long time ago. Thanks to ↵Marshall Clow2015-04-168-19/+90
| | | | | | STL@microsoft.com for the bug report llvm-svn: 235134
* Disable AArch64 fast-isel on big-endian call vector returns.Pete Cooper2015-04-162-0/+177
| | | | | | | | A big-endian vector return needs a byte-swap which we aren't doing right now. For now just bail on these cases to get correctness back. llvm-svn: 235133
* [IR] Introduce a dereferenceable_or_null(N) attribute.Sanjoy Das2015-04-1617-31/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: If a pointer is marked as dereferenceable_or_null(N), LLVM assumes it is either `null` or `dereferenceable(N)` or both. This change only introduces the attribute and adds a token test case for the `llvm-as` / `llvm-dis`. It does not hook up other parts of the optimizer to actually exploit the attribute -- those changes will come later. For pointers in address space 0, `dereferenceable(N)` is now exactly equivalent to `dereferenceable_or_null(N)` && `nonnull`. For other address spaces, `dereferenceable(N)` is potentially weaker than `dereferenceable_or_null(N)` && `nonnull` (since we could have a null `dereferenceable(N)` pointer). The motivating case for this change is Java (and other managed languages), where pointers are either `null` or dereferenceable up to some usually known-at-compile-time constant offset. Reviewers: rafael, hfinkel Reviewed By: hfinkel Subscribers: nicholas, llvm-commits Differential Revision: http://reviews.llvm.org/D8650 llvm-svn: 235132
* Surround assignments w/ parenthesis to avoid mistakes.Davide Italiano2015-04-161-5/+5
| | | | | | This also silences a warning. llvm-svn: 235131
* [NFC] [MachO] remove extra semicolonsJingyue Wu2015-04-161-4/+4
| | | | llvm-svn: 235130
* [NaryReassociate] speeds up candidate searchingJingyue Wu2015-04-162-10/+67
| | | | | | | | | | | | | | | | | | | | | Summary: This fixes a left-over efficiency issue in D8950. As Andrew and Daniel suggested, we can store the candidates in a stack and pop the top element when it does not dominate the current instruction. This reduces the worst-case time complexity to O(n). Test Plan: a new test in nary-add.ll that exercises this optimization. Reviewers: broune, dberlin, meheff, atrick Reviewed By: atrick Subscribers: llvm-commits, sanjoy Differential Revision: http://reviews.llvm.org/D9055 llvm-svn: 235129
* [Objective-C Sema] patch to introduce IndependentClassFariborz Jahanian2015-04-168-2/+78
| | | | | | | | | attribute to be placed on Objective-C pointer typedef to make them strong enough so on their "new" method family no attempt is made to override these types. rdar://20255473 llvm-svn: 235128
* Properly escaping the quotes so that bash doesn't do stupid things with the ↵Chris Bieneman2015-04-161-1/+1
| | | | | | wildcards. llvm-svn: 235127
* Use the correct type, and silence a warning.Davide Italiano2015-04-161-1/+1
| | | | llvm-svn: 235126
* Cleanup based on rnk's feedback.Chris Bieneman2015-04-161-12/+8
| | | | llvm-svn: 235125
* [X86, SSE] instcombine common cases of insertps intrinsics into shufflesSanjay Patel2015-04-162-2/+162
| | | | | | | | | | | | | | | | This is very similar to D8486 / r232852 (vperm2). If we treat insertps intrinsics as shufflevectors, we can optimize them better. I've left all but the full zero case of the zero mask variants out of this patch. I don't think those can be converted into a single shuffle in all cases, but I'd be happy to be proven wrong as I was for vperm2f128. Either way, we'd need to support whatever sequence we come up with for those cases in the backend before converting them here. Differential Revision: http://reviews.llvm.org/D8833 llvm-svn: 235124
OpenPOWER on IntegriCloud