| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
URL: http://llvm.org/viewvc/llvm-project?rev=171524&view=rev
Log:
The current Intel Atom microarchitecture has a feature whereby when a function
returns early then it is slightly faster to execute a sequence of NOP
instructions to wait until the return address is ready,
as opposed to simply stalling on the ret instruction
until the return address is ready.
When compiling for X86 Atom only, this patch will run a pass, called
"X86PadShortFunction" which will add NOP instructions where less than four
cycles elapse between function entry and return.
It includes tests.
Patch by Andy Zhang.
llvm-svn: 171603
|
| |
|
|
| |
llvm-svn: 171602
|
| |
|
|
| |
llvm-svn: 171601
|
| |
|
|
|
|
|
|
|
|
|
|
| |
With DenseMapInfo<Enum>, it is miscompiled on g++-4.4.
static inline Enum getEmptyKey() { return Enum(<arbitrary int/unsigned value>); }
isEauql(getEmptyKey(), ...)
The compiler mis-assumes the return value is not aliased to Enum.
llvm-svn: 171600
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The series of patches leading up to this one makes llc -O0 run 8% faster.
When deallocating a MachineFunction, there is no need to visit all
MachineInstr and MachineOperand objects to deallocate them. All their
memory come from a BumpPtrAllocator that is about to be purged, and they
have empty destructors anyway.
This only applies when deallocating the MachineFunction.
DeleteMachineInstr() should still be used to recycle MI memory during
the codegen passes.
Remove the LeakDetector support for MachineInstr. I've never seen it
used before, and now it definitely doesn't work. With this patch, leaked
MachineInstrs would be much less of a problem since all of their memory
will be reclaimed by ~MachineFunction().
llvm-svn: 171599
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of an std::vector<MachineOperand>, use MachineOperand arrays
from an ArrayRecycler living in MachineFunction.
This has several advantages:
- MachineInstr now has a trivial destructor, making it possible to
delete them in batches when destroying MachineFunction. This will be
enabled in a later patch.
- Bypassing malloc() and free() can be faster, depending on the system
library.
- MachineInstr objects and their operands are allocated from the same
BumpPtrAllocator, so they will usually be next to each other in
memory, providing better locality of reference.
- Reduce MachineInstr footprint. A std::vector is 24 bytes, the new
operand array representation only uses 8+4+1 bytes in MachineInstr.
- Better control over operand array reallocations. In the old
representation, the use-def chains would be reordered whenever a
std::vector reached its capacity. The new implementation never changes
the use-def chain order.
Note that some decisions in the code generator depend on the use-def
chain orders, so this patch may cause different assembly to be produced
in a few cases.
llvm-svn: 171598
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This function works like memmove() for MachineOperands, except it also
updates any use-def chains containing the moved operands.
The use-def chains are updated without affecting the order of operands
in the list. That isn't possible when using the
removeRegOperandFromUseList() and addRegOperandToUseList() functions.
Callers to follow soon.
llvm-svn: 171597
|
| |
|
|
|
|
| |
the compiler doesn't support c++11.
llvm-svn: 171596
|
| |
|
|
|
|
|
|
|
|
|
|
| |
legality of an address mode to not use a struct of four values and
instead to accept them as parameters. I'd love to have named parameters
here as most callers only care about one or two of these, but the
defaults aren't terribly scary to write out.
That said, there is no real impact of this as the passes aren't yet
using STTI for this and are still relying upon TargetLowering.
llvm-svn: 171595
|
| |
|
|
|
|
| |
-I to that directory; rename 'iterators.h' to 'iterator_test.h'; remove hard-coded paths to include files from more than 350 source files
llvm-svn: 171594
|
| |
|
|
|
|
|
|
| |
RecusiveASTVisitor. With Clang and modern GCCs this was found through
the injected class name of the base class but older GCCs don't properly
implement the injected class name rules.
llvm-svn: 171593
|
| |
|
|
|
|
|
|
| |
and adds a new file ReaderWriterYAML.cpp that uses YAML I/O.
Lots of tweaks to test suite for slightly different YAML encoding.
llvm-svn: 171592
|
| |
|
|
| |
llvm-svn: 171591
|
| |
|
|
|
|
|
|
|
|
|
|
| |
next to its only user. This helper relies on TargetLowering information
that shouldn't be generally used throughout the Transfoms library, and
so it made little sense as a generic utility.
This also consolidates the file where we need to remove the remaining
uses of TargetLowering in favor of the IR-layer abstract interface in
TargetTransformInfo.
llvm-svn: 171590
|
| |
|
|
|
|
|
| |
Fixes the CMake build. It took me cutting and pasting this before
I managed to see the missing character. =]
llvm-svn: 171589
|
| |
|
|
|
|
| |
and add stack alignment information.
llvm-svn: 171588
|
| |
|
|
|
|
| |
and add stack alignment information.
llvm-svn: 171587
|
| |
|
|
|
|
|
|
| |
The Attribute class is eventually going to represent one attribute. So we need
this class to create the set of attributes. Add some iterator methods to the
builder to access its internal bits in a nice way.
llvm-svn: 171586
|
| |
|
|
|
|
|
| |
It is somewhat hard to test linkage, so I decided to try to add an assert. This
already found some interesting cases where there were different.
llvm-svn: 171585
|
| |
|
|
| |
llvm-svn: 171584
|
| |
|
|
|
|
|
|
| |
as long as the reduction chain is used in the LHS.
PR14803.
llvm-svn: 171583
|
| |
|
|
|
|
| |
This should fix clang-native-arm-cortex-a9. Thanks Renato.
llvm-svn: 171582
|
| |
|
|
|
|
|
|
| |
This is similar to the existing Recycler allocator, but instead of
recycling individual objects from a BumpPtrAllocator, arrays of
different sizes can be allocated.
llvm-svn: 171581
|
| |
|
|
| |
llvm-svn: 171580
|
| |
|
|
| |
llvm-svn: 171579
|
| |
|
|
| |
llvm-svn: 171578
|
| |
|
|
|
|
| |
-flavor core.
llvm-svn: 171577
|
| |
|
|
|
|
|
| |
This will be tested by a following committ that runs the linker
with no inputs.
llvm-svn: 171576
|
| |
|
|
| |
llvm-svn: 171575
|
| |
|
|
|
|
|
|
|
|
|
| |
leaving this undefined, and despite the sentence in the standard that
seems to require it, I'll cede the point and assume its a bug in the
wording. Other parts of POSIX regularly allow for things to be -1
instead of undefined, this should too. Makes things more consistent too.
This should have to real impact for folks though.
llvm-svn: 171574
|
| |
|
|
|
|
| |
to filcab on IRC for spotting.
llvm-svn: 171573
|
| |
|
|
|
|
|
|
| |
before doing a storeStrong to it.
// rdar://12530881
llvm-svn: 171572
|
| |
|
|
|
|
| |
expression.
llvm-svn: 171571
|
| |
|
|
|
|
| |
the source code should now be set up to handle this.
llvm-svn: 171570
|
| |
|
|
|
|
| |
- due to bugzilla 14806 (platform status command prints more information on Mac OS X than on Linux)
llvm-svn: 171569
|
| |
|
|
|
|
|
| |
if-ed out code paths and on Windows. Hopefully restores the Windows
build. Thanks to Reid Kleckner for helping triage this.
llvm-svn: 171568
|
| |
|
|
| |
llvm-svn: 171567
|
| |
|
|
|
|
|
| |
- setting PYTHONPATH is no longer needed to run the lldb CLI on Linux.
- added instructions for setting PYTHONPATH correctly for running scripts in the native interpreter
llvm-svn: 171566
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
defines _POSIX_CPUTIME but doesn't support the clock_* functions.
I don't test the value of _POSIX_CPUTIME because the spec merely says
that if it is defined, the CPU-specific timers are available, whereas it
says that _POSIX_TIMERS must be defined and defined to a value greater
than zero. However, this may not work, as the POSIX spec clearly states:
"If the symbolic constant _POSIX_CPUTIME is defined, then the symbolic
constant _POSIX_TIMERS shall also be defined by the implementation to
have the value 200112L."
If this doesn't work, I'll add more hacks for Darwin.
llvm-svn: 171565
|
| |
|
|
|
|
| |
rdar://11562117
llvm-svn: 171564
|
| |
|
|
|
|
|
|
| |
Have the disassembler's Instruction::Dump always insert at least
one space character between an opcode and its arguments, don't let
a long opcode name abut the arguments.
llvm-svn: 171561
|
| |
|
|
| |
llvm-svn: 171560
|
| |
|
|
| |
llvm-svn: 171559
|
| |
|
|
|
|
|
|
| |
- now prints the correct PYTHONPATH
- update dotest.py to use lldb -P result correctly
- resolves TestPublicAPIHeaders test failure (on Linux)
llvm-svn: 171558
|
| |
|
|
| |
llvm-svn: 171557
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some of this is still pretty rough (note the load of FIXMEs), but it is
strictly an improvement and fixes various bugs that were related to
macro processing but are also imporant in non-macro use cases.
Specific fixes:
- correctly puts espaced newlines at the end of the line
- fixes counting of white space before a token when escaped newlines are
present
- fixes parsing of "trailing" tokens when eof() is hit
- puts macro parsing orthogonal to parsing other structure
- general support for parsing of macro definitions
Due to the fix to format trailing tokens, this change also includes a
bunch of fixes to the c-index tests.
llvm-svn: 171556
|
| |
|
|
|
|
|
|
|
| |
__strong __block variables, perform objc_storeStrong on
source and destination instead of direct move. This
is done with -O0 and to improve some analysis.
// rdar://12530881
llvm-svn: 171555
|
| |
|
|
| |
llvm-svn: 171554
|
| |
|
|
|
|
|
|
| |
The bit mask thing will be a thing of the past. It's not extensible enough. Get
rid of its use here. Opt instead for using a vector to hold the attributes.
Note: Some of this code will become obsolete once the rewrite is further along.
llvm-svn: 171553
|
| |
|
|
|
|
|
|
| |
instead of failing to read.
<rdar://problem/12958589>
llvm-svn: 171552
|