| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 252842
|
| |
|
|
| |
llvm-svn: 252841
|
| |
|
|
| |
llvm-svn: 252840
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Factor out code to query and modify the sign bit of a floatingpoint
value as an integer. This also works if none of the targets integer
types is big enough to hold all bits of the floatingpoint value.
- Legalize FABS(x) as FCOPYSIGN(x, 0.0) if FCOPYSIGN is available,
otherwise perform bit manipulation on the sign bit. The previous code
used "x >u 0 ? x : -x" which is incorrect for x being -0.0! It also
takes 34 instructions on ARM Cortex-M4. With this patch we only
require 5:
vldr d0, LCPI0_0
vmov r2, r3, d0
lsrs r2, r3, #31
bfi r1, r2, #31, #1
bx lr
(This could be further improved if the compiler would recognize that
r2, r3 is zero).
- Only lower FCOPYSIGN(x, y) = sign(x) ? -FABS(x) : FABS(x) if FABS is
available otherwise perform bit manipulation on the sign bit.
- Perform the sign(x) test by masking out the sign bit and comparing
with 0 rather than shifting the sign bit to the highest position and
testing for "<s 0". For x86 copysignl (on 80bit values) this gets us:
testl $32768, %eax
rather than:
shlq $48, %rax
sets %al
testb %al, %al
Differential Revision: http://reviews.llvm.org/D11172
llvm-svn: 252839
|
| |
|
|
|
|
| |
Aizatsky's idea)
llvm-svn: 252838
|
| |
|
|
|
|
|
|
|
| |
Calls involved in thread-local variable lookup save more registers
than normal calls.
rdar://problem/23073171
llvm-svn: 252837
|
| |
|
|
|
|
| |
Also don't create libclang dylib symlinks on darwin.
llvm-svn: 252836
|
| |
|
|
| |
llvm-svn: 252835
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
target features that the caller function doesn't provide. This matches
the existing backend failure to inline functions that don't have
matching target features - and diagnoses earlier in the case of
always_inline.
Fix up a few test cases that were, in fact, invalid if you tried
to generate code from the backend with the specified target features
and add a couple of tests to illustrate what's going on.
This should fix PR25246.
llvm-svn: 252834
|
| |
|
|
|
|
| |
more obvious that it's generic.
llvm-svn: 252833
|
| |
|
|
|
|
|
| |
checkBuiltinTargetFeatures to checkTargetFeatures and sink
the error handling into the function.
llvm-svn: 252832
|
| |
|
|
| |
llvm-svn: 252831
|
| |
|
|
| |
llvm-svn: 252830
|
| |
|
|
| |
llvm-svn: 252829
|
| |
|
|
| |
llvm-svn: 252828
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Diagnose when a function concept declaration has parameter(s)
Reviewers: rsmith, faisalv, aaron.ballman, hubert.reinterpretcast
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D14352
llvm-svn: 252827
|
| |
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14357
rdar://problem/21942589
llvm-svn: 252825
|
| |
|
|
|
|
|
| |
For really simple SEH catchpads, we tried to forward the invoke unwind
edge across the empty block.
llvm-svn: 252822
|
| |
|
|
|
|
| |
rdar://problem/9001553
llvm-svn: 252820
|
| |
|
|
|
|
|
| |
features for a particular function, then use it to clean up some
code.
llvm-svn: 252819
|
| |
|
|
|
|
|
|
|
|
|
| |
First create a list of candidates, then transform. This simplifies the code in
that you have don't have to worry that you may be using an invalidated
iterator.
Previously, each time we created a memset/memcpy we would reevaluate the entire
loop potentially resulting in lots of redundant work for large basic blocks.
llvm-svn: 252817
|
| |
|
|
| |
llvm-svn: 252815
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is about how we handle static member of a template. Before this commit,
we use internal linkage for the IR thread-local variable, which is inefficient.
With this commit, we will start to follow Itanium C++ ABI.
rdar://problem/23415206
Reviewed by John McCall.
llvm-svn: 252814
|
| |
|
|
|
|
|
| |
Check if a value that is referenced by a parameter is dead and do not
generate code for the parameter in such a case.
llvm-svn: 252813
|
| |
|
|
| |
llvm-svn: 252812
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When working with tokens, it is often the case that one has instructions
which consume a token and produce a new token. Currently, we have no
mechanism to represent an initial token state.
Instead, we can create a notional "empty token" by inventing a new
constant which captures the semantics we would like. This new constant
is called ConstantTokenNone and is written textually as "token none".
Differential Revision: http://reviews.llvm.org/D14581
llvm-svn: 252811
|
| |
|
|
|
|
| |
This allows TEST_SUITE variables to be passed from the top-level CMake into the external project.
llvm-svn: 252810
|
| |
|
|
|
|
| |
This allows COMPILER_RT_* variables to be passed from the top-level CMake into the external project when LLVM_BUILD_EXTERNAL_COMPILER_RT=On.
llvm-svn: 252809
|
| |
|
|
|
|
|
|
| |
of the compiler command line
Setting CMAKE_*_FLAGS isn't sufficient here because CMAKE_*_FLAGS_${CMAKE_BUILD_TYPE} can override the flags, and there is no way to safely clear that because it is a cached variable (<sarcasm> YAY! </sarcasm>).
llvm-svn: 252807
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change introduces the notion of "deoptimization" operand bundles.
LLVM can recognize and optimize these in more precise ways than it can a
generic "unknown" operand bundles.
The current form of this special recognition / optimization is an enum
entry in LLVMContext, a LangRef blurb and a verifier rule. Over time we
will teach LLVM to do more aggressive optimization around deoptimization
operand bundles, exploiting known facts about kinds of state
deoptimization operand bundles are allowed to track.
Reviewers: reames, majnemer, chandlerc, dexonsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14551
llvm-svn: 252806
|
| |
|
|
| |
llvm-svn: 252805
|
| |
|
|
|
|
|
|
| |
Summary: MSVC gets confused.
Differential Revision: http://reviews.llvm.org/D14585
llvm-svn: 252804
|
| |
|
|
|
|
|
|
| |
This had been relegated to a simple forwarding function, so just
delete it in preparation of migrating all of these functions out
of python-wrapper.swig.
llvm-svn: 252803
|
| |
|
|
|
|
|
|
|
|
|
| |
First batch of sancov.py rewrite in c++.
Supports "-print" and "-coveredfns" commands.
Followup to http://reviews.llvm.org/D14356 in a better location.
Differential Revision: http://reviews.llvm.org/D14579
llvm-svn: 252801
|
| |
|
|
| |
llvm-svn: 252800
|
| |
|
|
| |
llvm-svn: 252799
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D13671
llvm-svn: 252798
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Cwd::abs_path has a somewhat tricky semantics: if it's operand directory does not exist,
it'll return undefined (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=257568).
This may cause scan-build to silently ignore output directory (specified with -o) and
use /tmp instead of trying to create directory. This tiny patch fixes the problem.
A patch by Yury Gribov!
Differential Revision: http://reviews.llvm.org/D14535
llvm-svn: 252797
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a step towards consolidating some of the information regarding
attributes in a single place.
This patch moves the enum attributes in Attributes.h to the table-gen
file. Additionally, it adds definitions of target independent string
attributes that will be used in follow-up commits by the inliner to
check attribute compatibility.
rdar://problem/19836465
llvm-svn: 252796
|
| |
|
|
|
|
| |
I got this the other way around in 252750. Thank you Johannes for noticing.
llvm-svn: 252795
|
| |
|
|
|
|
|
|
|
|
| |
Error blocks may contain arbitrary instructions, among them some which we can
not modeled correctly. As we do not generate ScopStmts for error blocks anyhow
there is no point in trying to generate access functions for them.
This fixes llvm.org/PR25494
llvm-svn: 252794
|
| |
|
|
| |
llvm-svn: 252793
|
| |
|
|
| |
llvm-svn: 252792
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a follow-up from the previous discussion on the thread:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151019/307763.html
The LibLTO lto_get_error_message() API reads error messages from a std::string
sLastErrorString. Instead of passing this string around as an argument, this
patch creates a diagnostic handler and then sends this handler to the
constructor of LTOCodeGenerator.
Differential Revision: http://reviews.llvm.org/D14313
llvm-svn: 252791
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This adds support for:
* Uniquing CIEs
* Dropping FDEs that point to dropped sections
It drops 657 488 bytes from the .eh_frame of a Release+Asserts clang.
The link time impact is smallish. Linking clang with a Release+Asserts
lld goes from 0.488064805 seconds to 0.504763060 seconds (1.034 X slower).
llvm-svn: 252790
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Don't fold
(zext (and (load x), cst)) -> (and (zextload x), (zext cst))
if
(and (load x) cst)
will match as a zextload already and has additional users.
For example, the following IR:
%load = load i32, i32* %ptr, align 8
%load16 = and i32 %load, 65535
%load64 = zext i32 %load16 to i64
store i32 %load16, i32* %dst1, align 4
store i64 %load64, i64* %dst2, align 8
used to produce the following aarch64 code:
ldr w8, [x0]
and w9, w8, #0xffff
and x8, x8, #0xffff
str w9, [x1]
str x8, [x2]
but with this change produces the following aarch64 code:
ldrh w8, [x0]
str w8, [x1]
str x8, [x2]
Reviewers: resistor, mcrosier
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14340
llvm-svn: 252789
|
| |
|
|
|
|
|
|
|
| |
This only begins to port python-wrapper.swig over. Since this
code can be pretty hairy, I plan to do this incrementally over a
series of patches, each time removing or converting more code
over to the PythonDataObjects code.
llvm-svn: 252788
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds PythonTuple and PythonCallable classes to PythonDataObjects.
Additionally, unit tests are provided that exercise this functionality,
including invoking manipulating and checking for validity of tuples,
and invoking and checking for validity of callables using a variety
of different syntaxes.
The goal here is to eventually replace the code in python-wrapper.swig
that directly uses the Python C API to deal with callables and name
resolution with this code that can be more easily tested and debugged.
llvm-svn: 252787
|
| |
|
|
| |
llvm-svn: 252786
|
| |
|
|
|
|
|
| |
Expected diagnostics have been expanded to vary by C++ dialect.
RUN line has also been expanded to: default, C++98/03 and C++11.
llvm-svn: 252785
|