| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
The return type of a thunk is meaningless, we just want the arguments
and return value to be forwarded.
llvm-svn: 226708
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This attribute implies indicates that the function musttail calls
another function and returns whatever it returns. The return type of the
thunk is meaningless, as the thunk can dynamically call different
functions with different return types. So long as the callers bitcast
the thunk with the correct type, behavior is well defined.
This attribute was necessary to fix PR20944, where the indirect call
combiner noticed that the thunk returned void and replaced the results
of the indirect call instruction with undef.
Over-the-shoulder reviewed by David Majnemer.
llvm-svn: 226707
|
| |
|
|
|
|
|
|
| |
I believe the original code is valid, but on Windows it failed with an
assertion error saying "Expression: vector iterator is not decrementable."
Don't use rbegin and rend to workaround that error.
llvm-svn: 226706
|
| |
|
|
|
|
| |
Patch to provide shuffle decodes and asm comments for the SSE3/AVX1 movddup double duplication instructions.
llvm-svn: 226705
|
| |
|
|
|
|
|
|
|
|
| |
specify compile and execute flags for regular expressions. Also enable better regular expressions if they are available by check if the REG_ENHANCED is available and using it if it is.
Since REG_ENHANCED is available on MacOSX, this allow the use of \d (digits) \b (word boundaries) and much more without affecting other systems.
<rdar://problem/12082562>
llvm-svn: 226704
|
| |
|
|
| |
llvm-svn: 226703
|
| |
|
|
|
|
|
|
|
|
|
| |
* Works better for shared libraries (sets PRIVATE instead of INTERFACE)
* Fixes http://llvm.org/bugs/show_bug.cgi?id=22269
* Also, use build-target names instead of component names
Differential Revision: http://reviews.llvm.org/D7074
From: Greg Fitzgerald <garious@gmail.com>
llvm-svn: 226702
|
| |
|
|
| |
llvm-svn: 226701
|
| |
|
|
| |
llvm-svn: 226698
|
| |
|
|
|
|
|
|
|
| |
Fix isTriviallyCopyableType for arrays. An array of type T is trivially copyable
if T is trivially copyable.
Patch by Agustín Bergé!
llvm-svn: 226696
|
| |
|
|
|
|
| |
Now quotes dsymutil path, required when running tests where the toolchain is in a path that contains a space
llvm-svn: 226695
|
| |
|
|
| |
llvm-svn: 226694
|
| |
|
|
|
|
|
|
| |
yaml2obj command ran by this test took more than 15 seconds to finish
because of extremely large .bss section. Other tests only takes 3 seconds.
Reduce the size to make it faster.
llvm-svn: 226693
|
| |
|
|
|
|
| |
http://reviews.llvm.org/D7101
llvm-svn: 226691
|
| |
|
|
|
|
|
|
|
|
|
| |
This cleans up code and is more in line with the general philosophy of
modifying LiveIntervals through LiveIntervalAnalysis instead of changing
them directly.
This also fixes a case where SplitEditor::removeBackCopies() would miss
the subregister ranges.
llvm-svn: 226690
|
| |
|
|
| |
llvm-svn: 226689
|
| |
|
|
|
|
|
| |
What we are trying to do here is to skip object files in group if
group is repeated. This code is simpler than before.
llvm-svn: 226688
|
| |
|
|
|
|
|
|
| |
This cleans up code and is more in line with the general philosophy of
modifying LiveIntervals through LiveIntervalAnalysis instead of changing
them directly.
llvm-svn: 226687
|
| |
|
|
| |
llvm-svn: 226686
|
| |
|
|
| |
llvm-svn: 226685
|
| |
|
|
|
|
|
|
| |
verification. Tested via a unit test.
Follow-up to r226616.
llvm-svn: 226684
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r226679. For some reason it was
not generating the same behavior as manually specifying
the include dir, library path, and exe path, and it was
causing the test suite to fail to run.
llvm-svn: 226683
|
| |
|
|
|
|
|
|
|
| |
This fixes it for SI. It also removes the pattern
used previously for Evergreen for f32. I'm not sure
if the the new R600 output is better or not, but it uses
1 fewer instructions if BFI is available.
llvm-svn: 226682
|
| |
|
|
|
|
| |
patterns.
llvm-svn: 226681
|
| |
|
|
| |
llvm-svn: 226680
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
CMake FindPythonLibs will look for multiple versions of Python
including both debug and release, and build up a list such as
(debug <debugpath> optimized <optimizedpath>). This confuses
the logic we have in CMake to copy the correct python dll to
the output directory so that it need not be in your system's PATH.
To alleviate this, we manually split this list and extract out
the debug and release versions of the python library, and copy
only the correct one to the output directory.
llvm-svn: 226679
|
| |
|
|
|
|
| |
Discovered by the awesome test case and ASAN.
llvm-svn: 226678
|
| |
|
|
| |
llvm-svn: 226677
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that we can fully specify extload legality, we can declare them
legal for the PMOVSX/PMOVZX instructions. This for instance enables
a DAGCombine to fire on code such as
(and (<zextload-equivalent> ...), <redundant mask>)
to turn it into:
(zextload ...)
as seen in the testcase changes.
There is one regression, in widen_load-2.ll: we're no longer able
to do store-to-load forwarding with illegal extload memory types.
This will be addressed separately.
Differential Revision: http://reviews.llvm.org/D6533
llvm-svn: 226676
|
| |
|
|
| |
llvm-svn: 226675
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes 2 issues in origins arising from realloc() calls:
* In the in-place grow case origin for the new memory is not set at all.
* In the copy-realloc case __msan_memcpy is used, which unwinds stack from
inside the MSan runtime. This does not generally work (as we may be built
w/o frame pointers), and produces "bad" stack trace anyway, with several
uninteresting (internal) frames on top.
This change also makes realloc() honor "zeroise" and "poison_in_malloc" flags.
See https://code.google.com/p/memory-sanitizer/issues/detail?id=73.
llvm-svn: 226674
|
| |
|
|
|
|
|
| |
Move a bunch of functions to a new source file and rename some of them for
consistency. No functional changes.
llvm-svn: 226673
|
| |
|
|
| |
llvm-svn: 226672
|
| |
|
|
| |
llvm-svn: 226671
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The improved completion in call context now works with:
- Functions.
- Member functions.
- Constructors.
- New expressions.
- Function call expressions.
- Template variants of the previous.
There are still rough edges to be fixed:
- Provide support for optional parameters. (fix known)
- Provide support for member initializers. (fix known)
- Provide support for variadic template functions. (fix unknown)
- Others?
llvm-svn: 226670
|
| |
|
|
| |
llvm-svn: 226669
|
| |
|
|
|
|
| |
Should fix the test in -Asserts builds.
llvm-svn: 226668
|
| |
|
|
| |
llvm-svn: 226667
|
| |
|
|
| |
llvm-svn: 226666
|
| |
|
|
|
|
|
|
| |
It hadn't gone through review yet, but was still on my local copy.
This reverts commit r226663
llvm-svn: 226665
|
| |
|
|
|
|
|
|
|
| |
AAPCS64 says that it's up to the platform to specify whether x18 is
reserved, and a first step on that way is to add a flag controlling
it.
From: Andrew Turner <andrew@fubar.geek.nz>
llvm-svn: 226664
|
| |
|
|
| |
llvm-svn: 226663
|
| |
|
|
| |
llvm-svn: 226662
|
| |
|
|
|
|
| |
in x32 mode.
llvm-svn: 226661
|
| |
|
|
|
|
|
| |
When opt is compiled with AddressSanitizer it takes more than 30 seconds
to unroll the loop in unroll_1M().
llvm-svn: 226660
|
| |
|
|
|
|
|
|
| |
Even sleep(1) lead to episodical flakes on some machines.
Use an invisible by tsan barrier to enforce required execution order instead.
This makes the tests deterministic and faster.
llvm-svn: 226659
|
| |
|
|
|
|
|
|
|
| |
Previously we always stored 4 bytes of origin at the destination address
even for 8-byte (and longer) stores.
This should fix rare missing, or incorrect, origin stacks in MSan reports.
llvm-svn: 226658
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement microMIPS 16-bit unconditional branch instruction B.
Implemented 16-bit microMIPS unconditional instruction has real name B16, and
B is an alias which expands to either B16 or BEQ according to the rules:
b 256 --> b16 256 # R_MICROMIPS_PC10_S1
b 12256 --> beq $zero, $zero, 12256 # R_MICROMIPS_PC16_S1
b label --> beq $zero, $zero, label # R_MICROMIPS_PC16_S1
Differential Revision: http://reviews.llvm.org/D3514
llvm-svn: 226657
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D6582
llvm-svn: 226656
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because in its primary function pass the combiner is run repeatedly over
the same function until doing so produces no changes, it is essentially
to not re-allocate the worklist. However, as a utility, the more common
pattern would be to put a limited set of instructions in the worklist
rather than the entire function body. That is also the more likely
pattern when used by the new pass manager.
The result is a very light weight combiner that does the visiting with
a separable worklist. This can then be wrapped up in a helper function
for users that want a combiner utility, or as I have here it can be
wrapped up in a pass which manages the iterations used when combining an
entire function's instructions.
Hopefully this removes some of the worst of the interface warts that
became apparant with the last patch here. However, there is clearly more
work. I've again left some FIXMEs for the most egregious. The ones that
stick out to me are the exposure of the worklist and IR builder as
public members, and the use of pointers rather than references. However,
fixing these is likely to be much more mechanical and less interesting
so I didn't want to touch them in this patch.
llvm-svn: 226655
|