Commit Graph

41107 Commits

Author SHA1 Message Date
Ted Kremenek dea8c07899 Don't emit divide-by-zero errors when we divide by an unknown (not
uninitialized) value. At this point we're just too imprecise.

llvm-svn: 47636
2008-02-26 22:27:51 +00:00
Arnold Schwaighofer 3bfca3e942 Refactor according to Evan's and Anton's suggestions.
llvm-svn: 47635
2008-02-26 22:21:54 +00:00
Devang Patel 8490c6935b regenerate
llvm-svn: 47634
2008-02-26 22:17:48 +00:00
Devang Patel a58b1c9b6b Remove unncessary ReturnInst constructors.
llvm-svn: 47633
2008-02-26 22:12:58 +00:00
Chris Lattner d6bd311506 Use a smallvector for inactiveCounts and initialize it lazily
instead of init'ing it maximally to zeros on entry.  getFreePhysReg
is pretty hot and only a few elements are typically used.  This speeds
up linscan by 5% on 176.gcc.

llvm-svn: 47631
2008-02-26 22:08:41 +00:00
Ted Kremenek dc1b0114ed Changed VarDecl::hasGlobalStorage() to be the negation of hasLocalStorage().
Before it was the negation of hasAutoStorage(), which is incorrect. 
"Register" storage for Decls do not indicate global variables.

llvm-svn: 47630
2008-02-26 21:57:11 +00:00
Bill Wendling d7a258d325 Rename PrintableName to Name.
llvm-svn: 47629
2008-02-26 21:47:57 +00:00
Anton Korobeynikov 9eeaae50ca Update per review. Patch by Mikhail Glushenkov!
llvm-svn: 47628
2008-02-26 21:44:24 +00:00
Lauro Ramos Venancio 01a72ff5d3 Implement codegen for the following static var init.
void g() {
  static char a[10];
  static char *b = a;
}

Now we can compile wget!

llvm-svn: 47627
2008-02-26 21:41:45 +00:00
Ted Kremenek e9f30d3288 Removed static analysis-specific diagnostics from DiagnosticKinds.def.
Use custom diagnostics for static analysis checkers.  Added warnings
for dereferencing uninitialized values and divide-by-zeroes.

llvm-svn: 47626
2008-02-26 21:31:18 +00:00
Bill Wendling c24ea4fb41 Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
would have been a Godsend here!

llvm-svn: 47625
2008-02-26 21:11:01 +00:00
Ted Kremenek c7ba873dc7 Removed hack with toggling the signedness flag of the APSInt stored
in an EnumConstantDecl.  This was made possible because of a recent fix
in the parser:

http://llvm.org/viewvc/llvm-project?rev=47581&view=rev

llvm-svn: 47624
2008-02-26 21:04:29 +00:00
Evan Cheng fa6b366892 Enable -coalescer-commute-instrs by default.
llvm-svn: 47623
2008-02-26 20:40:22 +00:00
Gabor Greif f120c62271 Do not treat Lexer.cpp as a generated file any more, let svn show it with a question mark if it is around.
llvm-svn: 47622
2008-02-26 20:36:35 +00:00
Nick Kledzik 07b4a62234 first commit of new LTO system. It is not hooked up in the llvm/tools/Makefile, so no one will build it be default yet
llvm-svn: 47621
2008-02-26 20:26:43 +00:00
Ted Kremenek bc54390803 Small fixes to shore up overhauling of transfer function logic for '&&' and '||.
llvm-svn: 47620
2008-02-26 19:40:44 +00:00
Devang Patel a736c001b6 Use SmallVector while constructing ReturnInst.
llvm-svn: 47619
2008-02-26 19:38:17 +00:00
Lauro Ramos Venancio 8af648ac55 Fix a bug in ConvertAsmString function.
llvm-svn: 47618
2008-02-26 19:19:58 +00:00
Ted Kremenek 9b69ed398b optimization: no longer create ExplodedNodes for IntegerLiteral and
CharacterLiteral expressions.

llvm-svn: 47617
2008-02-26 19:17:09 +00:00
Devang Patel 060e79c729 Avoid const_casts
llvm-svn: 47616
2008-02-26 19:15:26 +00:00
Gabor Greif aa2617206f fix http://llvm.org/bugs/show_bug.cgi?id=2097
llvm-svn: 47615
2008-02-26 19:13:21 +00:00
Devang Patel 85e38bfb2e Remove unnecessary getOperand/setOperand overriders.
Simplify getReturnValue()

llvm-svn: 47614
2008-02-26 19:08:13 +00:00
Ted Kremenek f3a4b9617e Major cleanup of the transfer function logic for '&&', '||', and '?'. We
now store in the state essentially which branch we took.  This removes
a bunch of bogus assumptions (and likely bugs), reduces the complexity of
the implementation, and facilitates more optimizations.

llvm-svn: 47613
2008-02-26 19:05:15 +00:00
Dan Gohman 9db0aa86d9 Avoid aborting on invalid shift counts.
llvm-svn: 47612
2008-02-26 18:50:50 +00:00
Devang Patel c38eb52787 Unify to ReturnInst::init() member functions.
llvm-svn: 47611
2008-02-26 18:49:29 +00:00
Eli Friedman 666bbe34f4 Fix for pr2093: direct operands aren't necessarily addresses, so don't
try to simplify them.

