| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This does two things:
It removes a call to abs() which may have "long long" parameter on Windows,
which is not necessarily available in C++03.
It also corrects the signedness of Amount, which was relying on
implementation-defined conversions previously.
Code was already tested (albeit in an implemnetation defined way) so no extra
tests.
llvm-svn: 174885
|
| |
|
|
|
|
|
|
| |
Previous code had a confusing comment which was mostly an implementation
detail. This condition corresponds to "lsb up to register width" and "width not
ridiculous".
llvm-svn: 174877
|
| |
|
|
|
|
|
|
|
| |
This gives a DiagnosticType to all AsmOperands in sight. This replaces all
"invalid operand" diagnostics with something more specific. The messages given
should still be sufficiently vague that they're not usually actively misleading
when LLVM guesses your instruction incorrectly.
llvm-svn: 174871
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MachineBasicBlock::SplitCriticalEdge().
This is currently a bit hairier than it needs to be, since depending on where the
split block resides the end ListEntry of the split block may be the end ListEntry
of the original block or a new entry. Some changes to the SlotIndexes updating
should make it possible to eliminate the two cases here.
This also isn't as optimized as it could be. In the future Liveinterval should
probably get a flag that indicates whether the LiveInterval is within a single
basic block. We could ignore all such intervals when splitting an edge.
llvm-svn: 174870
|
| |
|
|
|
|
| |
really trying to avoid piping SlotIndexes through to RemoveBranch() and friends.
llvm-svn: 174869
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This emits the attribute groups that are used by the functions. (It currently
doesn't print out return type or parameter attributes within attribute groups.)
Note: The functions still retrieve their attributes from the "old" bitcode
format (using the deprecated 'Raw()' method). This means that string attributes
within an attribute group will not show up during a disassembly. This will be
addressed in a future commit.
llvm-svn: 174867
|
| |
|
|
| |
llvm-svn: 174864
|
| |
|
|
|
|
|
|
|
| |
This reverts my commit 171047. Now that I've removed my misguided attempt to
support backend warnings, these diagnostics are only about inline assembly.
It would take quite a bit more work to generalize them properly, so I'm
just reverting this.
llvm-svn: 174860
|
| |
|
|
|
|
|
|
|
| |
This removes the last of the linear searches over ranges of std::multimap
iterators, giving a 7% speedup on the doduc.bc input from PR15222.
No functionality change intended.
llvm-svn: 174859
|
| |
|
|
|
|
|
|
|
| |
This is another cleanup aimed at eliminating linear searches
in ranges of std::multimap.
No functionality change intended.
llvm-svn: 174858
|
| |
|
|
|
|
|
|
|
|
| |
Profiling suggests that getInstructionTypes is performance-sensitive,
this cleans up some double-casting in that function in favor of
using dyn_cast.
No functionality change intended.
llvm-svn: 174857
|
| |
|
|
|
|
|
|
|
|
|
| |
By itself, this does not have much of an effect, but only because in the default
configuration the full cycle checks are used only for small problem sizes.
This is part of a general cleanup of uses of iteration over std::multimap
ranges only for the purpose of checking membership.
No functionality change intended.
llvm-svn: 174856
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
function is successfully handled by fast-isel. That's because function
arguments are *always* handled by SDISel. Introduce FastLowerArguments to
allow each target to provide hook to handle formal argument lowering.
As a proof-of-concept, add ARMFastIsel::FastLowerArguments to handle
functions with 4 or fewer scalar integer (i8, i16, or i32) arguments. It
completely eliminates the need for SDISel for trivial functions.
rdar://13163905
llvm-svn: 174855
|
| |
|
|
| |
llvm-svn: 174854
|
| |
|
|
|
|
|
|
| |
I have some uncommitted changes to the cast code that catch this sort of thing
at compile-time but I still need to do some other cleanup before I can enable
it.
llvm-svn: 174853
|
| |
|
|
| |
llvm-svn: 174852
|
| |
|
|
|
|
|
|
| |
support for updating SlotIndexes to MachineBasicBlock::SplitCriticalEdge(). This
calls renumberIndexes() every time; it should be improved to only renumber
locally.
llvm-svn: 174851
|
| |
|
|
|
|
| |
both LiveVariables and LiveIntervals.
llvm-svn: 174850
|
| |
|
|
|
|
|
|
|
| |
This reads the attribute groups. It currently doesn't do anything with them.
NOTE: In the commit to the bitcode writer, the format *may* change in the near
future. Which means that this code would also change.
llvm-svn: 174849
|
| |
|
|
| |
llvm-svn: 174848
|
| |
|
|
| |
llvm-svn: 174846
|
| |
|
|
|
|
|
|
|
| |
This is some initial code for emitting the attribute groups into the bitcode.
NOTE: This format *may* change! Do not rely upon the attribute groups' bitcode
not changing.
llvm-svn: 174845
|
| |
|
|
|
|
|
| |
Attribute groups are essentially all AttributeSets which are used by the
program. Enumerate them here.
llvm-svn: 174844
|
| |
|
|
| |
llvm-svn: 174839
|
| |
|
|
| |
llvm-svn: 174834
|
| |
|
|
| |
llvm-svn: 174833
|
| |
|
|
| |
llvm-svn: 174832
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
present, it currently verifies them with the MachineVerifier, and this passed
all of the test cases in 'make check' (when accounting for existing verifier
errors). There were some assertion failures in the two-address pass, but they
also happened on code without phis and look like they are caused by different
kill flags from LiveIntervals.
The only part that doesn't work is the critical edge splitting heuristic,
because there isn't currently an efficient way to update LiveIntervals after
splitting an edge. I'll probably start by implementing the slow fallback and
test that it works before tackling the fast path for single-block ranges. The
existing code that updates LiveVariables is fairly slow as it is.
There isn't a command-line option for enabling this; instead, just edit
PHIElimination.cpp to require LiveIntervals.
llvm-svn: 174831
|
| |
|
|
| |
llvm-svn: 174830
|
| |
|
|
|
|
| |
make sense anymore.
llvm-svn: 174829
|
| |
|
|
| |
llvm-svn: 174828
|
| |
|
|
| |
llvm-svn: 174824
|
| |
|
|
| |
llvm-svn: 174817
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The original syntax for the attribute groups was ambiguous. For example:
declare void @foo() #1
#0 = attributes { noinline }
The '#0' would be parsed as an attribute reference for '@foo' and not as a
top-level entity. In order to continue forward while waiting for a decision on
what the correct syntax is, I'm changing it to this instead:
declare void @foo() #1
attributes #0 = { noinline }
Repeat: This is TEMPORARY until we decide what the correct syntax should be.
llvm-svn: 174813
|
| |
|
|
|
|
| |
report_fatal_error)
llvm-svn: 174808
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bitcode writer would generate abbrev records saying that the abbrev should be
filled with fixed zero-bit bitfields (this happens in the .bc writer when
the number of types used in a module is exactly one, since log2(1) == 0).
In this case, just handle it as a literal zero. We can't "just fix" the writer
without breaking compatibility with existing bc files, so have the abbrev reader
do the substitution.
Strengthen the assert in read to reject reads of zero bits so we catch such
crimes in the future, and remove the special case designed to handle this.
llvm-svn: 174801
|
| |
|
|
|
|
|
|
|
| |
Handle chains in which the same offset is used for both loads and
stores to the same array.
Fixes rdar://11410078.
llvm-svn: 174789
|
| |
|
|
| |
llvm-svn: 174786
|
| |
|
|
|
|
| |
line table entries in assembly.
llvm-svn: 174785
|
| |
|
|
|
|
| |
This is part of the plan to delete LiveVariables.
llvm-svn: 174783
|
| |
|
|
|
|
| |
Enables raw_ostream I/O for BasicBlockPass.
llvm-svn: 174776
|
| |
|
|
|
|
|
|
| |
This uses a liveness algorithm that does not depend on data from the
LiveVariables analysis, it is the first step towards removing
LiveVariables completely.
llvm-svn: 174774
|
| |
|
|
|
|
|
| |
Also output a more useful error message.
NOTE: This is a candidate for the Mesa stable branch
llvm-svn: 174763
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This fixes a couple of bugs and incorrect assumptions,
in total four more piglit tests now pass.
v2: fix small bug in the dominator updating
Patch by: Christian König
Signed-off-by: Christian König <christian.koenig@amd.com>
llvm-svn: 174762
|
| |
|
|
|
|
|
|
|
|
| |
Patch by: Christian König
Intersecting loop handling was wrong.
Signed-off-by: Christian König <christian.koenig@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 174761
|
| |
|
|
|
|
|
|
|
|
| |
Otherwise we sometimes produce invalid code.
Patch by: Christian König
Signed-off-by: Christian König <christian.koenig@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 174760
|
| |
|
|
| |
llvm-svn: 174756
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
<rdar://problem/12867368>"
This reverts r171041. This was a nice idea that didn't work out well.
Clang warnings need to be associated with warning groups so that they can
be selectively disabled, promoted to errors, etc. This simplistic patch didn't
allow for that. Enhancing it to provide some way for the backend to specify
a front-end warning type seems like overkill for the few uses of this, at
least for now.
llvm-svn: 174748
|
| |
|
|
|
|
|
|
|
|
| |
same so we put in the comment field an indicator when we think we are
emitting the 16 bit version. For the direct object emitter, the difference is
important as well as for other passes which need an accurate count of
program size. There will be other similar putbacks to this for various
instructions.
llvm-svn: 174747
|
| |
|
|
|
|
|
|
|
|
|
| |
Previously, even when a pre-increment load or store was generated,
we often needed to keep a copy of the original base register for use
with other offsets. If all of these offsets are constants (including
the offset which was combined into the addressing mode), then this is
clearly unnecessary. This change adjusts these other offsets to use the
new incremented address.
llvm-svn: 174746
|