| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
performance metrics. Partial Specialization will apply the former to function specializations, and the latter to all callsites that can use a specialization, in order to decide whether to create a specialization
llvm-svn: 116057
|
|
|
|
|
|
| |
case. Add test case. This code eventually needs to be tighter, since it's always allocating it, even in leaf routines.
llvm-svn: 116056
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
callee-saved registers at the end of the lists. Also prefer to avoid using
the low registers that are in register subclasses required by certain
instructions, so that those registers will more likely be available when needed.
This change makes a huge improvement in spilling in some cases. Thanks to
Jakob for helping me realize the problem.
Most of this patch is fixing the testsuite. There are quite a few places
where we're checking for specific registers. I changed those to wildcards
in places where that doesn't weaken the tests. The spill-q.ll and
thumb2-spill-q.ll tests stopped spilling with this change, so I added a bunch
of live values to force spills on those tests.
llvm-svn: 116055
|
|
|
|
| |
llvm-svn: 116054
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the i8 versions of instructions in some cases. In test6, we started
generating:
cmpq $0, -8(%rsp) ## encoding: [0x48,0x81,0x7c,0x24,0xf8,0x00,0x00,0x00,0x00]
## <MCInst #478 CMP64mi32
## <MCOperand Reg:114>
## <MCOperand Imm:1>
## <MCOperand Reg:0>
## <MCOperand Imm:-8>
## <MCOperand Reg:0>
## <MCOperand Imm:0>>
instead of:
cmpq $0, -8(%rsp) ## encoding: [0x48,0x83,0x7c,0x24,0xf8,0x00]
## <MCInst #479 CMP64mi8
## <MCOperand Reg:114>
## <MCOperand Imm:1>
## <MCOperand Reg:0>
## <MCOperand Imm:-8>
## <MCOperand Reg:0>
## <MCOperand Imm:0>>
Fix this and add some comments.
llvm-svn: 116053
|
|
|
|
| |
llvm-svn: 116052
|
|
|
|
| |
llvm-svn: 116051
|
|
|
|
| |
llvm-svn: 116050
|
|
|
|
|
|
|
|
| |
Added a new SortOrder enumeration and hooked it up to the "image dump symtab"
command so we can dump symbol tables in the original order, sorted by address,
or sorted by name.
llvm-svn: 116049
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
preambles:
- When we rebuild a precompiled preamble, make sure to disable
skipping anything in the main file; we may have had leftover
preamble-skipping values in the lexer, which leads to very empty
preamble. This is a correctness issue.
- When we rebuild a precompiled preamble, clear out any prior state
in the Diagnostic object. Otherwise, we might think that there
were errors when we were building the preamble itself, and
therefore reject the resulting preamble. This is mainly a
performance issue.
- Don't remove old remappings when digging out the remapping for the
main file. Having the old mappings around does not hurt in the
common case (later remappings will just overwrite them), and is
important when we fail to find a preamble: we don't want to have
removed the remapping, because we'll need it later.
llvm-svn: 116041
|
|
|
|
|
|
|
|
|
| |
reapply: reimplement the second half of the or/add optimization. We should now
with no changes. Turns out that one missing "Defs = [EFLAGS]" can upset things
a bit.
llvm-svn: 116040
|
|
|
|
|
|
|
|
| |
"Reimplement (part of) the or -> add optimization. Matching 'or' into 'add'"
With a critical fix: the add pseudos clobber EFLAGS.
llvm-svn: 116039
|
|
|
|
| |
llvm-svn: 116038
|
|
|
|
| |
llvm-svn: 116037
|
|
|
|
| |
llvm-svn: 116036
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a typo:
t.c:1:7: error: invalid '==' at end of declaration; did you mean '='?
int x == 0;
^~
=
Implements rdar://8488464.
llvm-svn: 116035
|
|
|
|
| |
llvm-svn: 116034
|
|
|
|
|
|
| |
'add'", which seems to have broken just about everything.
llvm-svn: 116033
|
|
|
|
|
|
| |
on r116007, which I am about to revert.
llvm-svn: 116032
|
|
|
|
|
|
| |
which depends on r116007, which I am about to revert.
llvm-svn: 116031
|
|
|
|
| |
llvm-svn: 116030
|
|
|
|
|
|
| |
to white-list conversions required by system headers. rdar://problem/8232669
llvm-svn: 116029
|
|
|
|
|
|
|
| |
struct for expressions is deallocated when the
ClangExpressionDeclMap is taken down.
llvm-svn: 116028
|
|
|
|
|
|
|
|
| |
as thumb1.
Fixes lencod.
llvm-svn: 116027
|
|
|
|
|
|
|
|
|
|
| |
only end up emitting LEA instead of OR. If we aren't able to promote
something into an LEA, we should never be emitting it as an ADD.
Add some testcases that we emit "or" in cases where we used to produce
an "add".
llvm-svn: 116026
|
|
|
|
|
|
| |
be removed does not exist for any reason.
llvm-svn: 116025
|
|
|
|
| |
llvm-svn: 116024
|
|
|
|
|
|
|
|
|
| |
list of characters.
Also uncomment the cleanup of "stdout.txt" file as part of the class cleanup routine even though
test_set_output_path() is failing right now.
llvm-svn: 116023
|
|
|
|
| |
llvm-svn: 116022
|
|
|
|
| |
llvm-svn: 116021
|
|
|
|
| |
llvm-svn: 116020
|
|
|
|
| |
llvm-svn: 116019
|
|
|
|
| |
llvm-svn: 116018
|
|
|
|
|
|
|
|
|
|
|
|
| |
if the address comes from a data section.
Fixed an issue that could occur when looking up a symbol that has a zero
byte size where no match would be returned even if there was an exact symbol
match.
Cleaned up the section dump output and added the section type into the output.
llvm-svn: 116017
|
|
|
|
|
|
| |
casing FsMOVAPDrr/FsMOVAPSrr.
llvm-svn: 116016
|
|
|
|
| |
llvm-svn: 116015
|
|
|
|
| |
llvm-svn: 116014
|
|
|
|
| |
llvm-svn: 116013
|
|
|
|
|
|
|
| |
one user. This code will be restructured soon and FormulaSorter
is getting in the way.
llvm-svn: 116012
|
|
|
|
| |
llvm-svn: 116011
|
|
|
|
|
|
| |
not just base registers.
llvm-svn: 116010
|
|
|
|
| |
llvm-svn: 116009
|
|
|
|
|
|
| |
the old use to the new one.
llvm-svn: 116008
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is general goodness because it allows ORs to be converted to LEA to avoid
inserting copies. However, this is bad because it makes the generated .s
file less obvious and gives valgrind heartburn (tons of false positives in
bitfield code).
While the general fix should be in valgrind, we can at least try to avoid
emitting ADD instructions that *don't* get promoted to LEA. This is more
work because it requires introducing pseudo instructions to represents
"add that knows the bits are disjoint", but hey, people really love valgrind.
This fixes this testcase:
https://bugs.kde.org/show_bug.cgi?id=242137#c20
the add r/i cases are coming next.
llvm-svn: 116007
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
connected components. These components should be allocated different virtual
registers because there is no reason for them to be allocated together.
Add the ConnectedVNInfoEqClasses class to calculate the connected components,
and move values to new LiveIntervals.
Use it from SplitKit::rewrite by creating new virtual registers for the
components.
llvm-svn: 116006
|
|
|
|
|
|
|
|
| |
This doesn't usually matter, because the other heuristics usually
succeed regardless, but it's good to keep the register use
bookkeeping consistent.
llvm-svn: 116005
|
|
|
|
| |
llvm-svn: 116004
|
|
|
|
| |
llvm-svn: 116003
|
|
|
|
| |
llvm-svn: 116002
|
|
|
|
|
|
| |
with the right types.
llvm-svn: 116001
|