summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [Windows] Simplify more tests now that Clang supports EHReid Kleckner2016-02-192-85/+2
| | | | | | | Remove TestCases/Windows/throw_catch.cc, since it is redundant with the portable test TestCases/throw_catch.cc. llvm-svn: 261342
* Remove XFAIL from test passing on FreeBSDEd Maste2016-02-191-1/+0
| | | | | | | | | | | There is a report in the PR from several months ago that it failed intermittently, but it is passing consistently for me on FreeBSD 10 and 11. We can re-add a decorator if further testing shows it is still flakey. llvm.org/pr17214 llvm-svn: 261340
* Remove XFAIL from test passing on FreeBSDEd Maste2016-02-191-1/+0
| | | | | | | | This is passing for me consistently on FreeBSD 10 and FreeBSD 11. llvm.org/pr15989 llvm-svn: 261339
* [Windows] Add 10s timeout to some WaitForSingleObject callsReid Kleckner2016-02-193-13/+10
| | | | | | | | | | | | | | I ran the test suite yesterday and when I came back this morning the queue_user_work_item.cc test was hung. This could be why the sanitizer-windows buildbot keeps randomly timing out. I updated all the usages of WaitForSingleObject involving threading events. I'm assuming the API can reliably wait for subprocesses, which is what the majority of call sites use it for. While I'm at it, we can simplify some EH tests now that clang can compile C++ EH. llvm-svn: 261338
* [StatepointLowering] Change AllocatedStackSlots to use SmallBitVectorSanjoy Das2016-02-192-13/+15
| | | | | | | | | | | | | | | | | NFCI. They key motivation here is that I'd like to use SmallBitVector::all() in a later change. Also, using a bit vector here seemed better in general. The only interesting change here is that in the failure case of allocateStackSlot, we no longer (the equivalent of) push_back(true) to AllocatedStackSlots. As far as I can tell, this is fine, since we'd never re-use those slots in the same StatepointLoweringState instance. Technically there was no need to change the operator[] type accesses to set() and test(), but I thought it'd be nice to make it obvious that we're using something other than a std::vector like thing. llvm-svn: 261337
* [StatepointLowering] Fix bug in allocateStackSlotSanjoy Das2016-02-192-2/+58
| | | | | | | | | | | | | | | | | | | | | | | | | allocateStackSlot did not consider the size of the value to be spilled before deciding to re-use a spill slot. This was originally okay (since originally we'd only ever spill pointers), but it became not okay when we changed our scheme to directly spill vectors of pointers. While this change fixes the bug pointed out, it has two performance caveats: - It matches spill slot and spillee size exactly, while in theory we can spill, e.g., an 8 byte pointer into a 16 byte slot. This is slightly complicated to fix since in the stackmaps section, we report the size of the spill slot as the size of the "indirect value"; and if they're no longer equivalent, we'll have to keep track of the (indirect) value size separately from the stack slot size. - It will "spuriously run out" of reusable slots, since we now have an second check in the search loop in addition to the availablity check (e.g. you had two free scalar slots, and you first ask for a vector slot followed by a scalar slot). I'll fix this in a later commit. llvm-svn: 261336
* [StatepointLowering] Clean up allocateStackSlotSanjoy Das2016-02-191-35/+22
| | | | | | | | | This removes the unusual loop structure in allocateStackSlot in favor of something more straightforward. I've also removed the cautionary comment in the function, which I suspect is historical cruft now, and confuses more than it enlightens. llvm-svn: 261335
* Remove XFAIL from test passing on FreeBSDEd Maste2016-02-191-1/+0
| | | | | | | | Both Linux and FreeBSD had a comment "This needs to be root-caused." It looks like the failure has been fixed on both, and the Linux XFAIL decorator was removed in r233716 (Mar 2015). llvm-svn: 261333
* [X86] Change fixup-bw-inst.ll to test output with this optimization on and off.Kevin B. Smith2016-02-191-4/+10
| | | | | | Differential Revision: http://reviews.llvm.org/D17415 llvm-svn: 261332
* [LV] Fix PR26600: avoid out of bounds loads for interleaved access vectorizationSilviu Baranga2016-02-193-5/+19
| | | | | | | | | | | | | | | | | | | | Summary: If we don't have the first and last access of an interleaved load group, the first and last wide load in the loop can do an out of bounds access. Even though we discard results from speculative loads, this can cause problems, since it can technically generate page faults (or worse). We now discard interleaved load groups that don't have the first and load in the group. Reviewers: hfinkel, rengolin Subscribers: rengolin, llvm-commits, mzolotukhin, anemet Differential Revision: http://reviews.llvm.org/D17332 llvm-svn: 261331
* AMDGPU/SI: Fix s_waitcnt insertion for flat instructionsTom Stellard2016-02-192-2/+20
| | | | | | | | | | | | | | | | Summary: This was broken in r260694 which swapped the address and data operands for flat store instructions. The code in SIInsertWaits assumes that the data operand always comes before the address operand, so we need to add a special case for flat. Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D17366 llvm-svn: 261330
* [X86][AVX] Added fast-isel intrinsics testsSimon Pilgrim2016-02-191-0/+675
| | | | | | As discussed on PR24580, this patch adds some (more to come) initial fast-isel codegen tests to match the IR generated in clang/test/CodeGen/avx-builtins.c llvm-svn: 261329
* Delete unused function in ClangExpressionParserEwan Crawford2016-02-191-15/+0
| | | | | | | | | | | | [git 65dafa83] introduced the GetBuiltinIncludePath function copied from cfe/lib/Driver/CC1Options.cpp This function is no longer used in lldb's expression parser and I believe it is safe to remove it. Author: Luke Drummond <luke.drummond@codeplay.com> Differential Revision: http://reviews.llvm.org/D17266 llvm-svn: 261328
* Add support for merging strings with alignment larger than one char.Rafael Espindola2016-02-196-24/+84
| | | | | | | | | | | This reduces the .rodata of scyladb from 4501932 to 4334639 bytes (1.038 times smaller). I don't think it is critical to support tail merging, just exact duplicates, but given the code organization it was actually a bit easier to support both. llvm-svn: 261327
* Add support for merging strings with alignment larger than one char.Rafael Espindola2016-02-192-9/+18
| | | | | | This will be used in a lld patch. llvm-svn: 261326
* [SystemZ] Fix ABI for i128 argument and return typesUlrich Weigand2016-02-196-10/+198
| | | | | | | | | | | | | | | | | | | | | | | | | According to the SystemZ ABI, 128-bit integer types should be passed and returned via implicit reference. However, this is not currently implemented at the LLVM IR level for the i128 type. This does not matter when compiling C/C++ code, since clang will implement the implicit reference itself. However, it turns out that when calling libgcc helper routines operating on 128-bit integers, LLVM will use i128 argument and return value types; the resulting code is not compatible with the ABI used in libgcc, leading to crashes (see PR26559). This should be simple to fix, except that i128 currently is not even a legal type for the SystemZ back end. Therefore, common code will already split arguments and return values into multiple parts. The bulk of this patch therefore consists of detecting such parts, and correctly handling passing via implicit reference of a value split into multiple parts. If at some time in the future, i128 becomes a legal type, this code can be removed again. This fixes PR26559. llvm-svn: 261325
* Add a new check, cert-flp30-c, that diagnoses loop induction expressions of ↵Aaron Ballman2016-02-197-1/+108
| | | | | | floating-point type. This check corresponds to the CERT secure coding rule: https://www.securecoding.cert.org/confluence/display/c/FLP30-C.+Do+not+use+floating-point+variables+as+loop+counters llvm-svn: 261324
* Removed unused local variableSerge Pavlov2016-02-191-3/+0
| | | | llvm-svn: 261323
* Attemp to heal windows buildbotGeorge Rimar2016-02-191-10/+10
| | | | | | http://lab.llvm.org:8011/builders/sanitizer-windows/builds/17414 llvm-svn: 261322
* pr26544: Bitfield layout with pragma pack and attributes "packed" andAlexey Bataev2016-02-192-2/+211
| | | | | | | | | | "aligned", by Vladimir Yakovlev Fix clang/gcc incompatibility of bitfields layout in the presence of pragma packed and attributes aligned and packed. Differential Revision: http://reviews.llvm.org/D17023 llvm-svn: 261321
* Codegen: Print error in Polly code verification and allow to disable ↵Tobias Grosser2016-02-191-8/+12
| | | | | | | | | | | | verfication. We now always print the reason why the code did not pass the LLVM verifier and we also allow to disable verfication with -polly-codegen-verify=false. Before this change the first assertion had generally no information why or what might have gone wrong and it was also impossible to -view-cfg without recompile. This change makes debugging bugs that result in incorrect IR a lot easier. llvm-svn: 261320
* [LPM] Document the new helpers to make it easy to get consistent requireChandler Carruth2016-02-191-0/+8
| | | | | | | | and preserve behavior from loop passes. Differential Revision: http://reviews.llvm.org/D17443 llvm-svn: 261319
* Stack unwinding emulation: handle adjustment of FPTamas Berghammer2016-02-191-1/+16
| | | | | | | | | | | | | | | | | | | | This change is improving the instruction emulation based unwinding to handle when the frame pointer is adjusted (increment/decrement) after it has been initialized. The situation can occur in the prologue of some function where FP is adjusted before it is copied back to SP. Example code (thumb, generated by gcc 4.8): < +0>: push {r4, r7, lr} < +2>: sub sp, #0x14 < +4>: add r7, sp, #0x0 ... <+50>: adds r7, #0x14 ; The CL fixes the handling of this instruction <+52>: mov sp, r7 ; Previously unwinding from here was broken <+54>: pop {r4, r7, pc} Differential revision: http://reviews.llvm.org/D17295 llvm-svn: 261318
* [ELF] - Minor refactor of LinkerScript fileGeorge Rimar2016-02-191-23/+20
| | | | | | | | | * Else-ifs in ScriptParser::run() replaced with std::function + map * Reordered members of ScriptParser Differential revision: http://reviews.llvm.org/D17256 llvm-svn: 261317
* [LPM] Factor all of the loop analysis usage updates into a common helperChandler Carruth2016-02-1916-187/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | routine. We were getting this wrong in small ways and generally being very inconsistent about it across loop passes. Instead, let's have a common place where we do this. One minor downside is that this will require some analyses like SCEV in more places than they are strictly needed. However, this seems benign as these analyses are complete no-ops, and without this consistency we can in many cases end up with the legacy pass manager scheduling deciding to split up a loop pass pipeline in order to run the function analysis half-way through. It is very, very annoying to fix these without just being very pedantic across the board. The only loop passes I've not updated here are ones that use AU.setPreservesAll() such as IVUsers (an analysis) and the pass printer. They seemed less relevant. With this patch, almost all of the problems in PR24804 around loop pass pipelines are fixed. The one remaining issue is that we run simplify-cfg and instcombine in the middle of the loop pass pipeline. We've recently added some loop variants of these passes that would seem substantially cleaner to use, but this at least gets us much closer to the previous state. Notably, the seven loop pass managers is down to three. I've not updated the loop passes using LoopAccessAnalysis because that analysis hasn't been fully wired into LoopSimplify/LCSSA, and it isn't clear that those transforms want to support those forms anyways. They all run late anyways, so this is harmless. Similarly, LSR is left alone because it already carefully manages its forms and doesn't need to get fused into a single loop pass manager with a bunch of other loop passes. LoopReroll didn't use loop simplified form previously, and I've updated the test case to match the trivially different output. Finally, I've also factored all the pass initialization for the passes that use this technique as well, so that should be done regularly and reliably. Thanks to James for the help reviewing and thinking about this stuff, and Ben for help thinking about it as well! Differential Revision: http://reviews.llvm.org/D17435 llvm-svn: 261316
* [OPENMP] Improved layout of CGOpenMPRuntime class, NFC.Alexey Bataev2016-02-192-258/+252
| | | | llvm-svn: 261315
* Enable TestUnicodeLiteralsPavel Labath2016-02-191-4/+0
| | | | | | Test should work everywhere except windows now. llvm-svn: 261314
* Mark TestLldbGdbServer.test_software_breakpoint_set_and_remove_work_llgs as ↵Pavel Labath2016-02-191-0/+1
| | | | | | | | flaky on linux The problem is the asynchronous arrival of inferior stdio (pr25652). llvm-svn: 261313
* Correct typos after acting on invalid subscript expressionsDavid Majnemer2016-02-192-2/+17
| | | | llvm-svn: 261312
* [X86] Remove unused entries from the disassembler type enum.Craig Topper2016-02-193-6/+0
| | | | llvm-svn: 261311
* Add test.JF Bastien2016-02-191-0/+36
| | | | llvm-svn: 261310
* ARM: fix VFP asm constraintsJF Bastien2016-02-191-2/+2
| | | | | | | | | | | | | | | Summary: Rich Felker was sad that clang used 'w' and 'P' for VFP constraints when GCC documents them as 't' and 'w': https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html This was added way back in 2008: http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20080421/005393.html Subscribers: aemerson, rengolin, cfe-commits Differential Revision: http://reviews.llvm.org/D17349 llvm-svn: 261309
* Shuffle header file as per the Coding StandardsDavid Majnemer2016-02-191-1/+1
| | | | llvm-svn: 261308
* [SjLjEHPrepare] Simplify/cleanup codeDavid Majnemer2016-02-191-64/+50
| | | | | | No functional change is intended. llvm-svn: 261307
* LegalizeDAG: Fix ExpandFCOPYSIGN assuming the same type on both inputsMatthias Braun2016-02-192-5/+54
| | | | llvm-svn: 261306
* [LPM] Actually test what the O2 pass pipeline consists of in key places,Chandler Carruth2016-02-191-0/+101
| | | | | | | | | | | | | | | | | especially the *structure* of it with respect to various pass managers. This uncovers an absolute horror show of problems. This test shows just how bad PR24804 is: we have a totaly of *seven* loop pass managers in the main optimization pipeline. I've tried to comment the various bits to the best of my knowledge, but more enhancements here would be great. Also great would be folks adding various test for other pipelines, I'm focused on trying to fix the O2 pipeline. I just wanted a test to show what I'm changing. llvm-svn: 261305
* Add profile summary support for sample profile.Easwaran Raman2016-02-1912-19/+238
| | | | | | Differential Revision: http://reviews.llvm.org/D17178 llvm-svn: 261304
* [SjLjEHPrepare] Don't grab pointers to functions in doInitializationDavid Majnemer2016-02-192-18/+48
| | | | | | | | | | Certain optimization passes (like globaldce) can prune function declaration that SjLjEHPrepare assumed would exit when it'd runOnFunction. This fixes PR26669. llvm-svn: 261303
* [AA] Preserve the AA results wrapper pass as well as BasicAA in a fewChandler Carruth2016-02-192-0/+6
| | | | | | | | | | | | | more places to prevent gratuitous re-"runs" of these passes. The passes themselves don't do any work when run, but we keep spending time scheduling and running these needlessly when we really don't need to do so. This is the first patch towards fixing the really horrible loop pass pipeline fragmentation pointed out by Sanjoy in PR24804. llvm-svn: 261302
* Fix SemaTemplate/instantiate-field.cpp after r261297.Nico Weber2016-02-191-1/+1
| | | | | | | | | | | | | | For templates, fields can have incomplete types: template <class T> struct A2 { struct B; B b; }; Don't try to touch the DefinitionData of those fields. llvm-svn: 261301
* [llvm-nm] In C++, main implicitly returns 0. Pointed out by David Blaikie.Davide Italiano2016-02-191-2/+0
| | | | llvm-svn: 261300
* Bug fix: use dyn_cast_or_null instead of dyn_castLawrence Hu2016-02-192-2/+25
| | | | | | Differential Revision: http://reviews.llvm.org/D17154 llvm-svn: 261299
* llvm-dwp: Don't test compression when zlib isn't availableDavid Blaikie2016-02-192-1/+3
| | | | llvm-svn: 261298
* Implement the likely resolution of core issue 253.Nico Weber2016-02-1914-42/+135
| | | | | | | | | | | | | | | | | | C++11 requires const objects to have a user-provided constructor, even for classes without any fields. DR 253 relaxes this to say "If the implicit default constructor initializes all subobjects, no initializer should be required." clang is currently the only compiler that implements this C++11 rule, and e.g. libstdc++ relies on something like DR 253 to compile in newer versions. This change makes it possible to build code that says `const vector<int> v;' again when using libstdc++5.2 and _GLIBCXX_DEBUG (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60284). Fixes PR23381. http://reviews.llvm.org/D16552 llvm-svn: 261297
* llvm-dwp: Support compressed inputDavid Blaikie2016-02-193-5/+62
| | | | llvm-svn: 261296
* Update cxx_dr_status.html with today's cwg_index.html.Nico Weber2016-02-191-67/+67
| | | | | | | | | Created by: cd www curl -O http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_index.html ./make_cxx_dr_status llvm-svn: 261295
* Minor code cleanups. NFC.Junmo Park2016-02-191-3/+3
| | | | llvm-svn: 261294
* [analyzer] Add checker callback for beginning of function.Devin Coughlin2016-02-1914-21/+170
| | | | | | | | | | Add a checker callback that is called when the analyzer starts analyzing a function either at the top level or when inlined. This will be used by a follow-on patch making the DeallocChecker path sensitive. Differential Revision: http://reviews.llvm.org/D17418 llvm-svn: 261293
* [Sema] PR25181 Fix crash when method declaration with throw spec fails to ↵Reid Kleckner2016-02-192-1/+9
| | | | | | | | | | | | | | | parse correctly Fixes crash referenced in PR25181 where dyn_cast is called on a null instance of LM.Method. Reviewers: majnemer, rnk Patch by Don Hinton Differential Revision: http://reviews.llvm.org/D17072 llvm-svn: 261292
* [sancov] widening default blacklist.Mike Aizatsky2016-02-191-1/+4
| | | | | | Differential Revision: http://reviews.llvm.org/D17426 llvm-svn: 261291
OpenPOWER on IntegriCloud