llvm-svn: 47610
2008-02-26 18:37:49 +00:00
Lauro Ramos Venancio c9fbd7301a Convert x86 target specific inline asm constraints to LLVM.
llvm-svn: 47609
2008-02-26 18:33:46 +00:00
Chris Lattner a39cff3aaa fix this test so that the fn name doesn't match the regex
llvm-svn: 47608
2008-02-26 18:13:51 +00:00
Devang Patel ae682fb940 Optimize most common case by using single RetVal in ReturnInst.
llvm-svn: 47607
2008-02-26 17:56:20 +00:00
Arnold Schwaighofer 1f17bf6171 Correct function comments.
llvm-svn: 47606
2008-02-26 17:50:59 +00:00
Chris Lattner 07c83cc86e Fix PR2096, a regression introduced with my patch last night. This
also fixes cfrac, flops, and 175.vpr

llvm-svn: 47605
2008-02-26 17:09:59 +00:00
Gabor Greif 3d9755f6ca Really feed llvm-as with the testcase, do not let it read from stdin. This fixes the hangs seen on solaris10.
llvm-svn: 47604
2008-02-26 13:37:13 +00:00
Gabor Greif 0a43601153 unbreak check-one
by supplying a dummy
"verbose" procedure

llvm-svn: 47603
2008-02-26 13:27:49 +00:00
Gabor Greif d5691031f5 While hunting for two hanging tests,
(on solaris10, which are:
  CodeGen/PowerPC/frounds.ll
  Transforms/InstCombine/2008-02-23-MulSub.ll)

I needed a tool to figure out which one is the guilty.

To this end I have added a verbosity
option to the test/Makefile.

It can be invoked thus:

gmake check TESTSUITE=CodeGen/PowerPC VERBOSE="-v -v"

(The number of "-v"s specifies the verbosity level.
 Instead of "-v" other aliases can be specified,
 please consult the dejagnu docs for info.)

At level >= 2 following line is logged for each
test, before running it:

ABOUT TO RUN: <test>.ll

llvm-svn: 47602
2008-02-26 12:08:55 +00:00
Duncan Sands 7cdbbfd067 Fix a nasty bug in LegalizeTypes (spotted in
CodeGen/PowerPC/illegal-element-type.ll): suppose
a node X is processed, and processing maps it to
a node Y.  Then X continues to exist in the DAG,
but with no users.  While processing some other
node, a new node may be created that happens to
be equal to X, and thus X will be reused rather
than a truly new node.  This can cause X to
"magically reappear", and since it is in the
Processed state in will not be reprocessed, so
at the end of type legalization the illegal node
X can still be present.  The solution is to replace
X with Y whenever X gets resurrected like this.

llvm-svn: 47601
2008-02-26 11:21:42 +00:00
Bill Wendling 80d6b87934 De-tabify
llvm-svn: 47600
2008-02-26 10:57:23 +00:00
Bill Wendling d188e03715 De-tabify.
llvm-svn: 47599
2008-02-26 10:53:30 +00:00
Bill Wendling 7bb51dfbb1 De-tabify.
llvm-svn: 47598
2008-02-26 10:51:52 +00:00
Bill Wendling 293285f883 Detabify
llvm-svn: 47597
2008-02-26 10:49:39 +00:00
Bill Wendling 8ff4320071 Detabify.
llvm-svn: 47596
2008-02-26 10:46:10 +00:00
Bill Wendling e65d2afdb1 De-tabify.
llvm-svn: 47595
2008-02-26 10:45:29 +00:00
Arnold Schwaighofer 69a10f4112 Add support for intermodule tail calls on x86/32bit with
GOT-style position independent code. Before only tail calls to
protected/hidden functions within the same module were optimized.
Now all function calls are tail call optimized.

llvm-svn: 47594
2008-02-26 10:21:54 +00:00
Arnold Schwaighofer b01b99ec78 Change the lowering of arguments for tail call optimized
calls. Before arguments that could overwrite each other were
explicitly lowered to a stack slot, not giving the register allocator
a chance to optimize. Now a sequence of copyto/copyfrom virtual
registers ensures that arguments are loaded in (virtual) registers
before they are lowered to the stack slot (and might overwrite each
other). Also parameter stack slots are marked mutable for
(potentially) tail calling functions.

llvm-svn: 47593
2008-02-26 09:19:59 +00:00
Evan Cheng 2ff0b0e681 This is possible:
vr1 = extract_subreg vr2, 3
...
vr3 = extract_subreg vr1, 2
The end result is vr3 is equal to vr2 with subidx 2.

llvm-svn: 47592
2008-02-26 08:03:41 +00:00
Chris Lattner e7c14013f5 Fix isNegatibleForFree to not return true for ConstantFP nodes
after legalize.  Just because a constant is legal (e.g. 0.0 in SSE) 
doesn't mean that its negated value is legal (-0.0).  We could make
this stronger by checking to see if the negated constant is actually
legal post negation, but it doesn't seem like a big deal.

llvm-svn: 47591
2008-02-26 07:04:54 +00:00
Ted Kremenek ce3563445c Fixed inverted condition.
llvm-svn: 47590
2008-02-26 03:44:25 +00:00
Evan Cheng 1da250097b Fix PR2076. CodeGenPrepare now sinks address computation for inline asm memory
operands into inline asm block.

llvm-svn: 47589
2008-02-26 02:42:37 +00:00
Ted Kremenek 5affb58dd6 Do include ParenExpr in the CFG; only include their subexpression.
llvm-svn: 47588
2008-02-26 02:37:08 +00:00
Evan Cheng ccc0c996a4 Refactor inline asm constraint matching code out of SDIsel into TargetLowering.
llvm-svn: 47587
2008-02-26 02:33:44 +00:00
Ted Kremenek 06b671097d Added lazy "symbolication" of parameter variables and global variables.
Added recording of divide-by-zero and divide-by-uninitialized nodes.

llvm-svn: 47586
2008-02-26 02:15:56 +00:00