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
Chris Lattner
2ccb73bc8b
Refactor CodeGenTypes out to CodeGenModule so it can be used for functions
...
and globals.
llvm-svn: 39661
2007-06-16 00:16:26 +00:00
Chris Lattner
2052bc8107
Split type analysis out to its own file, now the integer constant expr evaluation
...
is ready.
llvm-svn: 39660
2007-06-16 00:12:05 +00:00
Chris Lattner
23b7eb677d
Finally bite the bullet and make the major change: split the clang namespace
...
out of the llvm namespace. This makes the clang namespace be a sibling of
llvm instead of being a child.
The good thing about this is that it makes many things unambiguous. The
bad things is that many things in the llvm namespace (notably data structures
like smallvector) now require an llvm:: qualifier. IMO, libsystem and libsupport
should be split out of llvm into their own namespace in the future, which will fix
this issue.
llvm-svn: 39659
2007-06-15 23:05:46 +00:00
Chris Lattner
2b228c95aa
implement codegen of calls. We can now compile:
...
double foo( int (*FP)(int, int, int)) {
return FP(1, 2, 3);
}
to:
define double @foo(i32 (i32, i32, i32)* %FP) {
entry:
%call = tail call i32 %FP( i32 1, i32 2, i32 3 )
%conv = sitofp i32 %call to double
ret double %conv
}
llvm-svn: 39658
2007-06-15 21:34:29 +00:00
Bill Wendling
52d85bdd2b
Submitted by: Bill Wendling
...
Reviewed by: Chris Lattner
- Refactor some code from main() and ProcessInputFile() so that it helps to
decouple the initialization of the Preprocessor object from the
diagnostic client.
llvm-svn: 39657
2007-06-15 21:20:00 +00:00
Chris Lattner
d760e468aa
Don't generate code for prototypes
...
llvm-svn: 39656
2007-06-15 21:16:23 +00:00