Evan Cheng
1ad4a6117b
Change LiveRange so it keeps a pointer to the VNInfo rather than an index.
...
Changes related modules so VNInfo's are not copied. This decrease
copy coalescing time by 45% and overall compilation time by 10% on siod.
llvm-svn: 41579
2007-08-29 20:45:00 +00:00
Anton Korobeynikov
830b1cb4e9
Lower FRAME_TO_ADDR_OFFSET to zero by default (if not custom lowered)
...
llvm-svn: 41578
2007-08-29 19:28:29 +00:00
Duncan Sands
7741427a09
Move getX86RegNum into X86RegisterInfo and use it
...
in the trampoline lowering. Lookup the jump and
mov opcodes for the trampoline rather than hard
coding them.
llvm-svn: 41577
2007-08-29 19:01:20 +00:00
Raul Herbster
f1aaa801ed
Alphabetize Raul's entry.
...
llvm-svn: 41576
2007-08-29 18:21:29 +00:00
Ted Kremenek
5ccf0d832d
Added checking (during parsing) of comparison of floating point values using == or !=.
...
This is the same functionality gcc provides via --Wfloat-equal.
llvm-svn: 41574
2007-08-29 18:06:12 +00:00
Chris Lattner
8a241f9359
Teach Type::is[un]SignedIntegerType about enum decls. This allows the code generator
...
to emit signed comparisons when needed for enum decl references. This implements
test/CodeGen/enum.c. I think enums should be good now.
llvm-svn: 41572
2007-08-29 17:48:46 +00:00
Chris Lattner
3a370bf33f
Implement GCC-compatible layout and typing of enum constants and enum decl.
...
A small bit of codegen work is still pending.
llvm-svn: 41571
2007-08-29 17:31:48 +00:00
Chris Lattner
959bcdcae6
add some accessors
...
llvm-svn: 41570
2007-08-29 17:23:37 +00:00
Raul Herbster
4c5fac3977
New contributor added
...
llvm-svn: 41569
2007-08-29 16:51:52 +00:00
Tanya Lattner
bca16c80ed
Updating configure script to enable MIPS.
...
llvm-svn: 41568
2007-08-29 16:38:16 +00:00
Chris Lattner
2198ea9097
Silence implicit 64->32-bit conversion warnings.
...
llvm-svn: 41567
2007-08-29 16:32:50 +00:00
Chris Lattner
2408d769eb
getMinSignedBits needs to take into consider the sign bit when the value is positive.
...
llvm-svn: 41566
2007-08-29 16:21:18 +00:00
Chris Lattner
8d22b4e18a
update these
...
llvm-svn: 41565
2007-08-29 16:15:23 +00:00
Chris Lattner
c92bc4ce2f
Fix a null dereference Neil ran into
...
llvm-svn: 41564
2007-08-29 16:03:41 +00:00
Chris Lattner
fb38f274ff
remove some ugly code now that implicit defs are being generated in this case, thanks Steve!
...
llvm-svn: 41560
2007-08-29 06:38:44 +00:00
Steve Naroff
c5e5027b86
Re-teach Expr::isNullPointerConstant() about ImplicitCastExpr:-)
...
This fixes the following bug submitted by Neil...
const char *f (void) { return 0; }
...which would incorrectly warn with -pedantic enabled.
llvm-svn: 41559
2007-08-29 00:00:02 +00:00
Steve Naroff
0b66158248
Implement default argument promotions (for old-style function calls and variable argument lists).
...
[dylan:~/llvm/tools/clang] admin% cat x.c
int printf(const char *, ...);
int oldschool();
void foo() {
float f;
short i;
printf("foo %f", 1.0f);
oldschool(f,i);
}
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang x.c -parse-ast-dump
int printf(char const *, ...);
int oldschool();
void foo()
(CompoundStmt 0x3105f00
(DeclStmt 0x3105ba0
0x3105ce0 "float f")
(DeclStmt 0x3105c90
0x3105d10 "short i")
(CallExpr 0x3105df0 'int'
(ImplicitCastExpr 0x3105dc0 'int (*)(char const *, ...)'
(DeclRefExpr 0x3105c20 'int (char const *, ...)' Decl='printf' 0x3105bd0))
(ImplicitCastExpr 0x3105dd0 'char const *'
(StringLiteral 0x3105d60 'char *' "foo %f"))
(ImplicitCastExpr 0x3105de0 'double'
(FloatingLiteral 0x3105d80 'float' 1.000000)))
(CallExpr 0x3105ed0 'int'
(ImplicitCastExpr 0x3105ea0 'int (*)()'
(DeclRefExpr 0x3105e20 'int ()' Decl='oldschool' 0x3105c40))
(ImplicitCastExpr 0x3105eb0 'double'
(DeclRefExpr 0x3105e40 'float' Decl='f' 0x3105ce0))
(ImplicitCastExpr 0x3105ec0 'int'
(DeclRefExpr 0x3105e60 'short' Decl='i' 0x3105d10))))
llvm-svn: 41558
2007-08-28 23:30:39 +00:00
Steve Naroff
1d8ce44aa4
Teach Expr::isNullPointerConstant() about ImplicitCastExpr's.
...
This fixes the following (recent) regression noticed by Keith Bauer (thanks!).
void func(void *a);
main() {
void *p;
p = 0;
func(0);
}
...which now works as you would expect.
llvm-svn: 41557
2007-08-28 21:20:34 +00:00
Dan Gohman
81b62e1218
Add an option, -view-sunit-dags, for viewing the actual SUnit DAGs used by
...
scheduling.
llvm-svn: 41556
2007-08-28 20:32:58 +00:00
Steve Naroff
f93b6726b1
Finish converting decls over to the new invalid decl API.
...
Also removed an old FIXME (FIXME: "auto func();" passes through...).
llvm-svn: 41555
2007-08-28 20:14:24 +00:00
Ted Kremenek
eda180e239
Added support for indirect-gotos (GCC extension) in source-level CFGs.
...
This involves the construction of a specialized "dispatch" block that
all basic blocks containing indirect gotos unconditionally transfer
control-flow to. The successors of the dispatch block has as its successors
all of the blocks containing labels whose address was taken somewhere in
the function.
llvm-svn: 41554
2007-08-28 19:26:49 +00:00
Chuck Rose III
e87935b379
Update win32 VStudio project files to keep pace with recently added and deleted files
...
llvm-svn: 41553
2007-08-28 18:59:02 +00:00
Steve Naroff
cf871f59bf
Move the "invalid decl" idiom up to Decl (where we have some bits to steal:-)
...
Converted ParmVarDecl, FileVarDecl, BlockVarDecl, and Sema::ParseIdentifierExpr() to use the idiom.
Updated array-constraint.c to make sure we no longer get "undeclared identifier" errors:-)
llvm-svn: 41552
2007-08-28 18:45:29 +00:00
Chris Lattner
24b51ff752
Emit a slightly better warning for unused values for unary and binary operators:
...
t2.c:3:18: warning: expression result unused
x = ++x, ++y, y+2;
~~~~~~~~~~~~^ ~~~
llvm-svn: 41551
2007-08-28 18:40:30 +00:00
Chris Lattner
c11005faa1
add a sourcelocation to binary operator to keep track of the location of the operator.
...
llvm-svn: 41550
2007-08-28 18:36:55 +00:00
Ted Kremenek
105efce68f
Added support for GCC-style statement expressions in source-level CFGs.
...
llvm-svn: 41549
2007-08-28 18:30:10 +00:00
Chris Lattner
1c1f932433
Change EnumDecl to store its corresponding integer type
...
directly in it. Remove TargetInfo::getEnumPolicy, as there is only
one policy that we support right now.
llvm-svn: 41548
2007-08-28 18:24:31 +00:00
Ted Kremenek
25fb681907
Added support for comma expressions and DeclStmts which may have
...
arbitrarily complex control-flow in their subexpressions.
llvm-svn: 41547
2007-08-28 18:14:37 +00:00
Ted Kremenek
e07a8cd7ff
Fixed return-of-stack-address checker to correctly handle stack/global
...
variables that have a pointer type, or arrays that contain pointers.
This fixes a crash on the following code:
int *h[3];
int **foo(int i)
{
return &(h[i]);
}
This bug was reported by Keith Bauer (thanks!).
llvm-svn: 41546
2007-08-28 17:02:55 +00:00
Chris Lattner
35da3e29dd
extwarn about VLAs in C89 mode.
...
llvm-svn: 41545
2007-08-28 16:54:00 +00:00
Chris Lattner
8ed218afb9
c++'0x has long long also.
...
llvm-svn: 41544
2007-08-28 16:41:29 +00:00
Chris Lattner
f2c338b7d1
warn about long long when in c89 mode.
...
llvm-svn: 41543
2007-08-28 16:40:32 +00:00
Steve Naroff
4ca5d5a9e8
Tweak declaration...
...
llvm-svn: 41542
2007-08-28 16:31:47 +00:00
Chris Lattner
613cef84b4
new testcase
...
llvm-svn: 41541
2007-08-28 16:20:14 +00:00
Ted Kremenek
91e8d2a974
Removed special-casing in CFG construction for ParenExprs.
...
llvm-svn: 41540
2007-08-28 16:18:58 +00:00
Evan Cheng
a5b10b334f
Recover most of the compile time regression due to recent live interval changes.
...
1. Eliminate the costly live interval "swapping".
2. Change ValueNumberInfo container from SmallVector to std::vector. The former
performs slowly when the vector size is very large.
llvm-svn: 41536
2007-08-28 08:28:51 +00:00
Chris Lattner
c4f6d0c5cf
fix 80 col violation
...
llvm-svn: 41533
2007-08-28 06:17:15 +00:00
Chris Lattner
b8a501ccf1
compute the required destination type for an enum, emitting various warnings.
...
TODO: update the types of the constants and the enum.
llvm-svn: 41532
2007-08-28 06:15:15 +00:00
Chris Lattner
d0e7ed3f2c
remove dead method.
...
llvm-svn: 41531
2007-08-28 05:56:37 +00:00
Chris Lattner
bf478cbef2
add a diagnostic:
...
t.c:1:12: warning: ISO C restricts enumerator values to range of 'int' (180388626432 is too large)
enum e {A, B = 42LL << 32, C = -4, D = 12456 };
^
llvm-svn: 41530
2007-08-28 05:27:00 +00:00
Bruno Cardoso Lopes
43318839c9
Added method to get Mips register numbers
...
Changed the stack frame layout, StackGrowsUp fits better to Mips strange stack.
Stack offset calculation bug fixed!
llvm-svn: 41529
2007-08-28 05:13:42 +00:00
Chris Lattner
67933c0aae
move a todo
...
llvm-svn: 41528
2007-08-28 05:10:31 +00:00
Bruno Cardoso Lopes
14033fb5cb
Changed stack allocation On LowerFORMAL_ARGUMENTS.
...
Added comments about new stack allocation.
Expand SelectCC for i32 results
llvm-svn: 41527
2007-08-28 05:08:16 +00:00
Bruno Cardoso Lopes
cfd1638e2d
Mask directive completed with CalleeSave info
...
Comments for Mips directives added.
llvm-svn: 41526
2007-08-28 05:06:17 +00:00
Bruno Cardoso Lopes
f55a785e56
Added methods to record SPOffsets from LowerFORMAL_ARGUMENTS
...
llvm-svn: 41525
2007-08-28 05:04:41 +00:00
Chris Lattner
39f920f35b
now that all the infrastructure is in place, enforce C99 6.8.5p3.
...
Note the FIXME: we need some way to mark a decl erroneous :)
llvm-svn: 41524
2007-08-28 05:03:08 +00:00
Chris Lattner
773c0596b8
If the condition of a for statement is promoted, make sure the
...
implicit cast gets linked back into the AST.
llvm-svn: 41523
2007-08-28 04:55:47 +00:00
Chris Lattner
0e258b8518
Cut off crazy computation. This helps PR1622 slightly.
...
llvm-svn: 41522
2007-08-28 04:23:55 +00:00
Steve Naroff
7e6f7c25bf
Implement more thoughful error recovery when dealing with bogus declarator types.
...
For example, the following code was resulting in spurious warnings. This was the result of
Sema::GetTypeForDeclarator() synthesizing a type to hand back to the caller (in this case,
"int []", instead of "struct s[]", which is invalid).
struct s;
struct s* t (struct s z[]) { // expected-error {{array has incomplete element type}}
return z;
}
Strategy: Flag the error in Declarator/DeclaratorChunk. This info is later stored in
the ParmVarDecl. If the decl is referenced, Sema::ParseIdentifierExpr() will check if
the type is invalid. If so, it quietly returns "true", without instantiating a DeclRefExpr.
This seems to work nicely. If Chris is happy with the approach, I will generalize this to
all VarDecls.
llvm-svn: 41521
2007-08-28 03:03:08 +00:00
Ted Kremenek
12687ff9b8
Added support for short-circuit '&&' and '||' operators in source-level CFGs.
...
llvm-svn: 41520
2007-08-27 21:54:41 +00:00