Commit Graph

45446 Commits

Author SHA1 Message Date
Ted Kremenek 6357f05e19 Add Environment.cpp to the clangAnalysis Visual Studio project.
llvm-svn: 53258
2008-07-08 23:30:43 +00:00
Ted Kremenek 263054b5e1 Update Xcode project.
llvm-svn: 53257
2008-07-08 23:29:24 +00:00
Owen Anderson 45d4475fe5 Make the local register allocator compute (purely local) liveness information for itself
rather than depending on LiveVariables.  This decreases compile time from:
0.5909s (LV + Regalloc) to 0.421s (just regalloc).

llvm-svn: 53256
2008-07-08 22:24:50 +00:00
Dale Johannesen 07f5db0318 Testcase for debug info from data-only files.
This one is x86-32-Darwin specific.

llvm-svn: 53255
2008-07-08 21:57:56 +00:00
Dale Johannesen b9097a71d4 Make debug info come out in data-only files.
This is a question of the debugging setup code not
being called at the right time, and it's called from
target-dependent code for some reason.  I have only
attempted to fix Darwin, but I'm pretty sure it's
broken elsewhere; I'll leave that to people who can
test it.

llvm-svn: 53254
2008-07-08 21:56:22 +00:00
Dale Johannesen 45a4ec1a27 Remove some dead code.
llvm-svn: 53253
2008-07-08 21:53:43 +00:00
Ted Kremenek 852ed373aa Initial work on splitting the ValueState into an Environment, Store, and
Constraints. These concepts are already present in the current ValueState, but
the implementation is monolothic. Making ValueState more modular opens up new
design choices for customizing the analysis engine.

In the context of the analysis engine, the "Environment" is the binding between
Expr* (expressions) and intermediate symbolic values (RValues).

llvm-svn: 53252
2008-07-08 21:46:56 +00:00
Ted Kremenek 891c737e39 More info on filing static analysis bug reports.
llvm-svn: 53250
2008-07-08 21:25:35 +00:00
Nick Kledzik c232347cb8 fix dangling pointer and argv off by one errors. Add support for --disable-inlining
llvm-svn: 53249
2008-07-08 21:14:10 +00:00
Nuno Lopes e212c3ecc2 revert my bogus attempt to fix the comment. sorry for the noise.
llvm-svn: 53248
2008-07-08 21:13:06 +00:00
Evan Cheng 34ef1db87c Do not CSE DEBUG_LOC, DBG_LABEL, DBG_STOPPOINT, DECLARE, and EH_LABEL SDNode's. This improves compile time slightly at -O0 -g.
llvm-svn: 53246
2008-07-08 20:06:39 +00:00
Duncan Sands 0797e5bf05 Remove custom expansion from LegalizeTypes when doing
soft float: experiments show that targets aren't
expecting this for results or for operands.  Add
support select/select_cc result soft float and
correct operand soft float for these.

llvm-svn: 53245
2008-07-08 20:03:24 +00:00
Duncan Sands 360d689db3 Add missing select_cc libcall line, somehow omitted
in LegalizeTypes.

llvm-svn: 53244
2008-07-08 20:00:05 +00:00
Chris Lattner 350e41760a improve comment
llvm-svn: 53243
2008-07-08 18:47:38 +00:00
Chris Lattner 4f1a9ffc09 'Optimize' test
llvm-svn: 53242
2008-07-08 18:33:33 +00:00
Chris Lattner 2528d63ba7 Add a new hidden option to the interpreter to cause it to print
out every volatile load and store.  This is useful for tracking 
down insane volatile memory bugs.

llvm-svn: 53241
2008-07-08 17:25:49 +00:00
Chris Lattner 501d78fdc0 Fix PR2496, a really nasty bug which involved sinking volatile loads
into phis.  This is actually the same bug as PR2262 /
2008-04-29-VolatileLoadDontMerge.ll, but I missed checking the first 
predecessor for multiple successors.  Testcase here:
InstCombine/2008-07-08-VolatileLoadMerge.ll

llvm-svn: 53240
2008-07-08 17:18:32 +00:00
Chris Lattner 855d2c38ec new testcase for PR2496
llvm-svn: 53239
2008-07-08 17:18:05 +00:00
Anders Carlsson 0166481455 Fix small bug. The evaluator now works well enough to pass all tests
llvm-svn: 53238
2008-07-08 16:49:00 +00:00
Evan Cheng 0a1e672dff Unbreak C++ tests on x86 Darwin.
llvm-svn: 53237
2008-07-08 16:40:43 +00:00
Owen Anderson c76bacbffb Global variables beginning with \01 have special meaning on Darwin, so we need to remove
the name prefix when we change them from internal to external.  This allows bugpointing
of codegen miscompilations to work more reliably on Darwin.

llvm-svn: 53236
2008-07-08 16:38:42 +00:00
Anders Carlsson 4a3585b7c0 More constant expression work.
llvm-svn: 53235
2008-07-08 15:34:11 +00:00
Anders Carlsson 9c18165448 Move out some methods.
llvm-svn: 53234
2008-07-08 14:35:21 +00:00
Anders Carlsson b5ad021cd7 More work.
llvm-svn: 53233
2008-07-08 14:30:00 +00:00
Duncan Sands 12525efdfc LegalizeTypes support for FP_ROUND and FP_EXTEND
soft float.

