| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 41002
|
| |
|
|
| |
llvm-svn: 41001
|
| |
|
|
|
|
|
|
|
| |
mutate the
preprocessor state, causing bogus diagnostics when the file is parsed for real. This
implements Misc/diag-checker.c. Thanks to Ted for noticing this.
llvm-svn: 41000
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
operators.
This fixes the following...
eypedef short S;
int test(S X, long long Y) {
return X < Y;
}
Before...
(CompoundStmt 0x2905d00
(ReturnStmt 0x2905cf0
(BinaryOperator 0x2905cd0 'int' '<'
(ImplicitCastExpr 0x2905cc0 'int'
(DeclRefExpr 0x2905c80 'S':'short' Decl='X' 0x2905c20))
(DeclRefExpr 0x2905ca0 'long long' Decl='Y' 0x2905c50))))
After...
(CompoundStmt 0x2b05c30
(ReturnStmt 0x2b05c20
(BinaryOperator 0x2b05c00 'int' '<'
(ImplicitCastExpr 0x2b05bf0 'long long'
(DeclRefExpr 0x2b05bb0 'S':'short' Decl='X' 0x2b05b50))
(DeclRefExpr 0x2b05bd0 'long long' Decl='Y' 0x2b05b80))))
llvm-svn: 40999
|
| |
|
|
| |
llvm-svn: 40998
|
| |
|
|
| |
llvm-svn: 40997
|
| |
|
|
| |
llvm-svn: 40996
|
| |
|
|
| |
llvm-svn: 40995
|
| |
|
|
| |
llvm-svn: 40994
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
codegen for:
_Complex double bar(int);
void test(_Complex double*);
void test2(int c) {
_Complex double X;
X = bar(1);
test(&X);
}
llvm-svn: 40993
|
| |
|
|
|
|
| |
bitcast.
llvm-svn: 40992
|
| |
|
|
| |
llvm-svn: 40991
|
| |
|
|
| |
llvm-svn: 40990
|
| |
|
|
| |
llvm-svn: 40989
|
| |
|
|
|
|
|
|
| |
"| grep foo | wc -l | grep 2" idiom used by many tests, so that, for
example, tests don't mistakenly accept a count of 12 when 2 is
expected. Also, the new form is more consice: "| grep foo | count 2".
llvm-svn: 40988
|
| |
|
|
|
|
|
| |
use an intptr ValueType instead of i32 for the index operand in
getCopyToParts.
llvm-svn: 40987
|
| |
|
|
| |
llvm-svn: 40986
|
| |
|
|
| |
llvm-svn: 40985
|
| |
|
|
|
|
| |
coallescing from 1.17s to 0.88s on siod.
llvm-svn: 40984
|
| |
|
|
|
|
| |
an empty vector. This speeds up llc slightly.
llvm-svn: 40983
|
| |
|
|
| |
llvm-svn: 40982
|
| |
|
|
| |
llvm-svn: 40981
|
| |
|
|
| |
llvm-svn: 40980
|
| |
|
|
| |
llvm-svn: 40979
|
| |
|
|
| |
llvm-svn: 40978
|
| |
|
|
|
|
| |
not split condition constraints.
llvm-svn: 40977
|
| |
|
|
| |
llvm-svn: 40976
|
| |
|
|
| |
llvm-svn: 40975
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to handle values bigger than double. If we assume host==target and host
long double works correctly, this is not too bad, but we don't want to
have that limitation longterm. I could implement accepting double
constants as long double or something like that, which would lead to
incorrect codegen with no errors; the more I think about that the worse
it seems. Rather than do such a hack that would be backed out later,
I'm settling for giving reasonable error messages, for now.
llvm-svn: 40974
|
| |
|
|
|
|
| |
failing.
llvm-svn: 40973
|
| |
|
|
|
|
| |
instruction requires a rex prefix (i.e. outputs to r8b, etc.). So issue shift right by 8 on AX and then truncate it to 8 bits instead.
llvm-svn: 40972
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
alloca, increase the alignment of the load, turning it into an aligned load.
This allows us to compile:
#include <xmmintrin.h>
__m128i foo(__m128i x){
static const unsigned int c_0[4] = { 0, 0, 0, 0 };
__m128i v_Zero = _mm_loadu_si128((__m128i*)c_0);
x = _mm_unpacklo_epi8(x, v_Zero);
return x;
}
into:
_foo:
punpcklbw _c_0.5944, %xmm0
ret
.data
.lcomm _c_0.5944,16,4 # c_0.5944
instead of:
_foo:
movdqu _c_0.5944, %xmm1
punpcklbw %xmm1, %xmm0
ret
.data
.lcomm _c_0.5944,16,2 # c_0.5944
llvm-svn: 40971
|
| |
|
|
|
|
| |
8-bit registers in 32-bit mode. Ditto for GR32_.
llvm-svn: 40970
|
| |
|
|
| |
llvm-svn: 40969
|
| |
|
|
| |
llvm-svn: 40968
|
| |
|
|
| |
llvm-svn: 40967
|
| |
|
|
| |
llvm-svn: 40966
|
| |
|
|
| |
llvm-svn: 40965
|
| |
|
|
| |
llvm-svn: 40964
|
| |
|
|
| |
llvm-svn: 40963
|
| |
|
|
| |
llvm-svn: 40962
|
| |
|
|
| |
llvm-svn: 40961
|
| |
|
|
| |
llvm-svn: 40960
|
| |
|
|
| |
llvm-svn: 40959
|
| |
|
|
|
|
|
|
| |
(constants are still not handled). Adds ConvertActions
to control fp-to-fp conversions (these are currently
defaulted for all other targets, so no changes there).
llvm-svn: 40958
|
| |
|
|
| |
llvm-svn: 40957
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows us to dump:
typedef short S;
int test(S X, long long Y) {
return X < ((100));
}
as:
typedef short S;
int test(S X, long long Y)
(CompoundStmt 0x2905d40
(ReturnStmt 0x2905d30
(BinaryOperator 0x2905d10 'int' '<'
(ImplicitCastExpr 0x2905d00 'int'
(DeclRefExpr 0x2905c80 'S':'short' Decl='X' 0x2905c20))
(ParenExpr 0x2905ce0 'int'
(ParenExpr 0x2905cc0 'int'
(IntegerLiteral 0x2905ca0 'int' 100))))))
llvm-svn: 40956
|
| |
|
|
|
|
| |
to do so.
llvm-svn: 40955
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the AST in a structural, non-pretty, form useful for understanding
the AST. It isn't quite done yet, but is already somewhat useful.
For this example:
int test(short X, long long Y) {
return X < ((100));
}
we get (with -parse-ast-dump):
int test(short X, long long Y)
(CompoundStmt 0x2905ce0
(ReturnStmt 0x2905cd0
(BinaryOperator 0x2905cb0 '<'
(ImplicitCastExpr 0x2905ca0
(DeclRefExpr 0x2905c20 Decl='X' 0x2905bb0))
(ParenExpr 0x2905c80
(ParenExpr 0x2905c60
(IntegerLiteral 0x2905c40 100))))))
llvm-svn: 40954
|
| |
|
|
| |
llvm-svn: 40953
|