| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
types. Fixes PR7865.
llvm-svn: 110832
|
| |
|
|
| |
llvm-svn: 110831
|
| |
|
|
|
|
|
|
|
| |
platform. It's apparently "bl __muldf3" on linux, for example. Since that's
not what we're checking here, it's more robust to just force a triple. We
just wwant to check that the inline FP instructions are only generated
on cpus that have them."
llvm-svn: 110830
|
| |
|
|
| |
llvm-svn: 110829
|
| |
|
|
| |
llvm-svn: 110828
|
| |
|
|
|
|
| |
with their BSD equivalents if they are not available.
llvm-svn: 110827
|
| |
|
|
| |
llvm-svn: 110826
|
| |
|
|
|
|
| |
properly investigated.
llvm-svn: 110825
|
| |
|
|
| |
llvm-svn: 110824
|
| |
|
|
|
|
|
|
|
|
| |
clang_reparseTranslationUnit(), along with a function to retrieve the
default recommended reparsing options for a translation unit.
Also, add the CXTranslationUnit_CacheCompletionResults flag, which is
also currently unused.
llvm-svn: 110811
|
| |
|
|
| |
llvm-svn: 110810
|
| |
|
|
| |
llvm-svn: 110809
|
| |
|
|
|
|
| |
properly investigated.
llvm-svn: 110808
|
| |
|
|
| |
llvm-svn: 110807
|
| |
|
|
|
|
|
|
| |
that actually refer to the same underlying type, it is not an
ambiguity; add uniquing support based on the canonical type of type
declarations. Fixes <rdar://problem/8296180>.
llvm-svn: 110806
|
| |
|
|
| |
llvm-svn: 110805
|
| |
|
|
| |
llvm-svn: 110804
|
| |
|
|
|
|
|
|
| |
and create separate decl nodes for forward declarations and the
definition," which appears to be causing significant Objective-C
breakage.
llvm-svn: 110803
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
float t1(int argc) {
return (argc == 1123) ? 1.234f : 2.38213f;
}
We would generate truly awful code on ARM (those with a weak stomach should look
away):
_t1:
movw r1, #1123
movs r2, #1
movs r3, #0
cmp r0, r1
mov.w r0, #0
it eq
moveq r0, r2
movs r1, #4
cmp r0, #0
it ne
movne r3, r1
adr r0, #LCPI1_0
ldr r0, [r0, r3]
bx lr
The problem was that legalization was creating a cascade of SELECT_CC nodes, for
for the comparison of "argc == 1123" which was fed into a SELECT node for the ?:
statement which was itself converted to a SELECT_CC node. This is because the
ARM back-end doesn't have custom lowering for SELECT nodes, so it used the
default "Expand".
I added a fairly simple "LowerSELECT" to the ARM back-end. It takes care of this
testcase, but can obviously be expanded to include more cases.
Now we generate this, which looks optimal to me:
_t1:
movw r1, #1123
movs r2, #0
cmp r0, r1
adr r0, #LCPI0_0
it eq
moveq r2, #4
ldr r0, [r0, r2]
bx lr
.align 2
LCPI0_0:
.long 1075344593 @ float 2.382130e+00
.long 1067316150 @ float 1.234000e+00
llvm-svn: 110799
|
| |
|
|
|
|
| |
support it. e.g. cortex-m* processors.
llvm-svn: 110798
|
| |
|
|
| |
llvm-svn: 110797
|
| |
|
|
| |
llvm-svn: 110796
|
| |
|
|
| |
llvm-svn: 110795
|
| |
|
|
|
|
| |
mnemonic into a separate operand form.
llvm-svn: 110794
|
| |
|
|
| |
llvm-svn: 110793
|
| |
|
|
| |
llvm-svn: 110792
|
| |
|
|
|
|
| |
representation before matching.
llvm-svn: 110791
|
| |
|
|
| |
llvm-svn: 110790
|
| |
|
|
| |
llvm-svn: 110789
|
| |
|
|
| |
llvm-svn: 110788
|
| |
|
|
| |
llvm-svn: 110787
|
| |
|
|
|
|
| |
instructions: dmb, dsb, isb, msr, and mrs.
llvm-svn: 110786
|
| |
|
|
|
|
|
|
|
| |
memory and synchronization barrier dmb and dsb instructions.
- Change instruction names to something more sensible (matching name of actual
instructions).
- Added tests for memory barrier codegen.
llvm-svn: 110785
|
| |
|
|
| |
llvm-svn: 110784
|
| |
|
|
|
|
| |
implementations.
llvm-svn: 110783
|
| |
|
|
| |
llvm-svn: 110782
|
| |
|
|
|
|
|
| |
for some reason they have a very odd MCInst form where the operands overlap, but
I haven't dug in to find out why yet.
llvm-svn: 110781
|
| |
|
|
| |
llvm-svn: 110780
|
| |
|
|
|
|
| |
warning, for now.
llvm-svn: 110779
|
| |
|
|
| |
llvm-svn: 110778
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
expression parser. It is now possible to type:
(lldb) expr int $i = 5; $i + 1
(int) 6
(lldb) expr $i + 2
(int) 7
The skeleton for automatic result variables is
also implemented. The changes affect:
- the process, which now contains a
ClangPersistentVariables object that holds
persistent variables associated with it
- the expression parser, which now uses
the persistent variables during variable
lookup
- TaggedASTType, where I loaded some commonly
used tags into a header so that they are
interchangeable between different clients of
the class
llvm-svn: 110777
|
| |
|
|
| |
llvm-svn: 110776
|
| |
|
|
|
|
|
| |
- We don't recognize double or NEON register names yet -- we don't have the
infrastructure to generate the right clobbers for them.
llvm-svn: 110775
|
| |
|
|
| |
llvm-svn: 110774
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implicit conversion sequences. In particular, model the "standard
conversion" from a class to its own type (or a base type) directly as
a standard conversion in the normal path *without* trying to determine
if there is a valid copy constructor. This appears to match the intent
of C++ [over.best.ics]p6 and more closely matches GCC and EDG.
As part of this, model non-lvalue reference initialization via
user-defined conversion in overloading the same way we handle it in
InitializationSequence, separating the "general user-defined
conversion" and "conversion to compatible class type" cases.
The churn in the overload-call-copycon.cpp test case is because the
test case was originally wrong; it assumed that we should do more
checking for copy constructors that we actually should, which affected
overload resolution.
Fixes PR7055. Bootstrapped okay.
llvm-svn: 110773
|
| |
|
|
|
|
| |
__builtin_shufflevector for those
llvm-svn: 110772
|
| |
|
|
|
|
| |
__builtin_shufflevector with the appropriate arguments
llvm-svn: 110771
|
| |
|
|
| |
llvm-svn: 110770
|
| |
|
|
|
|
| |
__builtin_shufflevector for those
llvm-svn: 110769
|
| |
|
|
|
|
| |
__builtin_shufflevector with the appropriate arguments
llvm-svn: 110768
|