summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* [codeview] Add DISubprogram::ThisAdjustmentReid Kleckner2016-07-018-65/+93
| | | | | | | | | | | | | | | | | | | | | Summary: This represents the adjustment applied to the implicit 'this' parameter in the prologue of a virtual method in the MS C++ ABI. The adjustment is always zero unless multiple inheritance is involved. This increases the size of DISubprogram by 8 bytes, unfortunately. The adjustment really is a signed 32-bit integer. If this size increase is too much, we could probably win it back by splitting out a subclass with info specific to virtual methods (virtuality, vindex, thisadjustment, containingType). Reviewers: aprantl, dexonsmith Subscribers: aaboud, amccarth, llvm-commits Differential Revision: http://reviews.llvm.org/D21614 llvm-svn: 274325
* LoadStoreVectorizer: improvements: better pointer analysisMatt Arsenault2016-07-011-5/+26
| | | | | | | | | If OpB has an ADD NSW/NUW, we can use that to prove that adding 1 to OpA won't wrap if OpA + 1 == OpB. Patch by Fiona Glaser llvm-svn: 274324
* LoadStoreVectorizer: Don't increase alignment with no align setMatt Arsenault2016-07-011-2/+18
| | | | | | | If no alignment was set on the load/stores, it would vectorize to the new type even though this increases the default alignment. llvm-svn: 274323
* LoadStoreVectorizer: Check TTI for vec reg bit widthMatt Arsenault2016-07-011-16/+28
| | | | llvm-svn: 274322
* LoadStoreVectorizer: Fix assert when merging pointer opsMatt Arsenault2016-07-011-3/+17
| | | | | | | This needs to use inttoptr/ptrtoint if combining an int and pointer load. If a pointer is used always do an integer load. llvm-svn: 274321
* Revert "code hoisting pass based on GVN"Duncan P. N. Exon Smith2016-07-015-748/+0
| | | | | | | | | | | | This reverts commit r274305, since it breaks self-hosting: http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/22349/ http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/17232 Note that the blamelist on lab.llvm.org:8011 is incorrect. The previous build was r274299, but somehow r274305 wasn't included in the blamelist: http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules llvm-svn: 274320
* CodeGen: Use MachineInstr& in LiveVariables API, NFCDuncan P. N. Exon Smith2016-07-017-56/+56
| | | | | | | | | Change all the methods in LiveVariables that expect non-null MachineInstr* to take MachineInstr& and update the call sites. This clarifies the API, and designs away a class of iterator to pointer implicit conversions. llvm-svn: 274319
* LoadStoreVectorizer: Use AA metadataMatt Arsenault2016-07-011-8/+5
| | | | | | | This was not passing the full instruction with metadata to the alias query. llvm-svn: 274318
* CodeGen: Remove implicit iterator conversions in PHIElimination, NFCDuncan P. N. Exon Smith2016-07-011-7/+7
| | | | llvm-svn: 274317
* CodeGen: Use MachineInstr& in PostRASchedulerList, NFCDuncan P. N. Exon Smith2016-07-011-6/+6
| | | | | | Remove another unnecessary iterator to pointer conversion. llvm-svn: 274315
* AMDGPU: Implement getLoadStoreVecRegBitWidthMatt Arsenault2016-07-012-0/+23
| | | | llvm-svn: 274312
* CodeGen: Use MachineInstr& in PostRAHazardRecognizer, NFCDuncan P. N. Exon Smith2016-07-011-6/+4
| | | | | | | | Convert a loop to a range-based for, using MachineInstr& instead of MachineInstr* and removing an implicit conversion from iterator to pointer. llvm-svn: 274311
* CodeGen: Use MachineInstr& in PrologEpilogInserter, NFCDuncan P. N. Exon Smith2016-07-011-18/+20
| | | | | | | | | Use MachineInstr& over MachineInstr* to avoid implicit iterator to pointer conversions. MachineInstr*-as-nullptr was being used as a flag for whether the for loop terminated normally; I added an explicit `bool` instead. llvm-svn: 274310
* [pdb] Avoid reporting an error when the module symbol stream is emptyReid Kleckner2016-07-011-0/+3
| | | | llvm-svn: 274309
* [PDB] Indicate which type record failed hash validationReid Kleckner2016-07-011-2/+8
| | | | llvm-svn: 274308
* LoadStoreVectorizer: if one element of a vector is integer, default toMatt Arsenault2016-07-011-2/+18
| | | | | | | | | | | | integer. Fixes issues on some architectures where we use arithmetic ops to build vectors, which can cause bad things to happen for loads/stores of mixed types. Patch by Fiona Glaser llvm-svn: 274307
* LoadStoreVectorizer: Fix crashes on sub-byte typesMatt Arsenault2016-07-011-2/+14
| | | | llvm-svn: 274306
* code hoisting pass based on GVNSebastian Pop2016-07-015-0/+748
| | | | | | | | | | | | | This pass hoists duplicated computations in the program. The primary goal of gvn-hoist is to reduce the size of functions before inline heuristics to reduce the total cost of function inlining. Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki. Important algorithmic contributions by Daniel Berlin under the form of reviews. Differential Revision: http://reviews.llvm.org/D19338 llvm-svn: 274305
* Target: Remove unused arguments from overrideSchedPolicy, NFCDuncan P. N. Exon Smith2016-07-017-13/+3
| | | | | | | | | | TargetSubtargetInfo::overrideSchedPolicy takes two MachineInstr* arguments (begin and end) that invite implicit conversions from MachineInstrBundleIterator. One option would be to change their type to an iterator, but since they don't seem to have been used since the API was added in 2010, I'm deleting the dead code. llvm-svn: 274304
* CodeGen: Use MachineInstr& in MachineSink, NFCDuncan P. N. Exon Smith2016-07-011-52/+49
| | | | | | | Use MachineInstr& instead of MachineInstr* in MachineSinker to help avoid implicit conversions from iterator to pointer. llvm-svn: 274303
* [LAA] Fix alphabetical sorting of headers. NFCAdam Nemet2016-07-011-1/+1
| | | | llvm-svn: 274302
* CodeGen: Use MachineInstr& more in MachineTraceMetrics, NFCDuncan P. N. Exon Smith2016-07-011-20/+20
| | | | | | | | Push MachineInstr& through helper APIs for consistency. This doesn't remove any more implicit conversions, but it's a nice cleanup after r274300. llvm-svn: 274301
* CodeGen: Use MachineInstr& in MachineTraceMetrics, NFCDuncan P. N. Exon Smith2016-06-301-14/+14
| | | | | | This avoids an implicit conversion from iterator to pointer. llvm-svn: 274300
* LoadStoreVectorizer: Check skipFunction first.Matt Arsenault2016-06-301-4/+4
| | | | | | Also add test I forgot to add to r274296. llvm-svn: 274299
* CodeGen: Use MachineInstr& in LocalStackSlotAllocation, NFCDuncan P. N. Exon Smith2016-06-301-35/+29
| | | | | | | Avoid a number of implicit conversions from iterator to pointer by using range-based for and MachineInstr&. llvm-svn: 274298
* CodeGen: Use range-based for in LiveVariables, NFCDuncan P. N. Exon Smith2016-06-301-6/+4
| | | | | | | Avoid an implicit iterator to pointer conversion in LiveVariables::runOnBlock by switching to a range-based for. llvm-svn: 274297
* LoadStoreVectorizer: Skip optnone functionsMatt Arsenault2016-06-301-1/+1
| | | | llvm-svn: 274296
* CodeGen: Use MachineInstr& in HoistSpillHelper, NFCDuncan P. N. Exon Smith2016-06-301-14/+15
| | | | | | Avoid another few implicit conversions from iterator to pointer. llvm-svn: 274295
* CodeGen: Use MachineInstr& in LDVImpl::handleDebugValue, NFCDuncan P. N. Exon Smith2016-06-301-14/+13
| | | | | | Avoid another implicit conversion from iterator to pointer. llvm-svn: 274294
* Add LoadStoreVectorizer passMatt Arsenault2016-06-303-1/+827
| | | | | | | This was contributed by Apple, and I've been working on minimal cleanups and generalizing it. llvm-svn: 274293
* CodeGen: Use MachineInstr& in ExpandISelPseudos, NFCDuncan P. N. Exon Smith2016-06-301-3/+3
| | | | | | | Avoid another implicit conversion from MachineInstrBundleIterator to MachineInstr* by using MachineInstr&. llvm-svn: 274292
* CodeGen: Use MachineInstr& in IfConversion, NFCDuncan P. N. Exon Smith2016-06-301-9/+9
| | | | | | | | Switch to a range-based for in IfConverter::PredicateBlock and take MachineInstr& in MaySpeculate to avoid an implicit conversion from MachineBasicBlock::iterator to MachineInstr*. llvm-svn: 274290
* CodeGen: Use MachineInstr& in TargetLowering, NFCDuncan P. N. Exon Smith2016-06-3035-1253/+1334
| | | | | | | | | | | | | This is a mechanical change to make TargetLowering API take MachineInstr& (instead of MachineInstr*), since the argument is expected to be a valid MachineInstr. In one case, changed a parameter from MachineInstr* to MachineBasicBlock::iterator, since it was used as an insertion point. As a side effect, this removes a bunch of MachineInstr* to MachineBasicBlock::iterator implicit conversions, a necessary step toward fixing PR26753. llvm-svn: 274287
* Test commit.David L Kreitzer2016-06-301-1/+1
| | | | llvm-svn: 274284
* Don't use unchecked dyn_castMatt Arsenault2016-06-301-1/+1
| | | | llvm-svn: 274282
* SLPVectorizer: Move propagateMetadata to VectorUtilsMatt Arsenault2016-06-303-68/+48
| | | | | | | | This will be re-used by the LoadStoreVectorizer. Fix handling of range metadata and testcase by Justin Lebar. llvm-svn: 274281
* AMDGPU: Add m0 vgpr load loop block as successorMatt Arsenault2016-06-301-0/+1
| | | | | | | This shows up as a verifier error when I move this earlier, not sure why it didn't before. llvm-svn: 274275
* [libFuzzer] Let user specify extra stats file.Mike Aizatsky2016-06-303-4/+208
| | | | | | | | | | | | Summary: If AFL_DRIVER_EXTRA_STATS_FILENAME is set and valid, write to it peak_rss_mb and slowest_unit_time_sec. These are both stats that libFuzzer can print but afl cannot. Reviewers: kcc, aizatsky, metzman Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D21742 llvm-svn: 274273
* Add an artificial line-0 debug location when the compiler emits a call toYunzhong Gao2016-06-301-0/+2
| | | | | | | | __stack_chk_fail(). This avoids a compiler crash. Differential Revision: http://reviews.llvm.org/D21818 llvm-svn: 274263
* Refine the set of UniformAfterVectorization instructions.Wei Mi2016-06-301-26/+71
| | | | | | | | | | Except the seed uniform instructions (conditional branch and consecutive ptr instructions), dependencies to be added into uniform set should only be used by existing uniform instructions or intructions outside of current loop. Differential Revision: http://reviews.llvm.org/D21755 llvm-svn: 274262
* Delete MCCodeGenInfo.Rafael Espindola2016-06-3019-237/+41
| | | | | | | MC doesn't really care about CodeGen stuff, so this was just complicating target initialization. llvm-svn: 274258
* revert http://reviews.llvm.org/D21101Etienne Bergeron2016-06-301-39/+0
| | | | llvm-svn: 274251
* [pdb] Re-add code to write PDB files.Zachary Turner2016-06-303-47/+92
| | | | | | | | | Somehow all the functionality to write PDB files got removed, probably accidentally when uploading the patch perhaps the wrong one got uploaded. This re-adds all the code, as well as the corresponding test. llvm-svn: 274248
* [exceptions] Upgrade exception handlers when stack protector is usedEtienne Bergeron2016-06-301-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: MSVC provide exception handlers with enhanced information to deal with security buffer feature (/GS). To be more secure, the security cookies (GS and SEH) are validated when unwinding the stack. The following code: ``` void f() {} void foo() { __try { f(); } __except(1) { f(); } } ``` Reviewers: majnemer, rnk Subscribers: thakis, llvm-commits, chrisha Differential Revision: http://reviews.llvm.org/D21101 llvm-svn: 274239
* fix formatting, add TODO; NFCSanjay Patel2016-06-301-1/+2
| | | | llvm-svn: 274238
* [DSE] Fix bug in partial overwrite trackingJun Bum Lim2016-06-301-7/+14
| | | | | | | | | | | | | | Summary: Found cases where DSE incorrectly add partially-overwritten intervals. Please see the test case for details. Reviewers: mcrosier, eeckstein, hfinkel Subscribers: mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D21859 llvm-svn: 274237
* [InstCombine] shrink switch conditions better (PR24766)Sanjay Patel2016-06-301-7/+5
| | | | | | | | | | | | | | https://llvm.org/bugs/show_bug.cgi?id=24766#c2 This removes a hack that was added for the benefit of x86 codegen. It prevented shrinking the switch condition even to smaller legal (DataLayout) types. We have a safety mechanism in CGP after: http://reviews.llvm.org/rL251857 ...so we're free to use the optimal (smallest) IR type now. Differential Revision: http://reviews.llvm.org/D12965 llvm-svn: 274233
* Test commitElliot Colp2016-06-301-1/+1
| | | | llvm-svn: 274232
* [InstCombine] use ConstantExpr::getBitCast() instead of creating useless ↵Sanjay Patel2016-06-301-2/+1
| | | | | | instruction llvm-svn: 274229
* [InstCombine] extend matchSelectFromAndOr() to work with i1 scalar typesSanjay Patel2016-06-301-10/+26
| | | | | | | | If the incoming types are i1, then we don't have to pattern match any sext ops. Differential Revision: http://reviews.llvm.org/D21740 llvm-svn: 274228
OpenPOWER on IntegriCloud