| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
Canonicalize access to function attributes to use the simpler API.
getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
=> getFnAttribute(Kind)
getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
=> hasFnAttribute(Kind)
llvm-svn: 229192
|
| |
|
|
| |
llvm-svn: 229191
|
| |
|
|
|
|
|
|
|
|
| |
If we know that the sign bit of a value being sign extended is zero, we can use a zero extension instead. This is motivated by the fact that zero extensions are generally cheaper on x86 (and most other architectures?). We already apply a similar transform in DAGCombine, this just extends that to the IR level.
This comes up when we eagerly canonicalize gep indices to the width of a machine register (i64 on x86_64). To do so, we insert sign extensions (sext) to promote smaller types.
Differential Revision: http://reviews.llvm.org/D7255
llvm-svn: 229189
|
| |
|
|
|
|
| |
This is based on the discussions on: [LLVMdev] [RFC] Raising LLVM minimum required MSVC version to 2013 for trunk
llvm-svn: 229185
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this commit, llvm-dsymutil learns how to choose which DIEs
it will link in the final output and which ones it won't. This
is based on the 'valid relocation' information that has been
built in the previous commits.
The test only tests that we choose the right 'root DIEs'. The
selection algorithm (and especially the part that walk the
dependencies of a root DIE) lacks a bit test coverage. This
will be much easier to cover when we output actual Dwarf and
thus can use llvm-dwarfdump to verify the structure of the
emitted DIE trees. I'll add more tests then.
llvm-svn: 229183
|
| |
|
|
| |
llvm-svn: 229182
|
| |
|
|
|
|
|
| |
To be used in subsequent commits (separated to keep only core logic
in the follow-ups).
llvm-svn: 229181
|
| |
|
|
| |
llvm-svn: 229180
|
| |
|
|
|
|
|
| |
To be used in dsymutil (or any other client that wants to take
advantage of the fact that DIEs are stored in a vector).
llvm-svn: 229179
|
| |
|
|
|
|
|
|
| |
These 'valid relocations' in the debug_info section will be how
dsymutil identifies the DIEs it needs to keep in the linked debug
information.
llvm-svn: 229178
|
| |
|
|
|
|
|
| |
It turns out the debug map will be interogated both by name and
by object file address. Add the latter capability.
llvm-svn: 229177
|
| |
|
|
| |
llvm-svn: 229176
|
| |
|
|
|
|
|
|
|
|
| |
Two minor tweaks I noticed when reading through the code:
- No need to recompute begin() on every iteration. We're not modifying the instructions in this loop.
- We can ignore PHINodes and Dbg intrinsics. The current code does this anyways, but it will spend slightly more time doing so and will count towards the limit of instructions in the block. It seems really silly to give up due the presence of PHIs...
Differential Revision: http://reviews.llvm.org/D7624
llvm-svn: 229175
|
| |
|
|
|
|
| |
class.
llvm-svn: 229172
|
| |
|
|
| |
llvm-svn: 229171
|
| |
|
|
| |
llvm-svn: 229170
|
| |
|
|
|
|
| |
do so and fix up the calls.
llvm-svn: 229169
|
| |
|
|
|
|
| |
enough we can use it to initialize frame lowering.
llvm-svn: 229168
|
| |
|
|
|
|
| |
Clean up a subtarget function that has it passed in while we're at it.
llvm-svn: 229164
|
| |
|
|
| |
llvm-svn: 229163
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Discovered by Halide users who had C++ code like this:
Triple.setArch(Triple::x86);
Triple.setOS(Triple::Windows);
Triple.setObjectFormat(Triple::ELF);
Triple.setEnvironment(Triple::MSVC);
This would produce the stringified triple of x86-windows-msvc, instead
of the x86-windows-msvc-elf string needed to run MCJIT.
With this change, they retain the -elf suffix.
llvm-svn: 229160
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This takes the preposterous number of patterns in this section
that were last added to in r219033 down to just plain obnoxious.
With a little more work, we might get this down to just comical.
I've added more test cases to the existing file that checks these
patterns, but it seems that some of these patterns simply don't
exist with today's shuffle lowering.
llvm-svn: 229158
|
| |
|
|
|
|
|
|
| |
llc would hang trying to write output to a full pipe that FileCheck
wasn't reading. FileCheck wasn't reading from stdin because it needs a
file as a positional argument.
llvm-svn: 229157
|
| |
|
|
|
|
|
|
|
|
|
|
| |
because I didn't have binutils set up properly to build the gold plugin.
Fixes PR22581 which was filed because this broke the build for folks
relying on the plugin. Very sorry! =]
I've gotten the plugin stuff building now as well so it shouldn't keep
happening.
llvm-svn: 229156
|
| |
|
|
| |
llvm-svn: 229155
|
| |
|
|
|
|
| |
header.
llvm-svn: 229154
|
| |
|
|
|
|
| |
these are expected to fix any 64->32 bit real truncation issues.
llvm-svn: 229153
|
| |
|
|
| |
llvm-svn: 229152
|
| |
|
|
| |
llvm-svn: 229151
|
| |
|
|
| |
llvm-svn: 229150
|
| |
|
|
|
|
|
|
|
|
|
| |
differing types.
Original commit message:
SmallVector: Resolve a long-standing fixme by using the existing unitialized_copy dispatch.
This makes append() use memcpy for trivially copyable types.
llvm-svn: 229149
|
| |
|
|
| |
llvm-svn: 229144
|
| |
|
|
|
|
|
|
| |
compensate for slow machines, and the growing number of tests.
Prodded by: Hans Wennborg
llvm-svn: 229143
|
| |
|
|
|
|
|
|
| |
unitialized_copy dispatch.
This makes append() use memcpy for trivially copyable types.
llvm-svn: 229142
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7618
llvm-svn: 229140
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7615
llvm-svn: 229138
|
| |
|
|
| |
llvm-svn: 229136
|
| |
|
|
|
|
|
| |
This requires considering the size of the operand when
checking immediate legality.
llvm-svn: 229135
|
| |
|
|
|
|
| |
This prevents these from failing in a later commit.
llvm-svn: 229134
|
| |
|
|
| |
llvm-svn: 229130
|
| |
|
|
|
|
|
|
|
| |
This correctly prints the function pointers, and also prints
function signatures for symbols as opposed to just types. So
actual functions in your program will now be printed with full
name and signature, as opposed to just name as before.
llvm-svn: 229129
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch adds functionality in MIPS delay slot filler such as if delay slot
filler have to put NOP instruction into the delay slot of microMIPS JR
instruction, then instead of emitting NOP this instruction is replaced by
compact jump instruction JRC.
Differential Revision: http://reviews.llvm.org/D7522
llvm-svn: 229128
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes a problem I accidentally introduced in an instruction combine
on select instructions added at r227197. That revision taught the instruction
combiner how to fold a cttz/ctlz followed by a icmp plus select into a single
cttz/ctlz with flag 'is_zero_undef' cleared.
However, the new rule added at r227197 would have produced wrong results in the
case where a cttz/ctlz with flag 'is_zero_undef' cleared was follwed by a
zero-extend or truncate. In that case, the folded instruction would have
been inserted in a wrong location thus leaving the CFG in an inconsistent
state.
This patch fixes the problem and add two reproducible test cases to
existing test 'InstCombine/select-cmp-cttz-ctlz.ll'.
llvm-svn: 229124
|
| |
|
|
|
|
|
|
| |
Resolves PR21569.
Patch by: Stephen Kelly
llvm-svn: 229122
|
| |
|
|
|
|
| |
Patch by: Stephen Kelly
llvm-svn: 229121
|
| |
|
|
|
|
| |
Also, change the run lines to use -allow-empty.
llvm-svn: 229118
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
speculate calls to cttz/ctlz.
SimplifyCFG now knows how to speculate calls to intrinsic cttz/ctlz that are
'cheap' for the target. Therefore, some of the logic in CodeGenPrepare
that was originally added at revision 224899 can now be removed.
This patch is basically a no functional change. It removes the duplicated
logic in CodeGenPrepare and converts all the existing target specific tests
for cttz/ctlz into SimplifyCFG tests.
Differential Revision: http://reviews.llvm.org/D7608
llvm-svn: 229105
|
| |
|
|
|
|
|
|
|
|
| |
solution
Although such nodes are allocatable, the cost of spilling may be less than
allocating to register, so spilling the node may provide a better solution.
The assert does not account for this case, so remove it for now.
llvm-svn: 229103
|
| |
|
|
|
|
| |
Add extra test that was accidentally not staged.
llvm-svn: 229101
|
| |
|
|
|
|
|
|
| |
Up the phi node folding threshold from a cheap "1" to a meagre "2".
Update tests for extra added selects and slight code churn.
llvm-svn: 229099
|