Chris Lattner
cd215f00ee
refactor some code, implement -=
...
llvm-svn: 39711
2007-06-29 16:52:55 +00:00
Chris Lattner
9369a563b4
Rename ArithAssignBinaryOperator -> CompoundAssignOperator, implement
...
codegen support for +=.
llvm-svn: 39710
2007-06-29 16:31:29 +00:00
Bill Wendling
772996ab44
Submitted by: Bill Wendling
...
- The && at the end was causing this to fail. Removed.
llvm-svn: 39709
2007-06-29 09:54:25 +00:00
Chris Lattner
bdf3f73eeb
fix this test to work with the checker.
...
llvm-svn: 39708
2007-06-28 05:49:50 +00:00
Chris Lattner
11f49640ef
Clients should only get read-only access to diagnostic info.
...
llvm-svn: 39707
2007-06-28 05:18:35 +00:00
Chris Lattner
318a9d7663
pick more logical names for routines.
...
llvm-svn: 39706
2007-06-28 05:17:33 +00:00
Chris Lattner
0d21046a7e
Remove dead code.
...
llvm-svn: 39705
2007-06-28 05:10:07 +00:00
Chris Lattner
23e6353835
Eliminate almost all of the redundancy Bill introduced.
...
llvm-svn: 39704
2007-06-28 04:54:17 +00:00
Chris Lattner
08f0e0a001
add an accessor
...
llvm-svn: 39703
2007-06-28 04:53:50 +00:00
Chris Lattner
ea035b5fb8
remove diagchecker.h, add more missing files.
...
llvm-svn: 39702
2007-06-28 04:42:53 +00:00
Chris Lattner
af74985d71
Add a hack to fix a really subtle memory lifetime bug Bill introduced with his
...
recent changes. carbon.h now preprocesses just fine.
llvm-svn: 39701
2007-06-28 04:10:04 +00:00
Chris Lattner
256c21b78a
Record the intermediate computation type for compound assignments in the AST.
...
For example, for:
int test(short S, long L) {
return S /= L;
}
record that the division is done as a long, even though the result type is
short.
llvm-svn: 39700
2007-06-28 03:53:10 +00:00
Bill Wendling
81217d6ff6
Submitted by: Bill Wendling
...
Update with -parse-ast-check.
llvm-svn: 39699
2007-06-28 00:54:14 +00:00
Bill Wendling
f476d025f8
Submitted by: Bill Wendling
...
Missing support for LLVM casting operators.
llvm-svn: 39698
2007-06-28 00:46:14 +00:00
Bill Wendling
5c9dde08e7
Submitted by: Bill Wendling
...
Small cleanup. No need to assign to a variable before returning.
llvm-svn: 39697
2007-06-28 00:45:30 +00:00
Bill Wendling
52b4b73442
Submitted by: Bill Wendling
...
Fixed checking to coincide with the correct lines.
llvm-svn: 39696
2007-06-27 18:18:03 +00:00
Bill Wendling
764b90ad4e
Submitted by: Bill Wendling
...
- Revert use of -parse-ast-check.
llvm-svn: 39695
2007-06-27 18:13:04 +00:00
Chris Lattner
69e70e506a
fix codegen of void return functions
...
llvm-svn: 39694
2007-06-27 18:10:00 +00:00
Chris Lattner
c8c3dadaa0
fix codegen of void-returning functions
...
llvm-svn: 39693
2007-06-27 18:08:49 +00:00
Chris Lattner
c2d8163bcd
tersify output
...
llvm-svn: 39692
2007-06-27 17:26:23 +00:00
Chris Lattner
76148a9ded
add diag checker to xcode proj
...
llvm-svn: 39691
2007-06-27 17:25:13 +00:00
Chris Lattner
a092b149bf
rename LLVMDiagChecker.* -> DiagChecker.*
...
llvm-svn: 39690
2007-06-27 17:24:55 +00:00
Bill Wendling
a5b3bb11df
Submitted by: Bill Wendling
...
- Chris noticed that if there were multiple warnings/errors expected
throughout the file and we were checking only one of them, then it
would go ahead and say that the whole file was okay. Fixed this by
adding a check for the line number as well as the string.
llvm-svn: 39689
2007-06-27 07:43:27 +00:00
Bill Wendling
87e46687d9
Submitted by: Bill Wendling
...
Reviewed by: Chris Lattner
Split up lines to have only one expected output per line. Restored some
checks.
llvm-svn: 39688
2007-06-27 07:31:17 +00:00
Bill Wendling
fdddfc115e
Submitted by: Bill Wendling
...
Reviewed by: Chris Lattner
- Reverted some checks because they're checking the preprocessor output.
llvm-svn: 39687
2007-06-27 07:26:41 +00:00
Bill Wendling
52b0a4e84e
Submitted by: Bill Wendling
...
Removed unnecessary typedef.
llvm-svn: 39686
2007-06-27 07:24:11 +00:00
Chris Lattner
9b3b9a1922
add a method to get more precise arrow positioning for expressions. Rename
...
some ivars to more obvious names, eliminating some comments.
llvm-svn: 39685
2007-06-27 06:08:24 +00:00
Chris Lattner
a44d116835
implement the rest of Expr::hasLocalSideEffect
...
llvm-svn: 39684
2007-06-27 05:58:59 +00:00
Chris Lattner
c4c8e2546b
New testcase for unused expression analysis
...
llvm-svn: 39683
2007-06-27 05:58:33 +00:00
Chris Lattner
1ec5f563c7
First cut at warning about expressions whose results are ignored. For example,
...
this produces:
warn.c:4:3: warning: expression result unused
X == Y;
^~~~~~
warn.c:5:3: warning: expression result unused
(void)X;
^~~~~~~
warn.c:11:3: warning: expression result unused
A == foo(1, 2);
^~~~~~~~~~~~~~
warn.c:13:3: warning: expression result unused
foo(1,2)+foo(4,3);
^~~~~~~~~~~~~~~~~
llvm-svn: 39682
2007-06-27 05:38:08 +00:00
Bill Wendling
eb2def66be
Submitted by: Bill Wendling
...
- Converted to use the -parse-ast-check flag.
llvm-svn: 39681
2007-06-27 04:30:12 +00:00
Bill Wendling
ff1d2c81ba
Submitted by: Bill Wendling
...
- Convert to using the -parse-ast-check method to check warnings and
errors.
llvm-svn: 39680
2007-06-27 04:07:44 +00:00
Bill Wendling
97d4146c5a
Submitted by: Bill Wendling
...
- Shouldn't increment the iterator but a copy of it.
llvm-svn: 39679
2007-06-27 04:06:59 +00:00
Bill Wendling
469211a295
Submitted by: Bill Wendling
...
Reviewed by: Chris Lattner
- Added a new diagnostic client, TextDiagnosticBuffer. It buffers all
reported diagnostics.
- Use the new diagnostic client to check that expected diagnostics are
actually emitted. The way this is done is to put the expected
diagnostic in a comment on the line you expect it to be emitted for.
Like this:
int X = A; // expected-warning {{blah}}
- Use -parse-ast-check to use this feature.
llvm-svn: 39678
2007-06-27 03:19:45 +00:00
Chris Lattner
cd68f64551
Start bringing the exprstmt hook back.
...
llvm-svn: 39677
2007-06-27 01:06:29 +00:00
Bill Wendling
aec64c35f1
Submitted by: Bill Wendling
...
- Separate out the AST streamers from the clang.cpp file into their very
own special files.
llvm-svn: 39676
2007-06-23 00:39:57 +00:00
Bill Wendling
26e1f8c05a
Bug #:
...
Submitted by: Bill Wendling
- Convert std::cerr to using fprintf(stderr, ...) instead.
llvm-svn: 39675
2007-06-22 22:43:15 +00:00
Chris Lattner
54fb19efaa
implement support for struct and complex returns.
...
llvm-svn: 39674
2007-06-22 22:02:34 +00:00
Chris Lattner
e9a6453ded
add some infrastructure for codegen'ing complex numbers. implement addition
...
of complex. We now produce optimal code for:
void test(_Complex float *Y) {
*Y = *Y + *Y;
}
$ clang -emit-llvm cg.c | llvm-as | opt -std-compile-opts | llc -march=x86-64
...
_test:
movss (%rdi), %xmm0
addss %xmm0, %xmm0
movss 4(%rdi), %xmm1
movss %xmm0, (%rdi)
addss %xmm1, %xmm1
movss %xmm1, 4(%rdi)
ret
llvm-svn: 39673
2007-06-22 21:44:33 +00:00
Chris Lattner
c6395936ae
Split complex types out from being members of BuiltinType to being their own
...
types.
llvm-svn: 39672
2007-06-22 20:56:16 +00:00
Chris Lattner
f033c147c9
remove location tracking for target info
...
llvm-svn: 39671
2007-06-22 19:05:19 +00:00
Chris Lattner
0fb8465981
Don't forget to set this
...
llvm-svn: 39670
2007-06-22 18:57:44 +00:00
Chris Lattner
09153c0a8c
Build enough support for aggregates to be able to compile this:
...
void test(int A, _Complex float Y) {
_Complex float X;
X = X;
}
llvm-svn: 39669
2007-06-22 18:48:09 +00:00
Chris Lattner
3e3a1e9cda
implement lowering of complex types
...
llvm-svn: 39668
2007-06-22 18:15:26 +00:00
Chris Lattner
f39b03d98b
fix naming of aggregate arguments.
...
llvm-svn: 39667
2007-06-22 18:15:16 +00:00
Chris Lattner
1fde0b345b
implement codegen of the relational operations
...
One major FIXME though.
llvm-svn: 39666
2007-06-20 18:30:55 +00:00
Chris Lattner
273c63d450
Implement the equality operators for simple types
...
llvm-svn: 39665
2007-06-20 18:02:30 +00:00
Chris Lattner
e1e93a5e5d
assert, don't crash, on int[]
...
llvm-svn: 39664
2007-06-20 17:12:11 +00:00
Chris Lattner
b6984c4854
Hook up global function and variable handling. We can now compile:
...
int X, bar(int,int,int);
short Y;
double foo() {
return bar(X, Y, 3);
}
into:
@X = external global i32 ; <i32*> [#uses=1]
@Y = external global i16 ; <i16*> [#uses=1]
define double @foo() {
entry:
%tmp = load i32* @X ; <i32> [#uses=1]
%tmp1 = load i16* @Y ; <i16> [#uses=1]
%promote = sext i16 %tmp1 to i32 ; <i32> [#uses=1]
%call = tail call i32 @bar( i32 %tmp, i32 %promote, i32 3 ) ; <i32> [#uses=1]
%conv = sitofp i32 %call to double ; <double> [#uses=1]
ret double %conv
}
declare i32 @bar(i32, i32, i32)
llvm-svn: 39663
2007-06-20 04:44:43 +00:00
Chris Lattner
b3fef07a30
add new files to xcode project
...
llvm-svn: 39662
2007-06-16 00:17:33 +00:00