summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Make lld-link shout at me less.Nico Weber2018-03-124-15/+15
| | | | | | | | | This makes the output of some flag names in warning messages consistent with the output of /? and the output of flags in most other diagnostics. https://reviews.llvm.org/D44307 llvm-svn: 327261
* [ELF] - Change consume()->expect() in INSERT AFTER parsing.George Rimar2018-03-122-1/+7
| | | | | | | | AFTER keyword is mandatory and consume() was used by mistake here. We accepted broken script before this patch, testcase shows the issue. llvm-svn: 327260
* [X86][SSE] createVariablePermute - PSHUFB requires SSSE3 not just SSE3Simon Pilgrim2018-03-122-17/+458
| | | | llvm-svn: 327259
* [analyzer] Add scope information to CFGMaxim Ostapenko2018-03-1212-10/+1437
| | | | | | | | | | | This patch adds two new CFG elements CFGScopeBegin and CFGScopeEnd that indicate when a local scope begins and ends respectively. We use first VarDecl declared in a scope to uniquely identify it and add CFGScopeBegin and CFGScopeEnd elements into corresponding basic blocks. Differential Revision: https://reviews.llvm.org/D16403 llvm-svn: 327258
* [lld-link] For suppressible warnings, print the warning number.Nico Weber2018-03-122-3/+3
| | | | | | | The warning can be suppressed by passing the number to /ignore:. https://reviews.llvm.org/D44297 llvm-svn: 327257
* Fix compilation on Darwin with expensive checks.Jonas Devlieghere2018-03-121-5/+10
| | | | | | | | | | | | | | | | | | After r327219 was landed, the bot with expensive checks on GreenDragon started failing. The problem was missing symbols `regex_t` and `regmatch_t` in `xlocale/_regex.h`. The latter was included because after the change in r327219, `random` is needed, which transitively includes `xlocale.h.` which in turn conditionally includes `xlocale/_regex.h` when _REGEX_H_ is defined. Because this is the header guard in `regex_impl.h` and because `regex_impl.h` was included before the other LLVM includes, `xlocale/_regex.h` was included without the necessary types being available. This commit fixes this by moving the include of `regex_impl.h` all the way down. I also added a comment to stress the significance of its position. llvm-svn: 327256
* clang-format: Properly handle implicit string concatenation in text protosDaniel Jasper2018-03-125-5/+24
| | | | | | | | | | | | | Three issues to fix: - char_constants weren't properly treated as string literals - Prevening the break after "label: " does not make sense in concunction with AlwaysBreakBeforeMultilineStrings. It leads to situations where clang-format just cannot find a viable format (it must break and yet it must not break). - AlwaysBreakBeforeMultilineStrings should not be on for LK_TextProto in Google style. llvm-svn: 327255
* [ThinLTO] Recommit of import global variablesEugene Leviant2018-03-128-23/+170
| | | | | | | This wasreverted in r326638 due to link problems and fixed afterwards llvm-svn: 327254
* Don't re-format raw string literal contents when formatting is disableDaniel Jasper2018-03-122-1/+15
| | | | | | | Not entirely sure this is the best place to put this check, but it fixes the immediate issue. llvm-svn: 327253
* Back out "Re-land: Teach CorrelatedValuePropagation to reduce the width of ↵Justin Lebar2018-03-123-250/+0
| | | | | | | | | | | udiv/urem instructions." This reverts r326908, originally landed as D44102. Reverted for causing performance regressions on x86. (These regressions are not yet understood.) llvm-svn: 327252
* [X86] Don't compute known bits twice for the same SDValue in LowerMUL.Craig Topper2018-03-121-4/+8
| | | | | | We called MaskedValueIsZero with two different masks, but underneath that calls computeKnownBits before applying the mask. This means we compute the same known bits twice due to the two calls. Instead just call computeKnownBits directly and apply the two masks ourselves. llvm-svn: 327251
* [CGP] Fix the remove of matched phis in complex addressing modeSerguei Katkov2018-03-122-1/+40
| | | | | | | | | | | | | | | | | | When we replace the Phi we created with matched ones it is possible that there are two identical phi nodes in IR. And matcher is smart enough to find that new created phi matches both of them. So we try to replace our phi node with matched ones twice and what is bad we delete our phi node twice causing a crash. As soon as we found that we have two identical Phi nodes it makes sense to do a clean-up and replace one phi node by other one. The patch implements it. Reviewers: john.brawn, reames Reviewed By: john.brawn Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D43758 llvm-svn: 327250
* [Driver] Update the comment about incompatible sanitizersPetr Hosek2018-03-121-1/+2
| | | | | | Differential Revision: https://reviews.llvm.org/D44371 llvm-svn: 327249
* For most Targets the _GLOBAL_OFFSET_TABLE_ symbol is expected to be atPeter Smith2018-03-1117-42/+85
| | | | | | | | | | | | | | | | | | the start of the .got.plt section so that _GLOBAL_OFFSET_TABLE_[0] = reserved value that is by convention the address of the dynamic section. Previously we had defined _GLOBAL_OFFSET_TABLE_ as either the start or end of the .got section with the intention that the .got.plt section would follow the .got. However this does not always hold with the current default section ordering so _GLOBAL_OFFSET_TABLE_[0] may not be consistent with the reserved first entry of the .got.plt. X86, X86_64, Arm and AArch64 will use the .got.plt. Mips and Power use .got Fixes PR36555 Differential Revision: https://reviews.llvm.org/D44259 llvm-svn: 327248
* [X86][MMX] Support MMX build vectors to avoid SSE usage (PR29222)Simon Pilgrim2018-03-115-1650/+646
| | | | | | | | | | | | 64-bit MMX vector generation usually ends up lowering into SSE instructions before being spilled/reloaded as a MMX type. This patch creates a MMX vector from MMX source values, taking the lowest element from each source and constructing broadcasts/build_vectors with direct calls to the MMX PUNPCKL/PSHUFW intrinsics. We're missing a few consecutive load combines that could be handled in a future patch if that would be useful - my main interest here is just avoiding a lot of the MMX/SSE crossover. Differential Revision: https://reviews.llvm.org/D43618 llvm-svn: 327247
* [X86][AVX512] Added more non-VLX test casesSimon Pilgrim2018-03-112-264/+197
| | | | | | Cleaned up check prefixes so that they actually share a bit more llvm-svn: 327246
* [X86][AVX] createVariablePermute - scale v16i16 variable permutes to use ↵Simon Pilgrim2018-03-112-561/+104
| | | | | | | | v32i8 codegen XOP was already doing this, and now AVX performs v32i8 variable permutes as well. llvm-svn: 327245
* [X86][AVX] createVariablePermute - widen permutes for cases where the source ↵Simon Pilgrim2018-03-113-88/+119
| | | | | | vector is wider than the destination type llvm-svn: 327244
* [InstCombine] add tests for casted sign-bit cmp (PR36682); NFCSanjay Patel2018-03-111-2/+27
| | | | llvm-svn: 327243
* [X86][AVX] createVariablePermute - use PSHUFB+PCMPGT+SELECT for v32i8 ↵Simon Pilgrim2018-03-112-1198/+93
| | | | | | | | variable permutes Same as the VPERMILPS/VPERMILPD approach for v8f32/v4f64 cases, rely on PSHUFB using bits[3:0] for indexing - we can ignore the sign bit (zero element) as those index vector values are considered undefined. The select between the lo/hi permute results based on the index size. llvm-svn: 327242
* Fix for buildbots which didn't like makeArrayRef with initializer lists.Simon Pilgrim2018-03-111-2/+2
| | | | llvm-svn: 327241
* [X86][SSE] Generalized SplitBinaryOpsAndApply to SplitOpsAndApply to support ↵Simon Pilgrim2018-03-111-44/+54
| | | | | | | | any number of ops. I've kept SplitBinaryOpsAndApply as a wrapper to avoid a lot of makeArrayRef code. llvm-svn: 327240
* [X86][AVX] createVariablePermute - use 2xVPERMIL+PCMPGT+SELECT for ↵Simon Pilgrim2018-03-112-251/+158
| | | | | | | | | | v8i32/v8f32 and v4i64/v4f64 variable permutes As VPERMILPS/VPERMILPD only selects elements based on the bits[1:0]/bit[1] then we can permute both the (repeated) lo/hi 128-bit vectors in each case and then select between these results based on whether the index was for for lo/hi. For v4i64/v4f64 this avoids some rather nasty v4i64 multiples on the AVX2 implementation, which seems to be worse than the extra port5 pressure from the additional shuffles/blends. llvm-svn: 327239
* [X86][AVX512] createVariablePermute - Non-VLX targets can widen v4i64/v8f64 ↵Simon Pilgrim2018-03-112-74/+40
| | | | | | | | variable permutes to v8i64/v8f64 Permutes in the upper elements will be undefined, but they will be discarded anyway. llvm-svn: 327238
* fix a typo on the websiteSylvestre Ledru2018-03-111-1/+1
| | | | llvm-svn: 327237
* [x86][SSE] Add widenSubVector helper. NFCI.Simon Pilgrim2018-03-111-9/+17
| | | | | | | | Helper function to insert a subvector into the bottom elements of a larger zero/undef vector with the same scalar type. I've converted a couple of INSERT_SUBVECTOR calls to use it, there are plenty more although in some cases I was worried it might make the code more ambiguous. llvm-svn: 327236
* [MemorySSA] Fix comment + remove redundant dyn_casts; NFCGeorge Burgess IV2018-03-111-18/+12
| | | | | | StartingAccess is already a MemoryUseOrDef. llvm-svn: 327235
* Test commit - change comment slightly.Michael Bedy2018-03-111-2/+2
| | | | llvm-svn: 327234
* Add REQUIRES: arm-registered-target to test using an arm-apple-ios triple.Nico Weber2018-03-111-0/+1
| | | | | | | Else, the test fails in LLVM_TARGETS_TO_BUILD=X86 builds like so: bin/llvm-mc: : error: unable to get target for 'arm64-apple-ios7.0.0' llvm-svn: 327233
* [WebAssembly] Improve logging and comments around relocations. NFC.Sam Clegg2018-03-112-8/+16
| | | | | | Differential Revision: https://reviews.llvm.org/D44350 llvm-svn: 327232
* [TargetSchedule] Minor refactor in computeInstrLatency. NFCAndrea Di Biagio2018-03-111-6/+4
| | | | | | | | The intent of revision r300311 was to add a check for invalid scheduling class descriptors. However, it ended up adding a redundant call in a basic block that should not be reachable. llvm-svn: 327231
* Revert r327199: "Clean up a temp file on the buildbots"George Burgess IV2018-03-101-2/+0
| | | | | | | "I'll revert this tomorrow," I said yesterday. This should've reached all the bots it can by now. llvm-svn: 327230
* [CodeGen] Eagerly emit lifetime.end markers for callsGeorge Burgess IV2018-03-102-6/+129
| | | | | | | | | | | | | | | | | | | | | | In C, we'll wait until the end of the scope to clean up aggregate temporaries used for returns from calls. This means in cases like: { // Assuming that `Bar` is large enough to warrant indirect returns struct Bar b = {}; b = foo(&b); b = foo(&b); b = foo(&b); b = foo(&b); } ...We'll allocate space for 5 Bars on the stack (`b`, and 4 temporaries). This becomes painful in things like large switch statements. If cleaning up sooner is trivial, we should do it. llvm-svn: 327229
* [demangler] Simplify printing of structured bindings.Erik Pilkington2018-03-102-4/+4
| | | | | | Thanks to Richard Smith for the post-commit review! llvm-svn: 327228
* [demangler] Support for sequence numbers on lifetime extended temporaries.Erik Pilkington2018-03-102-0/+11
| | | | llvm-svn: 327227
* [demangler] Support for structured bindings.Erik Pilkington2018-03-102-4/+30
| | | | llvm-svn: 327226
* [X86] Add comments to the end of FMA3 instructions to make the operation clearCraig Topper2018-03-109-1585/+3732
| | | | | | | | | | | | | | | | | | | | | Summary: There are 3 different operand orders for FMA instructions so figuring out the exact operation being performed requires a lot of thought. This patch adds a comment to the end of the assembly line to print the exact operation. I think I've got all the instructions in here except the ones with builtin rounding. I didn't update all tests, but I assume we can get them as we regenerate tests in the future. Reviewers: spatel, v_klochkov, RKSimon Reviewed By: spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D44345 llvm-svn: 327225
* [lldb] Unbreak lldb builds due to r327219Mandeep Singh Grang2018-03-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | Summary: r327219 adds wrappers to sort which shuffle the container before sorting. This causes lldb bots to break as the call to sort is now ambiguous: http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-buildserver/builds/20725/steps/ninja%20build%20local/logs/stdio So we need use llvm::sort instead of sort to avoid ambiguity with std::sort. Note: This patch is just to unbreak the bots. I plan to have subsequent patches which will convert all calls to std::sort to llvm::sort. Reviewers: RKSimon, k8stone, jingham, labath, zturner Subscribers: andreadb, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D44354 llvm-svn: 327224
* [llvm-mca] Fix use-of-uninitialized-value error reported by the MemorySanitizer.Andrea Di Biagio2018-03-101-1/+1
| | | | | | This should make the buildbots green again. llvm-svn: 327223
* [X86][XOP] createVariablePermute - use VPERMIL2 for v8i32/v4i64 variable ↵Simon Pilgrim2018-03-102-193/+62
| | | | | | permutes llvm-svn: 327222
* Revert untested changes in SCEVAffinatorTobias Grosser2018-03-101-1/+1
| | | | llvm-svn: 327221
* [AArch64] Implement native TLS for WindowsMartin Storsjo2018-03-105-2/+148
| | | | | | Differential Revision: https://reviews.llvm.org/D43971 llvm-svn: 327220
* [ADT] Shuffle containers before sorting to uncover non-deterministic behaviorMandeep Singh Grang2018-03-101-0/+32
| | | | | | | | | | | | | | | | | | | | | Summary: std::sort and array_pod_sort both use non-stable sorting algorithms. This means that the relative order of elements with the same key is undefined. This patch is an attempt to uncover such scenarios by randomly shuffling all containers before sorting, if EXPENSIVE_CHECKS is enabled. Here's the bugzilla for this: https://bugs.llvm.org/show_bug.cgi?id=35135 Reviewers: dblaikie, dexonsmith, chandlerc, efriedma, RKSimon Reviewed By: RKSimon Subscribers: fhahn, davide, RKSimon, vsk, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D39245 llvm-svn: 327219
* [X86][XOP] createVariablePermute - use VPPERM for v16i16 variable permutesSimon Pilgrim2018-03-102-112/+25
| | | | llvm-svn: 327218
* [X86][SSE] createVariablePermute - create index scaling helper. NFCI.Simon Pilgrim2018-03-101-23/+26
| | | | | | This will help in some future changes for custom lowering. llvm-svn: 327217
* Add isl operator overloads for isl::pw_affTobias Grosser2018-03-103-1/+191
| | | | | | | | | | | | Piecewise affine expressions have directly corresponding mathematical operators. Introduce these operators as overloads as this makes writing code with isl::pw_aff expressions more directly readable. We can now write: A = B + C instead of A = B.add(C) llvm-svn: 327216
* [llvm-mca] BackendStatistics: early exit from method printSchedulerUsage if theAndrea Di Biagio2018-03-103-0/+50
| | | | | | no scheduler resources were consumed. llvm-svn: 327215
* [llvm-mca] Views are now independent from resource masks. NFCIAndrea Di Biagio2018-03-107-25/+25
| | | | | | | | | This change removes method Backend::getProcResourceMasks() and simplifies some logic in the Views. This effectively removes yet another dependency between the views and the Backend. No functional change intended. llvm-svn: 327214
* [X86][XOP] createVariablePermute - use VPPERM for v32i8 variable permutesSimon Pilgrim2018-03-102-238/+17
| | | | llvm-svn: 327213
* [InstSimplify] fp_binop X, undef --> NaNSanjay Patel2018-03-103-66/+33
| | | | | | The variable operand could be NaN, so it's always safe to propagate NaN. llvm-svn: 327212
OpenPOWER on IntegriCloud