summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Do not ASSERTZEXT for i16 result of bitcast from f16 operandPirama Arumuga Nainar2016-01-083-9/+34
| | | | | | | | | | | | | | | | | | | | | | | Summary: During legalization if i16, do not ASSERTZEXT the result of FP_TO_FP16. Directly return an FP_TO_FP16 node with return type as the promote-to-type of i16. This patch also removes extraneous length check. This legalization should be valid even if integer and float types are of different lengths. This patch breaks a hard-float test for fp16 args. The test is changed to allow a vmov to zero-out the top bits, and also ensure that the return value is in an FP register. Reviewers: ab, jmolloy Subscribers: srhines, llvm-commits Differential Revision: http://reviews.llvm.org/D15438 llvm-svn: 257184
* Make ubsan suppression test pass on Windows.Nico Weber2016-01-081-13/+5
| | | | llvm-svn: 257183
* [WinEH] CatchHandler which don't have catch objects in StackColoringDavid Majnemer2016-01-082-1/+41
| | | | | | | | | | | | | | | | | StackColoring rewrites the frame indicies of operations involving allocas if it can find that the life time of two objects do not overlap. MSVC EH needs to be kept aware of this if happens in the event that a catch object has moved around. However, we represent the non-existance of a catch object with a sentinel frame index (INT_MAX). This sentinel also happens to be the EmptyKey of the SlotRemap DenseMap. Testing for whether or not we need to translate the frame index fails in this case because we call the count method on the DenseMap with the EmptyKey, leading to assertions. Instead, check if it is our sentinel value before trying to look into the DenseMap. This fixes PR26073. llvm-svn: 257182
* [ThinLTO] Use new in-place symbol changes for exporting moduleTeresa Johnson2016-01-083-11/+11
| | | | | | | | | | | | | | Due to the new in-place ThinLTO symbol handling support added in r257174, we now invoke renameModuleForThinLTO on the current module from within the FunctionImport pass. Additionally, renameModuleForThinLTO no longer needs to return the Module as it is performing the renaming in place on the one provided. This commit will be immediately preceeded by a companion clang patch to remove its invocation of renameModuleForThinLTO. llvm-svn: 257181
* How to close a review manually.Paul Robinson2016-01-081-1/+7
| | | | llvm-svn: 257180
* [ThinLTO] Leverage new in-place renaming supportTeresa Johnson2016-01-083-57/+38
| | | | | | | | | | | | Due to the new in-place renaming support added in r257174, we no longer need to invoke ThinLTO global renaming from clang. It will be invoked on the module in the FunctionImport pass (by an immediately following llvm commit). As a result, we don't need to load the FunctionInfoIndex as early, so that is moved down into EmitAssemblyHelper::EmitAssembly. llvm-svn: 257179
* [clang-tidy] Add non-inline function definition and variable definition ↵Alexander Kornienko2016-01-089-1/+350
| | | | | | | | | | | | | | | | check in header files. Summary: The new check will find all functionand variable definitions which may violate cpp one definition rule in header file. Reviewers: aaron.ballman, alexfh Subscribers: aaron.ballman, cfe-commits Patch by Haojian Wu! Differential Revision: http://reviews.llvm.org/D15710 llvm-svn: 257178
* Disable part of the misc-move-constructor-init checker when the check is ↵Aaron Ballman2016-01-085-16/+51
| | | | | | enabled through cert-oop11-cpp. The CERT guideline does not cover moveable parameters as part of the OOP11-CPP recommendation, just copy construction from move constructors. llvm-svn: 257177
* [clang-tidy] Use proper capitalization and punctuation for diagnostic messages.Alexander Kornienko2016-01-0810-43/+43
| | | | | | Use diagnostic parameters where possible instead of string concatenation. llvm-svn: 257176
* Driver: Use the new ELF lld linker for AMDGPUTom Stellard2016-01-083-6/+2
| | | | | | | | | | | | Summary: 'gnu-old' has been deprecated in favor or 'gnu'. Reviewers: arsenm, ruiu, rafael Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15953 llvm-svn: 257175
* [ThinLTO] Enable in-place symbol changes for exporting moduleTeresa Johnson2016-01-082-41/+116
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Move ThinLTO global value processing functions out of ModuleLinker and into a new ThinLTOGlobalProcessor class, which performs any necessary linkage and naming changes on the given module in place. As a result, renameModuleForThinLTO no longer needs to create a new Module when performing any necessary local to global promotion on a module that we are possibly exporting from during a ThinLTO backend compilation. During function importing the ThinLTO processing is still invoked from the ModuleLinker (via the new class), as it needs to perform renaming and linkage changes on the source module, e.g. in order to get the correct renaming during local to global promotion. Reviewers: joker.eph Subscribers: davidxl, llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D15696 llvm-svn: 257174
* AMDGPU/SI: Emit global variable sizes when targeting HSATom Stellard2016-01-082-1/+21
| | | | | | | | | | Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D15952 llvm-svn: 257173
* AMDGPU: Emit functions sizesTom Stellard2016-01-082-1/+4
| | | | | | | | | | Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D15951 llvm-svn: 257172
* [ThinLTO] Delay metadata materializtion in function importerTeresa Johnson2016-01-082-6/+21
| | | | | | | | | | | | | | | The function importer was still materializing metadata when modules were loaded for function importing. We only want to materialize it when we are going to invoke the metadata linking postpass. Materializing it before function importing is not only unnecessary, but also causes metadata referenced by imported functions to be mapped in early, and then not connected to the rest of the module level metadata when it is ultimately linked in. Augmented the test case to specifically check for the metadata being properly connected, which it wasn't before this fix. llvm-svn: 257171
* Call assumeNoOutOfBound only in updateDimensionalityRoman Gareev2016-01-084-8/+111
| | | | | | | | Call assumeNoOutOfBound only in updateDimensionality to process situations when new dimensions are added and new bounds checks are required. Contributed-by: Tobias Grosser, Gareev Roman llvm-svn: 257170
* Prevent renaming of CR fields in AADB when a CR restore is presentNemanja Ivanovic2016-01-082-2/+28
| | | | | | | | | | | This patch corresponds to review: http://reviews.llvm.org/D15930 Moves to and from CR fields depend on shifts/masks that depend on the target/source CR field. Thus, post-ra anti-dep breaking must not later change that CR register assignment. llvm-svn: 257168
* InstCombineCompares.cpp: Fix a warning. [-Wbraced-scalar-init]NAKAMURA Takumi2016-01-081-1/+1
| | | | llvm-svn: 257167
* Fix TestBatchMode for gccPavel Labath2016-01-081-1/+2
| | | | | | | gcc by default does not accept for loop declarations in C files (one must choose C99 mode first, which we don't). Place the declaration outside the loop, to make this code more conformant. llvm-svn: 257166
* Another fix for TestBatchMode on linuxPavel Labath2016-01-081-0/+17
| | | | | | | On locked down systems (such as our buildbot) one needs to do a special dance to allow attaching to processes. This commit adds this code to the TestBatchMode inferior. llvm-svn: 257165
* Re-commit r257064, this time with a fixed assertSilviu Baranga2016-01-082-3/+422
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In setInsertionPoint if the value is not a PHI, Instruction or Argument it should be a Constant, not a ConstantExpr. Original commit message: [InstCombine] Look through PHIs, GEPs, IntToPtrs and PtrToInts to expose more constants when comparing GEPs Summary: When comparing two GEP instructions which have the same base pointer and one of them has a constant index, it is possible to only compare indices, transforming it to a compare with a constant. This removes one use for the GEP instruction with the constant index, can reduce register pressure and can sometimes lead to removing the comparisson entirely. InstCombine was already doing this when comparing two GEPs if the base pointers were the same. However, in the case where we have complex pointer arithmetic (GEPs applied to GEPs, PHIs of GEPs, conversions to or from integers, etc) the value of the original base pointer will be hidden to the optimizer and this transformation will be disabled. This change detects when the two sides of the comparison can be expressed as GEPs with the same base pointer, even if they don't appear as such in the IR. The transformation will convert all the pointer arithmetic to arithmetic done on indices and all the relevant uses of GEPs to GEPs with a common base pointer. The GEP comparison will be converted to a comparison done on indices. Reviewers: majnemer, jmolloy Subscribers: hfinkel, jevinskie, jmolloy, aadg, llvm-commits Differential Revision: http://reviews.llvm.org/D15146 llvm-svn: 257164
* [attrs] Split the late-revisit pattern for deducing norecurse inChandler Carruth2016-01-088-73/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a top-down manner into a true top-down or RPO pass over the call graph. There are specific patterns of function attributes, notably the norecurse attribute, which are most effectively propagated top-down because all they us caller information. Walk in RPO over the call graph SCCs takes the form of a module pass run immediately after the CGSCC pass managers postorder walk of the SCCs, trying again to deduce norerucrse for each singular SCC in the call graph. This removes a very legacy pass manager specific trick of using a lazy revisit list traversed during finalization of the CGSCC pass. There is no analogous finalization step in the new pass manager, and a lazy revisit list is just trying to produce an RPO iteration of the call graph. We can do that more directly if more expensively. It seems unlikely that this will be the expensive part of any compilation though as we never examine the function bodies here. Even in an LTO run over a very large module, this should be a reasonable fast set of operations over a reasonably small working set -- the function call graph itself. In the future, if this really is a compile time performance issue, we can look at building support for both post order and RPO traversals directly into a pass manager that builds and maintains the PO list of SCCs. Differential Revision: http://reviews.llvm.org/D15785 llvm-svn: 257163
* clang-format: [JS] Prefer wrapping before the TypeScript return typeDaniel Jasper2016-01-082-1/+4
| | | | | | | | | | | | | | over wrapping before parameters. Before: function someFunc( args: string[]): {longReturnValue: string[]} {} After: function someFunc(args: string[]): {longReturnValue: string[]} {} llvm-svn: 257162
* [LCG] Re-order the lazy node iterator below the node type to make someChandler Carruth2016-01-081-45/+46
| | | | | | | subsequent work I'm doing not have its delta obscured by boring code motion. NFC. llvm-svn: 257161
* Fix TestBatchMode on linuxPavel Labath2016-01-081-1/+2
| | | | | | | | | | New test introduced in r257120 was failing on linux. The reason for that the regex for setting the breakpoint was being applied to the "default file", which in this case was the asm file containing the definition of the sleep() syscall (because after attach, we are stopped in the sleep function). I have changed this use the more customary way of setting the breakpoint and specifying the source file name explicitly. llvm-svn: 257160
* clang-format: [JS] Add some Closure Compiler JSDoc tags to the defaultDaniel Jasper2016-01-082-0/+11
| | | | | | Google configuration so that they aren't line-wrapped. llvm-svn: 257159
* [WinEH] Update WinEHFuncInfo if StackColoring merges allocasDavid Majnemer2016-01-083-3/+64
| | | | | | | | | | | | | | | Windows EH keeping track of which frame index corresponds to a catchpad in order to inform the runtime where the catch parameter should be initialized. LLVM's optimizations are able to prove that the memory used by the catch parameter can be reused with another memory optimization, changing it's frame index. We need to keep WinEHFuncInfo up to date with respect to this or we will miscompile/assert. This fixes PR26069. llvm-svn: 257158
* InstrProfTest.cpp: Fix a warning. [-Wsign-compare]NAKAMURA Takumi2016-01-081-1/+1
| | | | llvm-svn: 257157
* [TableGen] Use range-based for loops. Also fix one loop to not use some ↵Craig Topper2016-01-081-25/+20
| | | | | | index name as an outer loop. NFC llvm-svn: 257156
* [TableGen] Combine variable declaration and initialization. Move a string ↵Craig Topper2016-01-081-3/+2
| | | | | | into a vector instead of copying. NFC llvm-svn: 257155
* clang-format: [JS] Support more ES6 classes.Daniel Jasper2016-01-082-0/+8
| | | | | | | | | | | | | | | Before: foo = class { constructor() {} } ; After: foo = class { constructor() {} }; llvm-svn: 257154
* Add value site truncation unit testXinliang David Li2016-01-081-10/+56
| | | | llvm-svn: 257153
* [AVR] Added AVRSelectionDAGInfo header fileDylan McKay2016-01-081-0/+29
| | | | llvm-svn: 257152
* Use more strict checks for merge Profile resultsXinliang David Li2016-01-081-30/+1
| | | | llvm-svn: 257151
* [AVX-512] Remove superfluous spaces from some asm strings.Craig Topper2016-01-081-10/+10
| | | | llvm-svn: 257150
* [X86] Don't print the aliased version of CVTSD2SI64rm. This appears to be a ↵Craig Topper2016-01-082-2/+2
| | | | | | mistake I made years ago. llvm-svn: 257149
* [X86] Use \t instead of space after mnemonics in a bunch InstAliases for ↵Craig Topper2016-01-081-79/+79
| | | | | | consistency. llvm-svn: 257148
* [PGO] Use new macro introduced/NFCXinliang David Li2016-01-081-1/+1
| | | | llvm-svn: 257147
* [PGO] Update test to match sorted outputXinliang David Li2016-01-081-66/+67
| | | | llvm-svn: 257146
* [PGO] Ensure vp data in indexed profile always sortedXinliang David Li2016-01-083-30/+10
| | | | | | | | | Done in InstrProfWriter to eliminate the need for client code to do the sorting. The operation is done once and reused many times so it is more efficient. Update unit test to remove sorting. Also update expected output of affected tests. llvm-svn: 257145
* Remove extra whitespace. NFC.Junmo Park2016-01-081-8/+8
| | | | llvm-svn: 257144
* [PGO] Fix a bug in InstProfWriter addRecordXinliang David Li2016-01-084-23/+135
| | | | | | | | | | For a new record with weight != 1, only edge profiling counters are scaled, VP data is not properly scaled. This patch refactors the code and fixes the problem. Also added sort by count interface (for follow up patch). llvm-svn: 257143
* [CUDA] Split out tests for unused-arg warnings from cuda-options.cu.Justin Lebar2016-01-082-18/+23
| | | | | | | | | | | | Summary: Trying to make this test a bit more manageable. Reviewers: tra Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15974 llvm-svn: 257142
* ELF: Remove SIZE relocs from isRelRelative.Rui Ueyama2016-01-082-3/+7
| | | | | | SIZE relocations are not PC-relative, so isRelRelative should return false. llvm-svn: 257141
* Add a comment.Rui Ueyama2016-01-081-0/+7
| | | | llvm-svn: 257140
* Remove static global GCNames from Function.cpp and move it to the ContextMehdi Amini2016-01-088-42/+53
| | | | | | | | | This remove the need for locking when deleting a function. Differential Revision: http://reviews.llvm.org/D15988 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 257139
* Revert r257117 "Performance improvement: Change lldb so that itJason Molenda2016-01-088-148/+11
| | | | | | | | puts a breakpoint" it is causing a regression in the TestStepNoDebug test case on ubuntu 14.04 with gcc 4.9.2. Thanks for the email Siva. I'll recommit when I've figured out the regression. llvm-svn: 257138
* Add call sequence start and end for __tls_get_addrKyle Butt2016-01-083-0/+93
| | | | | | | | | | | | | | This is a fix for bug http://llvm.org/bugs/show_bug.cgi?id=25839. For a PIC TLS variable access in a function, prologue (mflr followed by std and stdu) gets scheduled after a tls_get_addr call. tls_get_addr messed up LR but no one saves/restores it. Also added a test for save/restore clobbered registers during calling __tls_get_addr. Patch by Tim Shen llvm-svn: 257137
* profile: Do not pass -fPIC on Windows.Peter Collingbourne2016-01-081-3/+0
| | | | | | Unbreaks clang-cl build (cl warns on this flag, clang-cl errors on it). llvm-svn: 257136
* [PPC] Add long long/double support for vec_cts, vec_ctu and vec_ctfKyle Butt2016-01-082-4/+81
| | | | | | | | | | | Add long long/double support for vec_cts, vec_ctu and vec_ctf. Similar to this change in GCC: https://gcc.gnu.org/ml/gcc-patches/2014-08/msg02653.html Patch by Tim Shen. llvm-svn: 257135
* [Vectorization] Actually return from error case in isStridedPtrKyle Butt2016-01-082-0/+30
| | | | | | | | | | The early return seems to be missed. This causes a radical and wrong loop optimization on powerpc. It isn't reproducible on x86_64, because "UseInterleaved" is false. Patch by Tim Shen. llvm-svn: 257134
OpenPOWER on IntegriCloud