llvm-svn: 53231
2008-07-08 10:50:55 +00:00
Duncan Sands acf0189b4b Testcase for PR2520.
llvm-svn: 53230
2008-07-08 10:11:36 +00:00
Duncan Sands 66336db096 Add some helpers for manipulating function
parameter attributes.

llvm-svn: 53228
2008-07-08 09:41:30 +00:00
Duncan Sands 441080f7f2 Pacify gcc-4.3.
llvm-svn: 53227
2008-07-08 09:33:14 +00:00
Duncan Sands 825bde45cc Note that 'nest' only applies to pointers.
llvm-svn: 53226
2008-07-08 09:27:25 +00:00
Matthijs Kooijman 328494c428 Add CallSite::getArgumentNo() to be able to translate an operand number into a
argument number.

llvm-svn: 53225
2008-07-08 08:51:47 +00:00
Matthijs Kooijman ea017c77ff Add CallSite::getArgumentOffset() to hide the differences in operands betwen
Call and Invoke in a single method instead of having it hardcoded in multiple
places.

llvm-svn: 53224
2008-07-08 08:50:32 +00:00
Duncan Sands 78c8872d87 Add some convenience methods for manipulating
call attributes.

llvm-svn: 53223
2008-07-08 08:38:44 +00:00
Seo Sanghyeon 1904f44757 Compilation fix
llvm-svn: 53222
2008-07-08 07:23:12 +00:00
Anders Carlsson 374b93df76 Port more of Eli's evaluator over. This makes the int evaluator handle binary and unary operators.
llvm-svn: 53221
2008-07-08 05:49:43 +00:00
Chris Lattner d137a08b0d Fix three bugs:
1) evaluate [v]fcmp true/false with undefs to true or false instead
   of undef.
2) fix vector comparisons with undef to return a vector result instead 
   of i1
3) fix vector comparisons with evaluatable results to return vector
   true/false instead of i1 true/false (PR2529)

llvm-svn: 53220
2008-07-08 05:46:34 +00:00
Anders Carlsson 0a1707c6ba Commit beginnings of int evaluator. Currently not used.
llvm-svn: 53219
2008-07-08 05:13:58 +00:00
Chris Lattner fc12d2e5f3 clarify :)
llvm-svn: 53218
2008-07-08 05:12:37 +00:00
Nick Lewycky 3c947045ef Expand SCEVUDiv of power of 2 to a lshr instruction.
llvm-svn: 53217
2008-07-08 05:05:37 +00:00
Anders Carlsson ba123cdb9c Add LValue setters for APValue
llvm-svn: 53216
2008-07-08 04:35:19 +00:00
Evan Cheng 534952224c Avoid unnecessary string construction during asm printing.
llvm-svn: 53215
2008-07-08 00:55:58 +00:00
Nick Kledzik 7c6f23fb9d add _lto_codegen_debug_options so that linker can use it
llvm-svn: 53213
2008-07-07 23:24:06 +00:00
Dan Gohman 3b46030375 Pool-allocation for MachineInstrs, MachineBasicBlocks, and
MachineMemOperands. The pools are owned by MachineFunctions.

This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.

llvm-svn: 53212
2008-07-07 23:14:23 +00:00
Dan Gohman 7f8b6d5f80 Pool-allocation for SDNodes. The pool is allocated once for each function,
and reused across SelectionDAGs.

This drastically reduces the number of calls to malloc/free made during
instruction selection, and improves memory locality.

llvm-svn: 53211
2008-07-07 23:02:41 +00:00
Dan Gohman e5932e5a3d Add some basic Pool-allocation infrastructure. This adds a Recycler class,
for handling bookkeeping for deleted objects, as well as the alist class
template, for keeping lists of objects allocated from Recyclers, and some
related utilities.

llvm-svn: 53210
2008-07-07 22:58:06 +00:00
Evan Cheng 0189604b0a Clean up PPC register specification.
llvm-svn: 53209
2008-07-07 22:22:07 +00:00
Evan Cheng 90a92af176 ATT asm printer just print register AsmName's instead of calling tolower on each charater of Name. This speeds it up by 10%.
llvm-svn: 53208
2008-07-07 22:21:06 +00:00
Evan Cheng 4a898c0b11 TargetRegisterDesc::Name field is the same as the abstract register name. There is no need for targets to specify register names in addition to their AsmName's.
llvm-svn: 53207
2008-07-07 22:19:41 +00:00
Bill Wendling b46e5165bf Use the canonical way to get an empty structure.
llvm-svn: 53206
2008-07-07 21:41:57 +00:00
Dan Gohman d6ec05077f Refactor the tablegen DAGISelEmitter code for outputing calls to
getTargetNode and SelectNodeTo to reduce duplication, and to
make some of the getTargetNode code available to SelectNodeTo.
Use SelectNodeTo instead of getTargetNode in several new
interesting cases, as it mutates nodes in place instead of
creating new ones.

This triggers some scheduling behavior differences due to nodes
being presented to the scheduler in a different order. Some of the
arbitrary scheduling decisions it makes are now arbitrarily made
differently. This is visible in CodeGen/PowerPC/LargeAbsoluteAddr.ll,
where a trivial scheduling difference led to a trivial register
allocation difference.

llvm-svn: 53203
2008-07-07 21:00:17 +00:00
Bill Wendling 1214860a78 Use StringMap for greater justice!
llvm-svn: 53202
2008-07-07 20:59:31 +00:00