| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
can insert a new element, invalidating iterators. Use find
instead, and handle the case where the key is not found explicitly.
llvm-svn: 151871
|
| |
|
|
| |
llvm-svn: 151869
|
| |
|
|
|
|
|
|
|
| |
The inline table needs to be constructed ahead of time so that it doesn't try to
create new strings while we're emitting everything.
This reverts commit a8ff9bccb399183cdd5f1c3cec2bda763664b4b0.
llvm-svn: 151864
|
| |
|
|
|
|
|
|
|
|
|
|
| |
floating point equality comparisons into integer ones with -ffast-math. The
issue is the optimization causes +0.0 != -0.0.
Now the optimization is only done when one side is known to be 0.0. The other
side's sign bit is masked off for the comparison.
rdar://10964603
llvm-svn: 151861
|
| |
|
|
|
|
|
|
| |
to do more invasive refactoring here to get FoldingSet to use size_t or
even hash_code directly, but for now this is a good first step to remove
Yet Another Hashing Algorithm from LLVM.
llvm-svn: 151859
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This function could have r12 live across a function call when compiling
thumb1 code.
The test case for this is not included because it is very long. It must
provoke emergency spilling near a function call. The behavior is
provoked by MultiSource/Applications/JM/lencod, and it triggers an
assertion in the scavenger.
<rdar://problem/10963642>
llvm-svn: 151855
|
| |
|
|
|
|
|
|
|
| |
fixups that are being used to determine section offsets. Reduces
the total number of fixups by 50% for a non-trivial testcase.
Part of rdar://10413936
llvm-svn: 151852
|
| |
|
|
|
|
| |
rdar://10965031
llvm-svn: 151850
|
| |
|
|
| |
llvm-svn: 151849
|
| |
|
|
| |
llvm-svn: 151847
|
| |
|
|
|
|
| |
Add ObjectFile::getLoadName() for retrieving the soname/installname of a shared object.
llvm-svn: 151845
|
| |
|
|
|
|
| |
runs into the undefined 15 condition code value.
llvm-svn: 151844
|
| |
|
|
|
|
|
|
|
|
|
| |
and stores was added.
- SelectAddr should return false if Parent is an unaligned f32 load or store.
- Only aligned load and store nodes should be matched to select reg+imm
floating point instructions.
- MIPS does not have support for f64 unaligned load or store instructions.
llvm-svn: 151843
|
| |
|
|
|
|
|
|
| |
smaller than the slab size.
This replaces r151834 with a simpler fix.
llvm-svn: 151842
|
| |
|
|
|
|
| |
increase the slab size.
llvm-svn: 151834
|
| |
|
|
|
|
|
|
| |
r151822, sorry sorry. =[
We need 'git svn nothave' or some such...
llvm-svn: 151824
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of the proposed standard hashing interfaces (N3333), and to use
a modified and tuned version of the CityHash algorithm.
Some of the highlights of this change:
-- Significantly higher quality hashing algorithm with very well
distributed results, and extremely few collisions. Should be close to
a checksum for up to 64-bit keys. Very little clustering or clumping of
hash codes, to better distribute load on probed hash tables.
-- Built-in support for reserved values.
-- Simplified API that composes cleanly with other C++ idioms and APIs.
-- Better scaling performance as keys grow. This is the fastest
algorithm I've found and measured for moderately sized keys (such as
show up in some of the uniquing and folding use cases)
-- Support for enabling per-execution seeds to prevent table ordering
or other artifacts of hashing algorithms to impact the output of
LLVM. The seeding would make each run different and highlight these
problems during bootstrap.
This implementation was tested extensively using the SMHasher test
suite, and pased with flying colors, doing better than the original
CityHash algorithm even.
I've included a unittest, although it is somewhat minimal at the moment.
I've also added (or refactored into the proper location) type traits
necessary to implement this, and converted users of GeneralHash over.
My only immediate concerns with this implementation is the performance
of hashing small keys. I've already started working to improve this, and
will continue to do so. Currently, the only algorithms faster produce
lower quality results, but it is likely there is a better compromise
than the current one.
Many thanks to Jeffrey Yasskin who did most of the work on the N3333
paper, pair-programmed some of this code, and reviewed much of it. Many
thanks also go to Geoff Pike Pike and Jyrki Alakuijala, the original
authors of CityHash on which this is heavily based, and Austin Appleby
who created MurmurHash and the SMHasher test suite.
Also thanks to Nadav, Tobias, Howard, Jay, Nick, Ahmed, and Duncan for
all of the review comments! If there are further comments or concerns,
please let me know and I'll jump on 'em.
llvm-svn: 151822
|
| |
|
|
|
|
|
|
| |
though they could have sideeffects.
Only allow log2/exp2 to be converted to an intrinsic if they are declared "readnone".
llvm-svn: 151807
|
| |
|
|
|
|
|
|
|
|
|
| |
function pointer.
This allows us to make TRC non-polymorphic and value-initializable, eliminating a huge static
initializer and a ton of cruft from the generated code.
Shrinks ARMBaseRegisterInfo.o by ~100k.
llvm-svn: 151806
|
| |
|
|
| |
llvm-svn: 151792
|
| |
|
|
|
|
|
|
| |
objects for big endian and little endian targets.
Patch by Jack Carter.
llvm-svn: 151788
|
| |
|
|
|
|
|
|
|
|
| |
Simply treat bundles as instructions. Spill code is inserted between
bundles, never inside a bundle. Rewrite all operands in a bundle at
once.
Don't attempt and memory operand folding inside bundles.
llvm-svn: 151787
|
| |
|
|
|
|
|
|
|
| |
* Add begin_dynamic_table() / end_dynamic_table() private interface to ELFObjectFile.
* Add begin_libraries_needed() / end_libraries_needed() interface to ObjectFile, for grabbing the list of needed libraries for a shared object or dynamic executable.
* Implement this new interface completely for ELF, leave stubs for COFF and MachO.
* Add 'llvm-readobj' tool for dumping ObjectFile information.
llvm-svn: 151785
|
| |
|
|
|
|
|
|
|
| |
This allows the function to be inlined, and makes it suitable for use in
getInstructionIndex().
Also provide a const version. C++ is great for touch typing practice.
llvm-svn: 151782
|
| |
|
|
|
|
|
| |
While we're at it - don't copy vreg implicit operands while rematerializing.
This fixes PR12138.
llvm-svn: 151779
|
| |
|
|
|
|
|
| |
code sections when needed. It just had a conditional
the wrong way around.
llvm-svn: 151777
|
| |
|
|
|
|
|
| |
So with darwin's otool(1) an x86_64 hello world .o file will print:
leaq L_.str(%rip), %rax ## literal pool for: Hello world
llvm-svn: 151769
|
| |
|
|
|
|
|
|
|
| |
std::vector.
- Good for 1-2% speedup on writing PCH for Cocoa.h.
- Clang side API match to follow shortly, there wasn't an easy way to make this
non-breaking.
llvm-svn: 151750
|
| |
|
|
|
|
| |
and remove getBuffer().
llvm-svn: 151748
|
| |
|
|
| |
llvm-svn: 151747
|
| |
|
|
|
|
|
|
| |
extension.
Patch by Tyler Nowicki!
llvm-svn: 151743
|
| |
|
|
|
|
| |
optimization, making the lives of later passes easier.
llvm-svn: 151722
|
| |
|
|
|
|
| |
a constant. This fixes PR1768.
llvm-svn: 151713
|
| |
|
|
|
|
|
|
|
| |
ST_Undefined. Implement these completely for ELF.
Rename ST_External to ST_Unknown, and slightly change its semantics. It now only indicates that the symbol's type
is unknown, not that the symbol is undefined. (For that, use ST_Undefined).
llvm-svn: 151696
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This transformation is not correct for not-equal conditions:
(trunc x) != C1 & (and x, CA) != C2 -> (and x, CA|CMAX) != C1|C2
Let
C1 == 0
C2 == 0
CA == 0xFF0000
CMAX == 0xFF
and truncating to i8.
The original truth table:
x | A: trunc x != 0 | B: x & 0xFF0000 != 0 | A & B != 0
--------------------------------------------------------------
0x00000 | 0 | 0 | 0
0x00001 | 1 | 0 | 0
0x10000 | 0 | 1 | 0
0x10001 | 1 | 1 | 1
The truth table of the replacement:
x | x & 0xFF00FF != 0
----------------------------
0x00000 | 0
0x00001 | 1
0x10000 | 1
0x10001 | 1
So they are different.
llvm-svn: 151691
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This function does more or less the same as
MI::readsWritesVirtualRegister(), but it supports bundles as well.
It also determines if any constraint requires reading and writing
operands to use the same register. Most clients want to know.
Use the more modern MO.readsReg() instead of trying to sort out undefs
and partial redefines. Stop supporting the extra full <imp-def> operand
as an alternative to <def,undef> sub-register defines.
llvm-svn: 151690
|
| |
|
|
| |
llvm-svn: 151687
|
| |
|
|
| |
llvm-svn: 151685
|
| |
|
|
|
|
|
|
|
| |
Extract a base class and provide four specific sub-classes for iterating
over const/non-const bundles/instructions.
This eliminates the mystery bool constructor argument.
llvm-svn: 151684
|
| |
|
|
|
|
|
|
|
|
| |
find root names on Unix.
- This fixes make_absolute to not basically always call current_path() on
Unix systems.
- I think the API probably needs cleanup in this area, but I'll let Michael
handle that.
llvm-svn: 151681
|
| |
|
|
|
|
| |
in the streaming case.
llvm-svn: 151676
|
| |
|
|
| |
llvm-svn: 151675
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this hook, functions w/ a completely empty body (including no
epilogue) will cause an MCEmitter assertion failure.
For example,
define internal fastcc void @empty_function() {
unreachable
}
rdar://10947471
llvm-svn: 151673
|
| |
|
|
|
|
| |
and isWeak(), with a bitset of flags.
llvm-svn: 151670
|
| |
|
|
|
|
|
|
| |
methods are no longer needed now that LinearScan has gone away.
(Contains tweaks trivialSpillEverywhere to enable the removal of getNewVRegs).
llvm-svn: 151658
|
| |
|
|
|
|
|
|
|
|
| |
debug info for assembly files. We were already doing the right thing when
producing debug info for C/C++.
ELF linkers don't know dwarf, so they depend on these relocations to produce
valid dwarf output.
llvm-svn: 151655
|
| |
|
|
|
|
|
|
| |
These instructions accept but do not require a size suffix.
rdar://10947225
llvm-svn: 151646
|
| |
|
|
|
|
| |
direct call.
llvm-svn: 151645
|
| |
|
|
| |
llvm-svn: 151644
|
| |
|
|
| |
llvm-svn: 151639
|