| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 274384
|
| |
|
|
| |
llvm-svn: 274381
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This issue was encountered on libcmt.pdb, which has a type record that
looks like this:
Struct (0x1094) {
TypeLeafKind: LF_STRUCTURE (0x1505)
MemberCount: 3
Properties [ (0x200)
HasUniqueName (0x200)
]
FieldList: <field list> (0x1093)
DerivedFrom: 0x0
VShape: 0x0
SizeOf: 4
Name: <unnamed-tag>
LinkageName: .?AU<unnamed-tag>@@
}
The checks for startswith/endswith "<unnamed-tag>" should look at the
display name, not the linkage name.
llvm-svn: 274376
|
| |
|
|
|
|
|
|
|
|
|
| |
We were asserting that our type records were valid when emitting
assembly, but not when emitting an object file.
I've been seeing lots of LNK1285 errors (corrupt PDB) during incremental
debug self-host builds with the MSVC linker, and hopefully this will
catch some of them earlier.
llvm-svn: 274373
|
| |
|
|
|
|
|
|
|
|
| |
Enable testing different scheduling variants if sgpr usage
is very high. It was previously disabled because of a bug
in handleMove, but it has been fixed since.
Patch by Axel Davy
llvm-svn: 274372
|
| |
|
|
|
|
| |
This caused PR28387: Assertion "#operands for dag node doesn't match .td file!"
llvm-svn: 274367
|
| |
|
|
|
|
|
| |
Remove a few more implicit iterator to pointer conversions by preferring
MachineInstr&.
llvm-svn: 274363
|
| |
|
|
| |
llvm-svn: 274362
|
| |
|
|
|
|
|
| |
Avoid implicit conversions from MachineBasicBlock::iterator to
MachineInstr* in TargetInstrInfo.
llvm-svn: 274361
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Use MachineInstr& to avoid implicit conversions from
MachineBasicBlock::iterator to MachineInstr*. In one case, this could
use a range-based for loop, but the other loops iterated in reverse
order.
One of the reverse-loops checked the MachineInstr* for nullptr, a
condition that is provably unreachable. (And even if my proof has a
flaw, UBSan would catch the bug.)
llvm-svn: 274360
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
frame objects.
Summary: The code generation should be independent of the debug info.
Reviewers: zansari, davidxl, mkuper, majnemer
Subscribers: majnemer, llvm-commits
Differential Revision: http://reviews.llvm.org/D21911
llvm-svn: 274357
|
| |
|
|
|
|
|
| |
Avoid an unnecessary (and implicit) iterator to pointer conversion in
UnreachableBlockElim by using the post-increment operator.
llvm-svn: 274355
|
| |
|
|
|
|
|
| |
Avoid implicit conversions from iterator to pointer by preferring
MachineInstr& and using range-based for loops.
llvm-svn: 274354
|
| |
|
|
|
|
|
|
|
| |
Use MachineInstr& instead of MachineInstr* in RegAllocFast to avoid
implicit conversions from MachineInstrBundleIterator. RAFast::spillAll
and RAFast::spillVirtReg still take iterators, since their argument may
be an end iterator from MachineBasicBlock::getFirstTerminator.
llvm-svn: 274353
|
| |
|
|
|
|
|
|
|
| |
No functional changes. Just created wrapper classes around the 3
and 4 reg mult and mac instruction classes.
Differential Revision: http://reviews.llvm.org/D21549
llvm-svn: 274347
|
| |
|
|
|
|
| |
While there use emplace_back to create an expensive pair.
llvm-svn: 274344
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was reverted in r268740 because of problems with corresponding Clang change.
Clang change was updated and resubmitted in r274220.
Check calling convention in AMDGPUMachineFunction::isKernel
This will be used for AMDGPU_HSA_KERNEL symbol type in output ELF.
Also, in the future unused non-kernels may be optimized.
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm, joker.eph, llvm-commits
Differential Revision: http://reviews.llvm.org/D19917
llvm-svn: 274341
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: dst_sel and dst_unused disabled for VOPC as they have no effect on result
Reviewers: artem.tamazov, tstellarAMD, vpykhtin
Subscribers: arsenm, kzhuravl
Differential Revision: http://reviews.llvm.org/D21376
llvm-svn: 274340
|
| |
|
|
| |
llvm-svn: 274339
|
| |
|
|
|
|
| |
ArrayRef argument and its begin/end iterators. Also use 'int' type for number of elements and loop iterators to remove several typecasts. No functional change intended.
llvm-svn: 274338
|
| |
|
|
|
|
|
|
| |
pointer to a mask array. Convert all callers to use the ArrayRef version. No functional change intended.
For the most part this simplifies all callers. There were two places in X86 that needed an explicit makeArrayRef to shorten a statically sized array.
llvm-svn: 274337
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Group" sections while lowering. In particular, for ELF sections this is
useful for creating function-specific groups that get merged into the
same named section.
Also use const Twine& instead of StringRef for the getELF functions
while we're here.
Differential Revision: http://reviews.llvm.org/D21743
llvm-svn: 274336
|
| |
|
|
| |
llvm-svn: 274335
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21636
llvm-svn: 274334
|
| |
|
|
|
|
|
| |
Make worklist and ehworklist member of the
class so that they don't need to be passed around.
llvm-svn: 274333
|
| |
|
|
| |
llvm-svn: 274329
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 274322
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
This was not passing the full instruction with metadata
to the alias query.
llvm-svn: 274318
|
| |
|
|
| |
llvm-svn: 274317
|
| |
|
|
|
|
| |
Remove another unnecessary iterator to pointer conversion.
llvm-svn: 274315
|
| |
|
|
| |
llvm-svn: 274312
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 274309
|
| |
|
|
| |
llvm-svn: 274308
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 274306
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
Use MachineInstr& instead of MachineInstr* in MachineSinker to help
avoid implicit conversions from iterator to pointer.
llvm-svn: 274303
|
| |
|
|
| |
llvm-svn: 274302
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
This avoids an implicit conversion from iterator to pointer.
llvm-svn: 274300
|
| |
|
|
|
|
| |
Also add test I forgot to add to r274296.
llvm-svn: 274299
|