| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
These transformations obviously won't work for indexed (pre/post-inc) loads and
stores. In practice, I'm not sure there is any benefit to enabling them for
indexed nodes because other transformations that these might enable likely also
won't handle indexed nodes.
I don't have an in-tree test case that hits this problem, but an upcoming bug
fix will make it much more likely.
llvm-svn: 200023
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This pass identifies expensive constants to hoist and coalesces them to
better prepare it for SelectionDAG-based code generation. This works around the
limitations of the basic-block-at-a-time approach.
First it scans all instructions for integer constants and calculates its
cost. If the constant can be folded into the instruction (the cost is
TCC_Free) or the cost is just a simple operation (TCC_BASIC), then we don't
consider it expensive and leave it alone. This is the default behavior and
the default implementation of getIntImmCost will always return TCC_Free.
If the cost is more than TCC_BASIC, then the integer constant can't be folded
into the instruction and it might be beneficial to hoist the constant.
Similar constants are coalesced to reduce register pressure and
materialization code.
When a constant is hoisted, it is also hidden behind a bitcast to force it to
be live-out of the basic block. Otherwise the constant would be just
duplicated and each basic block would have its own copy in the SelectionDAG.
The SelectionDAG recognizes such constants as opaque and doesn't perform
certain transformations on them, which would create a new expensive constant.
This optimization is only applied to integer constants in instructions and
simple (this means not nested) constant cast experessions. For example:
%0 = load i64* inttoptr (i64 big_constant to i64*)
Reviewed by Eric
llvm-svn: 200022
|
|
|
|
| |
llvm-svn: 200021
|
|
|
|
| |
llvm-svn: 200020
|
|
|
|
| |
llvm-svn: 200019
|
|
|
|
|
|
|
| |
Sweep the codebase for common typos. Includes some changes to visible function
names that were misspelt.
llvm-svn: 200018
|
|
|
|
|
|
|
|
|
| |
This enables IO error reports in both the child and server processes.
The scheme still isn't entirely satisfactory and output is jumbled but it beats
having no output at all. This will hopefully unblock ARM support (PR18057).
llvm-svn: 200017
|
|
|
|
| |
llvm-svn: 200016
|
|
|
|
|
|
| |
otherwise races are suppressed due to "same stack"
llvm-svn: 200015
|
|
|
|
| |
llvm-svn: 200014
|
|
|
|
|
|
|
| |
r200011 remove the special codepaths in MC for inline asm, so we can now test
all the logic with just llc + llvm-mc.
llvm-svn: 200013
|
|
|
|
| |
llvm-svn: 200012
|
|
|
|
|
|
|
|
| |
There is no inline asm in a .s file. Therefore, there should be no logic to
handle it in the streamer. Inline asm only exists in bitcode files, so the
logic can live in the (long misnamed) AsmPrinter class.
llvm-svn: 200011
|
|
|
|
|
|
| |
__is_constructible --> __libcpp_is_constructible, __is_nothrow_constructible --> __libcpp_is_nothrow_constructible, and __is_nothrow_assignable --> __libcpp_is_nothrow_assignable. No functionality change.
llvm-svn: 200010
|
|
|
|
| |
llvm-svn: 200009
|
|
|
|
|
|
| |
This should now match the equivalent gcc option.
llvm-svn: 200008
|
|
|
|
| |
llvm-svn: 200007
|
|
|
|
| |
llvm-svn: 200006
|
|
|
|
| |
llvm-svn: 200005
|
|
|
|
|
|
| |
UnknownAttributes and IgnoredAttributes.
llvm-svn: 200004
|
|
|
|
|
|
|
| |
We left ignore_interceptors>0 when calling signal handlers
from blocking interceptors, this leads to missing synchronization in such signal handler.
llvm-svn: 200003
|
|
|
|
| |
llvm-svn: 200002
|
|
|
|
|
|
|
|
|
|
| |
test-and-subtract loop and compute the initial block as address,
shaving off between 5% and 10% on Cortex A9 and 30%+ a Raspberry Pi.
Code written by Matt Thomas and Joerg Sonnenberger.
Differential Revision: http://llvm-reviews.chandlerc.com/D2595
llvm-svn: 200001
|
|
|
|
| |
llvm-svn: 200000
|
|
|
|
|
|
|
| |
+ ClangAttrVisitor
+ ClangCommentCommandList
llvm-svn: 199999
|
|
|
|
| |
llvm-svn: 199998
|
|
|
|
|
|
|
| |
This is the second msan failure where UserDefinedConversion does not initialize
its `Before` member as identity conversion.
llvm-svn: 199997
|
|
|
|
| |
llvm-svn: 199996
|
|
|
|
| |
llvm-svn: 199995
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently correct programs can deadlock after fork, because atomic operations and async-signal-safe calls are not async-signal-safe under tsan.
With this change:
- if a single-threaded program forks, the child continues running with verification enabled (the tsan background thread is recreated as well)
- if a multi-threaded program forks, then the child runs with verification disabled (memory accesses, atomic operations and interceptors are disabled); it's expected that it will exec soon anyway
- if the child tries to create more threads after multi-threaded fork, the program aborts with error message
- die_after_fork flag is added that allows to continue running, but all bets are off
http://llvm-reviews.chandlerc.com/D2614
llvm-svn: 199993
|
|
|
|
|
|
| |
and remove duplicate declarations.
llvm-svn: 199992
|
|
|
|
|
|
|
|
| |
in order to fix the cygwin/mingw bots.
This reverts commit r199990.
llvm-svn: 199991
|
|
|
|
|
|
|
|
| |
compile unit. Make these relocations on the platforms that need
relocations and add a routine to ensure that we don't put the
addresses in an offset table for split dwarf.
llvm-svn: 199990
|
|
|
|
|
|
| |
in Sema::CheckReturnValExpr. Add the missing handling of value-dependent expressions for returns_nonnull.
llvm-svn: 199989
|
|
|
|
|
|
|
|
| |
MSAN detected a path that leaves DeprecatedStringLiteralToCharPtr uninitialized.
UserDefinedConversionSequence::First is a StandardConversionSequence that must
be initialized with setAsIdentityConversion.
llvm-svn: 199988
|
|
|
|
| |
llvm-svn: 199987
|
|
|
|
| |
llvm-svn: 199986
|
|
|
|
| |
llvm-svn: 199985
|
|
|
|
| |
llvm-svn: 199984
|
|
|
|
| |
llvm-svn: 199983
|
|
|
|
|
|
|
|
| |
This was done when we were not able to parse lambdas to handle some
edge cases for block formatting different in return statements, but is
not necessary any more.
llvm-svn: 199982
|
|
|
|
|
|
| |
existing bug with dtls support in msan
llvm-svn: 199980
|
|
|
|
|
|
| |
on this platform
llvm-svn: 199979
|
|
|
|
| |
llvm-svn: 199978
|
|
|
|
|
|
| |
With this change, all supported tests in test/ExecutionEngine pass in sparcv9.
llvm-svn: 199977
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit teaches the X86 backend to create the same X86 instructions when it
lowers an sadd/ssub with overflow intrinsic and a conditional branch that uses
that overflow result. This allows SelectionDAG to recognize and remove one of
the redundant operations.
This fixes <rdar://problem/15874016> and <rdar://problem/15661073>.
Reviewed by Nadav
llvm-svn: 199976
|
|
|
|
|
|
| |
These all use the compare-and-swap CASA/CASXA instructions.
llvm-svn: 199975
|
|
|
|
|
|
| |
Add test cases to check parsing of v9 double registers and their aliased quad registers.
llvm-svn: 199974
|
|
|
|
|
|
|
|
|
|
| |
Add new virtual virtual function `isRelaOutputFormat` to the
`ELFLinkingContext` class. Call this function everywhere we need to
select a relocation table format.
Patch reviewed by Shankar Easwaran and Rui Ueyama.
llvm-svn: 199973
|
|
|
|
| |
llvm-svn: 199972
|