| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 41589
|
| |
|
|
| |
llvm-svn: 41588
|
| |
|
|
|
|
|
|
|
| |
Add APFloat interfaces to ConstantFP, SelectionDAG.
Fix integer bit in double->APFloat conversion.
Convert LegalizeDAG to use APFloat interface in
ConstantFPSDNode uses.
llvm-svn: 41587
|
| |
|
|
| |
llvm-svn: 41586
|
| |
|
|
|
|
|
|
|
|
|
|
| |
block begins with a label or case statement, CFGBlock::getLabel() will
return the corresponding LabelStmt/CaseStmt/DefaultStmt.
LabelStmts and SwitchCases no longer appear within the "executable"
statements of a CFGBlock.
More cleanups on visualization/pretty-printing of CFGs (less verbose).
llvm-svn: 41585
|
| |
|
|
| |
llvm-svn: 41584
|
| |
|
|
| |
llvm-svn: 41583
|
| |
|
|
| |
llvm-svn: 41582
|
| |
|
|
| |
llvm-svn: 41581
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(LLVM-provided) graph algorithms such as DFS and graph visualization
to work effortless on source-level CFGs.
Further cleanup on pretty printing of CFGs. CFGBlock::dump and
CFGBlock::print now take the parent CFG as an argument. This allows
CFGBlocks to print their own appropriate label indicating whether or
not they are the Entry/Exit/IndirectGotoBlock without the CFG::print
routine doing it instead.
Added Graphviz visualization for CFGs: CFG::viewCFG. This employs the
GraphTraits just implemented.
Added "-view-cfg" mode the to clang driver. This is identical to
"-dump-cfg" except that it calls Graphviz to visualize the CFGs
instead of dumping them to the terminal.
llvm-svn: 41580
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 41578
|
| |
|
|
|
|
|
|
| |
in the trampoline lowering. Lookup the jump and
mov opcodes for the trampoline rather than hard
coding them.
llvm-svn: 41577
|
| |
|
|
| |
llvm-svn: 41576
|
| |
|
|
|
|
|
|
| |
== or !=.
This is the same functionality gcc provides via --Wfloat-equal.
llvm-svn: 41574
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
A small bit of codegen work is still pending.
llvm-svn: 41571
|
| |
|
|
| |
llvm-svn: 41570
|
| |
|
|
| |
llvm-svn: 41569
|
| |
|
|
| |
llvm-svn: 41568
|
| |
|
|
| |
llvm-svn: 41567
|
| |
|
|
|
|
| |
positive.
llvm-svn: 41566
|
| |
|
|
| |
llvm-svn: 41565
|
| |
|
|
| |
llvm-svn: 41564
|
| |
|
|
|
|
| |
case, thanks Steve!
llvm-svn: 41560
|
| |
|
|
|
|
|
|
|
|
| |
This fixes the following bug submitted by Neil...
const char *f (void) { return 0; }
...which would incorrectly warn with -pedantic enabled.
llvm-svn: 41559
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
scheduling.
llvm-svn: 41556
|
| |
|
|
|
|
| |
Also removed an old FIXME (FIXME: "auto func();" passes through...).
llvm-svn: 41555
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
deleted files
llvm-svn: 41553
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
t2.c:3:18: warning: expression result unused
x = ++x, ++y, y+2;
~~~~~~~~~~~~^ ~~~
llvm-svn: 41551
|
| |
|
|
|
|
| |
operator.
llvm-svn: 41550
|
| |
|
|
| |
llvm-svn: 41549
|
| |
|
|
|
|
|
| |
directly in it. Remove TargetInfo::getEnumPolicy, as there is only
one policy that we support right now.
llvm-svn: 41548
|
| |
|
|
|
|
| |
arbitrarily complex control-flow in their subexpressions.
llvm-svn: 41547
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 41545
|
| |
|
|
| |
llvm-svn: 41544
|
| |
|
|
| |
llvm-svn: 41543
|
| |
|
|
| |
llvm-svn: 41542
|
| |
|
|
| |
llvm-svn: 41541
|
| |
|
|
| |
llvm-svn: 41540
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 41533
|
| |
|
|
|
| |
TODO: update the types of the constants and the enum.
llvm-svn: 41532
|
| |
|
|
| |
llvm-svn: 41531
|
| |
|
|
|
|
|
|
| |
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
|