Chris Lattner
cf3da8495a
remove uses of EmitConversion
...
llvm-svn: 41435
2007-08-26 07:08:39 +00:00
Chris Lattner
798da7033f
implicit casts take care of this code, remove it now.
...
llvm-svn: 41434
2007-08-26 07:06:24 +00:00
Chris Lattner
3474c202ab
refactor scalar conversions out into CGExprScalar.cpp
...
llvm-svn: 41433
2007-08-26 06:48:56 +00:00
Chris Lattner
e026ebd6fe
steve's recent changes fixed this bogus warning.
...
llvm-svn: 41432
2007-08-26 06:48:28 +00:00
Chris Lattner
1a76a3c970
Break the assumption that any sort of scope (e.g. a loop scope) can
...
hold declarations. Instead, introduce a new "DeclScope" scope type that
holds them explicitly. For now, all scopes have this bit, but in the
future we can use them to fix some issues Neil noticed.
llvm-svn: 41431
2007-08-26 06:24:45 +00:00
Chris Lattner
88078594fc
remove some dead enum values.
...
llvm-svn: 41430
2007-08-26 06:03:04 +00:00
Chris Lattner
7460f9620c
Implement casts from scalar -> complex and complex->complex.
...
llvm-svn: 41429
2007-08-26 05:57:57 +00:00
Chris Lattner
e267f5d2f7
require that operands to __real/__imag are complex or arithmetic. This
...
fixes GCC PR33193
llvm-svn: 41428
2007-08-26 05:39:26 +00:00
Chris Lattner
b5e1262437
implement codegen of __imag of a scalar. Our impl doesn't suffer from
...
GCC bug PR33192.
llvm-svn: 41427
2007-08-26 05:29:21 +00:00
Chris Lattner
9de9527ad6
Make initialization of complex vars work.
...
llvm-svn: 41426
2007-08-26 05:13:54 +00:00
Chris Lattner
a01d898ff5
fix codegen of pre/post inc/dec of a pointer.
...
llvm-svn: 41425
2007-08-26 05:10:16 +00:00
Chris Lattner
c7f06ca780
tolerate unimplemented codegen better
...
llvm-svn: 41424
2007-08-26 05:06:40 +00:00
Chris Lattner
e7a160b37d
int X[] isn't a VLA. This improves support for stdio.h on darwin.
...
llvm-svn: 41423
2007-08-26 05:02:07 +00:00
Neil Booth
cd995b0b4a
Make some diags EXTENSION so they are errors with pedantic errors
...
llvm-svn: 41422
2007-08-26 05:01:15 +00:00
Chris Lattner
57c269b5d3
implement rudimentary union layout support.
...
llvm-svn: 41421
2007-08-26 04:50:19 +00:00
Chris Lattner
5e75e8bc71
Why didn't gcc catch this? :(
...
llvm-svn: 41420
2007-08-26 04:42:42 +00:00
Chris Lattner
881440f5d2
Don't make unknown builtins fatal errors yet.
...
llvm-svn: 41419
2007-08-26 04:17:05 +00:00
Chris Lattner
c5221650b3
remove a bunch of dead code
...
llvm-svn: 41418
2007-08-26 04:13:58 +00:00
Chris Lattner
71236d0485
fix a bug introduced by the recent childification of ForStmt.
...
llvm-svn: 41417
2007-08-26 04:11:23 +00:00
Chris Lattner
b677a9398a
Make parse-ast-print print the storage class and inline
...
specifier of functions.
llvm-svn: 41416
2007-08-26 04:02:13 +00:00
Chris Lattner
1c72d77d01
null pointers don't get an extra newline.
...
llvm-svn: 41415
2007-08-26 03:53:29 +00:00
Chris Lattner
0fffcb5b28
implement codegen for complex literals.
...
llvm-svn: 41414
2007-08-26 03:51:12 +00:00
Chris Lattner
1c20a170c0
add a new ImaginaryLiteral AST node that is used to
...
represent imaginary literals:
float _Complex A;
void foo() {
A = 1.0iF;
}
generates:
(BinaryOperator 0x2305ec0 '_Complex float' '='
(DeclRefExpr 0x2305e60 '_Complex float' Decl='A' 0x2305cf0)
(ImaginaryLiteral 0x2305f40 '_Complex float'
(FloatingLiteral 0x2305ea0 'float' 1.000000))))
llvm-svn: 41413
2007-08-26 03:42:43 +00:00
Chris Lattner
ed045421a8
1.0 is double, 1.0F is a float.
...
llvm-svn: 41412
2007-08-26 03:29:23 +00:00
Chris Lattner
f55ab18663
1) refactor some code.
...
2) Add support for lexing imaginary constants (a GCC extension):
t.c:5:10: warning: imaginary constants are an extension
A = 1.0iF;
^
3) Make the 'invalid suffix' diagnostic pointer more accurate:
t.c:6:10: error: invalid suffix 'qF' on floating constant
A = 1.0qF;
^
instead of:
t.c:6:10: error: invalid suffix 'qF' on floating constant
A = 1.0qF;
^
llvm-svn: 41411
2007-08-26 01:58:14 +00:00
Chris Lattner
b620c34bb0
merge checkrelational and checkequality into CheckCompareOperands,
...
to merge duplicate code.
llvm-svn: 41410
2007-08-26 01:18:55 +00:00
Dale Johannesen
b6d2bec418
Revise per review comments.
...
llvm-svn: 41409
2007-08-26 01:18:27 +00:00
Chris Lattner
1895e58c84
Cases like this:
...
char *C;
C != ((void*)0);
Should not warn about incompatible pointer types. Also, make sure to
insert an implicit conversion even if the operand is null.
llvm-svn: 41408
2007-08-26 01:10:14 +00:00
Dale Johannesen
2cfcf70f82
Add APFloat interface to ConstantFPSDNode. Change
...
over uses in DAGCombiner. Fix interfaces to work
with APFloats.
llvm-svn: 41407
2007-08-25 22:10:57 +00:00
Chris Lattner
1bc6fac5c6
new testcase
...
llvm-svn: 41406
2007-08-25 21:57:08 +00:00
Chris Lattner
27f00282e9
The new correct compound assignment operators exposed a bug in codegen.
...
llvm-svn: 41405
2007-08-25 21:56:20 +00:00
Steve Naroff
46c72915f4
Surpress the UsualUnaryConversions for compound assignment operators. This change
...
eliminates the possibility that the left hand expression is an ImplicitCastExpr.
As a result, I removed the check for ImplicitCastExpr in Expr::isLvalue().
This results in the following AST's...
[dylan:~/llvm/tools/clang] admin% cat fix.c
short x; void test4(char c) {
x += c;
x = x + c;
}
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang fix.c -parse-ast-dump
Read top-level variable decl: 'x'
void test4(char c)
(CompoundStmt 0x2605d30
(CompoundAssignOperator 0x2605c40 'short' '+='
(DeclRefExpr 0x2605c00 'short' Decl='x' 0x2605a80)
(DeclRefExpr 0x2605c20 'char' Decl='c' 0x2605bc0))
(BinaryOperator 0x2605d10 'short' '='
(DeclRefExpr 0x2605c60 'short' Decl='x' 0x2605a80)
(ImplicitCastExpr 0x2605d00 'short'
(BinaryOperator 0x2605ce0 'int' '+'
(ImplicitCastExpr 0x2605cc0 'int'
(DeclRefExpr 0x2605c80 'short' Decl='x' 0x2605a80))
(ImplicitCastExpr 0x2605cd0 'int'
(DeclRefExpr 0x2605ca0 'char' Decl='c' 0x2605bc0))))))
llvm-svn: 41404
2007-08-25 19:54:59 +00:00
Chris Lattner
479ed3aab8
read and ignore the body of a namespace.
...
llvm-svn: 41403
2007-08-25 18:15:16 +00:00
Steve Naroff
e2562ff99d
Change Expr::isLvalue() to properly deal with ImplicitCastExpr's.
...
This fixes the following bug...
t.c:1:31: error: expression is not assignable
short x; void foo(char c) { x += c; }
This case, among others are now captured in implicit-casts.c.
llvm-svn: 41402
2007-08-25 14:37:06 +00:00
Steve Naroff
aac9415bfb
Give CXXBoolLiteralExpr a type (all expressions need a valid type).
...
This fixes the following:
******************** TEST 'Parser/cxx-bool.cpp' FAILED! ********************
Command:
clang -fsyntax-only Parser/cxx-bool.cpp
Output:
SemaExpr.cpp:731: failed assertion `!t.isNull() && "DefaultFunctionArrayConversion - missing type"'
Output/cxx-bool.cpp.out.script: line 1: 22697 Abort trap clang -fsyntax-only Parser/cxx-bool.cpp
llvm-svn: 41401
2007-08-25 14:02:58 +00:00
Chris Lattner
a5235173bc
refactor enough of the top-level parsing logic to parse and
...
ignore 'namespace foo {}'
llvm-svn: 41400
2007-08-25 06:57:03 +00:00
Chris Lattner
66b67efa61
C++ explicitly allows an empty source file.
...
llvm-svn: 41399
2007-08-25 05:47:03 +00:00
Chris Lattner
e33fbdb898
Fix the test/Sema/format-strings.c regression. This code should be refactored.
...
llvm-svn: 41398
2007-08-25 05:36:18 +00:00
Chris Lattner
6d5922fd66
reenable this.
...
llvm-svn: 41397
2007-08-25 05:31:19 +00:00
Chris Lattner
9449fd7bc3
Fix the regression on test/Sema/cfstring.c
...
llvm-svn: 41396
2007-08-25 05:30:33 +00:00
Chris Lattner
a206358bb6
test the parser only, not sema.
...
llvm-svn: 41395
2007-08-25 05:26:51 +00:00
Devang Patel
6114751544
Move exit condition and exit branch from exiting block into loop header and dominator info. This avoid execution of dead iteration. Loop is already filter in the beginning such that this change is safe.
...
llvm-svn: 41394
2007-08-25 02:39:24 +00:00
Chris Lattner
8692811955
Split the ASTNode out for compound assignments out from binary operators. Now
...
they show up in dumps etc.
llvm-svn: 41393
2007-08-25 02:00:02 +00:00
Chris Lattner
d8c9fc5ed8
fix off-by-one error
...
llvm-svn: 41392
2007-08-25 01:55:00 +00:00
Chris Lattner
e7d0864aed
Fix clang -parse-ast-dump carbon.c
...
llvm-svn: 41391
2007-08-25 01:49:16 +00:00
Chris Lattner
4d15a0dbc0
rename sNames -> StmtClassInfo. Make lookups constant time.
...
llvm-svn: 41390
2007-08-25 01:42:24 +00:00
Devang Patel
c1ef32ef3d
Constant split values needs upper bound and lower bound check, just like any other split value.
...
llvm-svn: 41389
2007-08-25 01:09:14 +00:00
Chris Lattner
2ed652f11d
Allow target constants to be illegal types. The target should
...
know how to handle them. This fixes
test/CodeGen/Generic/asm-large-immediate.ll
llvm-svn: 41388
2007-08-25 01:00:22 +00:00
Devang Patel
4e63e1f5b5
While calculating upper loop bound for first loop and lower loop bound for second loop, take care of edge cases.
...
llvm-svn: 41387
2007-08-25 00:56:38 +00:00
Chris Lattner
dbfc4e4b07
Teach the dag scheduler to handle inline asm nodes with multi-value immediate operands.
...
llvm-svn: 41386
2007-08-25 00:53:07 +00:00