| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 45314
|
| |
|
|
| |
llvm-svn: 45313
|
| |
|
|
| |
llvm-svn: 45312
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
us to compile:
#include <math.h>
int t1(double d) { return signbit(d); }
into:
_t1:
movd %xmm0, %rax
shrq $63, %rax
ret
instead of:
_t1:
movd %xmm0, %rax
shrq $32, %rax
shrl $31, %eax
ret
on x86-64.
llvm-svn: 45311
|
| |
|
|
| |
llvm-svn: 45310
|
| |
|
|
|
|
| |
careful when inserting copies.
llvm-svn: 45309
|
| |
|
|
| |
llvm-svn: 45307
|
| |
|
|
|
|
|
| |
not merge current bb and succ even if bb's terminator is
unconditional branch to succ.
llvm-svn: 45305
|
| |
|
|
| |
llvm-svn: 45304
|
| |
|
|
| |
llvm-svn: 45300
|
| |
|
|
|
|
| |
of this patch is the last line).
llvm-svn: 45289
|
| |
|
|
|
|
|
|
|
|
| |
as on functions. Make it verify invokes and not just
ordinary calls. As a (desired) side-effect, it is no
longer legal to have call attributes on arguments that
are being passed to the varargs part of a varargs
function (llvm-as drops them on the floor anyway).
llvm-svn: 45286
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
return attributes on the floor. In the case of a call
to a varargs function where the varargs arguments are
being removed, any call attributes on those arguments
need to be dropped. I didn't do this because I plan to
make it illegal to have such attributes (see next patch).
With this change, compiling the gcc filter2 eh test at -O0
and then running opt -std-compile-opts on it results in
a correctly working program (compiling at -O1 or higher
results in the test failing due to a problem with how we
output eh info into the IR).
llvm-svn: 45285
|
| |
|
|
| |
llvm-svn: 45282
|
| |
|
|
| |
llvm-svn: 45281
|
| |
|
|
| |
llvm-svn: 45280
|
| |
|
|
| |
llvm-svn: 45278
|
| |
|
|
| |
llvm-svn: 45274
|
| |
|
|
| |
llvm-svn: 45268
|
| |
|
|
|
|
| |
OwningPtr except that it works for pointers to arrays.
llvm-svn: 45266
|
| |
|
|
| |
llvm-svn: 45261
|
| |
|
|
| |
llvm-svn: 45260
|
| |
|
|
| |
llvm-svn: 45259
|
| |
|
|
|
|
|
|
|
| |
(icmp slt (sub A B) 1) -> (icmp sle A B)
icmp sgt (sub A B) -1) -> (icmp sge A B)
and add testcase.
llvm-svn: 45256
|
| |
|
|
| |
llvm-svn: 45255
|
| |
|
|
| |
llvm-svn: 45254
|
| |
|
|
|
|
| |
strict.
llvm-svn: 45253
|
| |
|
|
| |
llvm-svn: 45252
|
| |
|
|
|
|
| |
uses are addresses. This trades a constant multiply for one fewer iv.
llvm-svn: 45251
|
| |
|
|
|
|
| |
has a single use, and generalize it to not require N to be a constant.
llvm-svn: 45250
|
| |
|
|
| |
llvm-svn: 45249
|
| |
|
|
| |
llvm-svn: 45247
|
| |
|
|
| |
llvm-svn: 45246
|
| |
|
|
| |
llvm-svn: 45245
|
| |
|
|
|
|
|
| |
- vec_const.ll: Vector constant loads
- immed64.ll: i64, f64 constant loads
llvm-svn: 45242
|
| |
|
|
| |
llvm-svn: 45238
|
| |
|
|
| |
llvm-svn: 45236
|
| |
|
|
| |
llvm-svn: 45230
|
| |
|
|
| |
llvm-svn: 45229
|
| |
|
|
|
|
| |
to exceptions rather than variants for error handling in Ocaml.
llvm-svn: 45226
|
| |
|
|
|
|
|
|
|
|
|
|
| |
are a couple of issues that show up with the optimizer,
but I don't think they're really EH problems.
(llvm-gcc testsuite users note: By default the testsuite
uses the unwinding code that's built as part of your local
llvm-gcc, which does not work. You need to trick it into
using the installed system unwinding code to get useful
results.)
llvm-svn: 45221
|
| |
|
|
| |
llvm-svn: 45219
|
| |
|
|
|
|
|
|
|
| |
calls 'nounwind'. It is important for correct C++
exception handling that nounwind markings do not get
lost, so this transformation is actually needed for
correctness.
llvm-svn: 45218
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- call.ll: Function call
- ctpop.ll: Count population
- dp_farith.ll: DP arithmetic
- eqv.ll: Equivalence primitives
- fcmp.ll: SP comparisons
- fdiv.ll: SP division
- fneg-fabs.ll: SP negation, aboslute value
- int2fp.ll: Integer -> SP conversion
- rotate_ops.ll: Rotation primitives
- select_bits.ll: (a & c) | (b & ~c) bit selection
- shift_ops.ll: Shift primitives
- sp_farith.ll: SP arithmentic
llvm-svn: 45217
|
| |
|
|
|
|
| |
(vector insertions)
llvm-svn: 45216
|
| |
|
|
| |
llvm-svn: 45214
|
| |
|
|
| |
llvm-svn: 45198
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to know about calls that cannot throw ('nounwind'):
if such a call does throw for some reason then the
personality will terminate the program. The distinction
between an ordinary call and a nounwind call is that
an ordinary call gets an entry in the exception table
but a nounwind call does not. This patch sets up the
exception table appropriately. One oddity is that
I've chosen to bracket nounwind calls with labels (like
invokes) - the other choice would have been to bracket
ordinary calls with labels. While bracketing
ordinary calls is more natural (because bracketing
by labels would then correspond exactly to getting an
entry in the exception table), I didn't do it because
introducing labels impedes some optimizations and I'm
guessing that ordinary calls occur more often than
nounwind calls. This fixes the gcc filter2 eh test,
at least at -O0 (the inliner needs some tweaking at
higher optimization levels).
llvm-svn: 45197
|
| |
|
|
| |
llvm-svn: 45196
|
| |
|
|
| |
llvm-svn: 45192
|