Commit Graph

51649 Commits

Author SHA1 Message Date
Devang Patel f5d5360065 Ignore malformed global variable debug info.
llvm-svn: 81055
2009-09-04 23:59:07 +00:00
Benjamin Kramer 21d15aa591 Prune #includes.
llvm-svn: 81052
2009-09-04 22:45:23 +00:00
Benjamin Kramer 865f7deab5 Remove an unneeded call to c_str().
llvm-svn: 81051
2009-09-04 22:44:03 +00:00
Kevin Enderby 9c0f7fc746 Added AsmToken enum constants to MCAsmLexer.h for '[', ']', '{', and '}' in
preparation of supporting other targets. Then changed the lexer to parse these
as tokens.

llvm-svn: 81050
2009-09-04 22:40:31 +00:00
Kevin Enderby f92f9909c4 Added the AsmToken::Hash enum constant to MCAsmLexer.h in preparation of
supporting other targets.  Changed the code to pass MCAsmInfo to the parser
and the lexer.  Then changed the lexer to use CommentString from MCAsmInfo
instead of a literal '#' character.

llvm-svn: 81046
2009-09-04 21:45:34 +00:00
Devang Patel a33c5a922d While replacing an MDNode elment, properly update MDNode's operand list.
MDNode's operand list does not include all elements.

llvm-svn: 81045
2009-09-04 21:32:05 +00:00
Andreas Neustifter b7d704dac3 Prevent warnings on compilers for which its not clear that assert won't return.
llvm-svn: 81044
2009-09-04 21:22:04 +00:00
Lang Hames 7af06f63bf Removed yet another std::ostream reference.
llvm-svn: 81042
2009-09-04 21:03:07 +00:00
Lang Hames bba76db033 Removed some junk and a std::ostream operator that was hanging around.
llvm-svn: 81041
2009-09-04 20:54:51 +00:00
Lang Hames 3fffe62177 Replaces uses of unsigned for indexes in LiveInterval and VNInfo with
a new class, MachineInstrIndex, which hides arithmetic details from
most clients. This is a step towards allowing the register allocator
to update/insert code during allocation.

llvm-svn: 81040
2009-09-04 20:41:11 +00:00
Dale Johannesen d14b67e931 Test for llvm-gcc commit 81037.
llvm-svn: 81038
2009-09-04 20:19:09 +00:00
Andreas Neustifter 5673c0aace Updated tests to use ProfileVerifer to test ProfileLoader and ProfileEstimator.
(Keep disabled test disabled until selfhosted build issue is resolved.)

llvm-svn: 81008
2009-09-04 17:21:59 +00:00
Andreas Neustifter 8f166f6a36 Cleaned up ProfileVerifierPass.
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086219.html)

llvm-svn: 81007
2009-09-04 17:15:10 +00:00
Andreas Neustifter 18156bd75c Converted MaximumSpanningTree algorithm to a generic template, this could go
into llvm/ADT.

llvm-svn: 81001
2009-09-04 12:34:44 +00:00
Dan Gohman 0c2477c26b Include optional subclass flags, such as inbounds, nsw, etc., in the
Constant uniquing tables. This allows distinct ConstantExpr objects
with the same operation and different flags.

Even though a ConstantExpr "a + b" is either always overflowing or
never overflowing (due to being a ConstantExpr), it's still necessary
to be able to represent it both with and without overflow flags at
the same time within the IR, because the safety of the flag may
depend on the context of the use. If the constant really does overflow,
it wouldn't ever be safe to use with the flag set, however the use
may be in code that is never actually executed.

This also makes it possible to merge all the flags tests into a single test.

llvm-svn: 80998
2009-09-04 12:08:11 +00:00
Duncan Sands bc74cae983 Use delete[] to match new[] (found by valgrind).
llvm-svn: 80997
2009-09-04 11:59:43 +00:00
Evan Cheng 3d2fce01aa Run branch folding if if-converter make some transformations.
llvm-svn: 80994
2009-09-04 07:47:40 +00:00
Evan Cheng fc4eef183b Fix comment for consistency sake.
llvm-svn: 80993
2009-09-04 07:46:30 +00:00
Daniel Dunbar 30e30587eb Remove stale greps.
llvm-svn: 80986
2009-09-04 05:07:52 +00:00
Daniel Dunbar 59eb5ef136 Update lib deps.
llvm-svn: 80985
2009-09-04 05:07:44 +00:00
Bob Wilson 36d8c75eca Convert tests to FileCheck.
llvm-svn: 80983
2009-09-04 04:07:19 +00:00
Jim Grosbach 1eaa90b901 Whitespace cleanup
llvm-svn: 80978
2009-09-04 01:38:51 +00:00
Eric Christopher a3438c8bc2 If there's a calling convention attach it to the rewind function call.
llvm-svn: 80976
2009-09-04 01:14:14 +00:00
Bob Wilson e072f8eedb Convert a test to FileCheck.
llvm-svn: 80975
2009-09-04 00:32:31 +00:00
Evan Cheng 1f6e5eb07b Funky indentation.
llvm-svn: 80971
2009-09-03 23:54:22 +00:00
Daniel Dunbar a48a2f6055 Revert "--- Reverse-merging r80908 into '.':", I already "fixed" this.
llvm-svn: 80970
2009-09-03 23:40:10 +00:00
Dan Gohman e4ca02da1b Revert 80959. It isn't sufficient to solve the full problem. And it
introduced regressions in the Ocaml bindings tests.

llvm-svn: 80969
2009-09-03 23:34:49 +00:00
Erick Tryzelaar 19e1eec248 Replace ocamlc tests with ocamlopt tests since they're less noisy.
There's a bug with ocamlc that uses "char*" instead of "const char*" for
global string variables. This causes g++ to be very noisy when linking
ocamlc programs. That's why the ocaml test used to cat to /dev/null.
ocamlopt doesn't have this problem, so we can get rid of the >/dev/null,
which may obscure some problems.

llvm-svn: 80968
2009-09-03 23:27:31 +00:00
Bill Wendling 92291f6ad0 --- Reverse-merging r80908 into '.':
D    test/Analysis/Profiling

--- Reverse-merging r80907 into '.':
U    lib/Analysis/ProfileInfoLoaderPass.cpp

Attempt to remove failure in the self-hosting build bot.

llvm-svn: 80966
2009-09-03 23:13:46 +00:00
Daniel Dunbar bc52e4fe73 Add test for PR4873, which works for me.
llvm-svn: 80965
2009-09-03 22:57:02 +00:00
Dan Gohman aa92dc1e61 LLVM currently represents floating-point negation as -0.0 - x. Fix
FastISel to recognize this pattern and emit a floating-point
negation using xor.

llvm-svn: 80963
2009-09-03 22:53:57 +00:00
David Goodwin 1d5d245453 Don't crash when target has no itineraries.
llvm-svn: 80962
2009-09-03 22:48:51 +00:00
Bill Wendling ea0185fe91 If we've pushed registers onto the stack, but aren't adjusting the stack pointer
(i.e., there are no local variables and stuff), we still need to output FDE
information for the pushed registers.

llvm-svn: 80960
2009-09-03 22:19:22 +00:00
Dan Gohman 2a53b30f6d Remove the API for creating ConstantExprs with the nsw, nuw, inbounds,
and exact flags. Because ConstantExprs are uniqued, creating an
expression with this flag causes all expressions with the same operands
to have the same flag, which may not be safe. Add, sub, mul, and sdiv
ConstantExprs are usually folded anyway, so the main interesting flag
here is inbounds, and the constant folder already knows how to set the
inbounds flag automatically in most cases, so there isn't an urgent need
for the API support.

This can be reconsidered in the future, but for now just removing these
API bits eliminates a source of potential trouble with little downside.

llvm-svn: 80959
2009-09-03 22:17:40 +00:00
David Goodwin 6c08cfcfa0 Create our own block initializer for kill fixups as the scheduling one wasn't doing the right thing.
llvm-svn: 80958
2009-09-03 22:15:25 +00:00
David Goodwin d93c668f00 Calls clobber FPSCR.
llvm-svn: 80956
2009-09-03 22:12:28 +00:00
Ted Kremenek 9dee94f8fb Make ImmutableMap/ImmutableSet quicker by only canonicalizing the tree after an
Add or Remove operation complete, and not while building the intermediate tree.
This trades a little bit more memory usage for less accesses to the FoldingSet.  On a benchmark for the clang static analyzer, this shaves off another 13% of execution time when using field/array sensitivity.

llvm-svn: 80955
2009-09-03 22:07:30 +00:00
Daniel Dunbar d8df76eaeb Disable some parts of the profiling-tool-chain test, which is currently failing
on a self-hosted build (although it seems to work on non-self hosted). I'll work
with Andreas to figure this out.

llvm-svn: 80947
2009-09-03 21:09:53 +00:00
Daniel Dunbar abf2bb683a Remove dead greps.
llvm-svn: 80946
2009-09-03 20:59:02 +00:00
Bob Wilson 5c7d9ca53d Overhaul the TwoAddressInstructionPass to simplify the logic, especially
for the complicated case where one register is tied to multiple destinations.
This avoids the extra scan of instruction operands that was introduced by
my recent change.  I also pulled some code out into a separate
TryInstructionTransform method, added more comments, and renamed some
variables.

Besides all those changes, this takes care of a FIXME in the code regarding
an assumption about there being a single tied use of a register when
converting to a 3-address form.  I'm not aware of cases where that assumption
is violated, but the code now only attempts to transform an instruction,
either by commuting its operands or by converting to a 3-address form,
for the simple case where there is a single pair of tied operands.

llvm-svn: 80945
2009-09-03 20:58:42 +00:00
Dan Gohman ed8f32022e Smallvectorize switchExitBlocks.
llvm-svn: 80942
2009-09-03 20:36:13 +00:00
Devang Patel 794a40dd61 There is not any need to copy metadata while merging modules.
llvm-svn: 80941
2009-09-03 20:35:57 +00:00
Dan Gohman d0d5e685da Recognize more opportunities to use SSE min and max instructions,
swapping the operands if necessary.

llvm-svn: 80940
2009-09-03 20:34:31 +00:00
Mon P Wang eadd21ea3c Test cases for vector shifts changes r80935
Changed the old vector shift test to use FileCheck

llvm-svn: 80936
2009-09-03 19:57:35 +00:00
Mon P Wang 3e82117210 Fixed a few problems with vector shifts
- when transforming a vector shift of a non-immediate scalar shift amount, zero
    extend the i32 shift amount to i64 since the vector shift reads 64 bits
  - when transforming i16 vectors to use a vector shift, zero extend i16 shift amount
  - improve the code quality in some cases when transforming vectors to use a vector shift

llvm-svn: 80935
2009-09-03 19:56:25 +00:00
Dan Gohman 319cc69f88 Add a -disable-16bit flag and associated support for experimenting with
disabling the use of 16-bit operations on x86. This doesn't yet work for
inline asms with 16-bit constraints, vectors with 16-bit elements,
trampoline code, and perhaps other obscurities, but it's enough to try
some experiments.

llvm-svn: 80930
2009-09-03 17:18:51 +00:00
Kevin Enderby 7d91218c75 Removed the non-target independent AsmToken::Register enum constant
from MCAsmLexer.h in preparation of supporting other targets.  Changed the
X86AsmParser code to reflect this by removing AsmLexer::LexPercent and looking
for AsmToken::Percent when parsing in places that used AsmToken::Register.
Then changed X86ATTAsmParser::ParseRegister to parse out registers as an
AsmToken::Percent followed by an AsmToken::Identifier.

llvm-svn: 80929
2009-09-03 17:15:07 +00:00
Devang Patel 85dac4771f Use WeakVH to hold dead mdnodes. Check use_empty() before deleting a node.
llvm-svn: 80928
2009-09-03 17:03:47 +00:00
Dan Gohman 728a81ab18 Make bugpoint use ParseIRFile instead of doing the same thing manually.
llvm-svn: 80927
2009-09-03 16:32:58 +00:00
Dan Gohman 4c1bdcf5d7 Add a verifyAnalysis to LoopInfo, LoopSimplify, and LCSSA form that verify
that these passes are properly preserved.

Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.

llvm-svn: 80926
2009-09-03 16:31:42 +00:00
Dan Gohman a7326b5ba5 Remove some unnecessary -f options.
llvm-svn: 80924
2009-09-03 16:11:53 +00:00
Dan Gohman 3a0ce3e639 Move getUniqueExitBlocks from LoopBase to Loop, since they depend on
LoopSimplify form, which is currently only available on Loops (and
not MachineLoops). Also, move the code out of the header file.

llvm-svn: 80923
2009-09-03 16:10:48 +00:00
Dan Gohman 0054b460ff Use IRReader.h in opt, to support reading of LLVM Assembly files directly.
llvm-svn: 80922
2009-09-03 16:00:08 +00:00
Dan Gohman 22571485b3 Change PHINode::hasConstantValue to have a DominatorTree argument
instead of a bool argument, and to do the dominator check itself.
This makes it eaiser to use when DominatorTree information is
available.

llvm-svn: 80920
2009-09-03 15:34:35 +00:00
Dan Gohman 96a26bd35a Don't try to verify a LoopPass analysis if the loop has been deleted.
llvm-svn: 80919
2009-09-03 15:09:24 +00:00
Dan Gohman 237d9e5213 Remove references to expression "handles", which are no longer used.
llvm-svn: 80918
2009-09-03 15:00:26 +00:00
Benjamin Kramer 13d048fdff CppBackend: avoid printing unnecessary whitespace.
llvm-svn: 80917
2009-09-03 14:58:24 +00:00
Duncan Sands 0edc7100ba Keep track of how many memmove calls were turned into
memcpy calls.

llvm-svn: 80915
2009-09-03 13:37:16 +00:00
Andreas Neustifter d194e13b8d Fix build warning.
llvm-svn: 80912
2009-09-03 09:11:10 +00:00
Andreas Neustifter 7e86c3856b Code Cleanup.
Removed inverted flag form MaximumSpanningTree, also do not handle so much
information to MaximumSpanningTree.

llvm-svn: 80911
2009-09-03 08:52:52 +00:00
Daniel Dunbar 213f8f4860 Filter out -fno-rtti from CXXFLAGS as well (in an expensive checks build).
llvm-svn: 80910
2009-09-03 08:41:19 +00:00
Andreas Neustifter b68e921c25 Code Cleanup.
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086139.html)

llvm-svn: 80909
2009-09-03 08:41:05 +00:00
Daniel Dunbar f563ac919b Reapply profiling tests.
llvm-svn: 80908
2009-09-03 07:38:00 +00:00
Daniel Dunbar 0dc21e4713 Remove undefined behavior when loading optimal edge profile info.
llvm-svn: 80907
2009-09-03 07:37:42 +00:00
Chris Lattner 51a0712538 don't call getOffset() on jump tables, this fixes three failing olden benchmarks
with the new asmprinter.

llvm-svn: 80906
2009-09-03 07:36:42 +00:00
Chris Lattner c7b00730ad Implement support for X86II::MO_GOT_ABSOLUTE_ADDRESS. We get very
different formatting from the old asmprinter, but it should be 
semantically the same.  We used to get:

	popl	%eax
	addl	$_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$6.$piclabel], %eax
...

Now we get:

	popl	%eax
.Lpicbaseref6:
	addl	$(_GLOBAL_OFFSET_TABLE_ + (.Lpicbaseref6 - .Lllvm$6.$piclabel)), %eax
...

llvm-svn: 80905
2009-09-03 07:30:56 +00:00
Evan Cheng 1b38952c99 Reference to hidden symbols do not have to go through non-lazy pointer in non-pic mode. rdar://7187172.
llvm-svn: 80904
2009-09-03 07:04:02 +00:00
Nick Lewycky 88214fbd12 Remove VISIBILITY_HIDDEN from this file.
llvm-svn: 80903
2009-09-03 06:43:15 +00:00
Chris Lattner cdb6fd2c7c merge all the basic linux/32 pic tests together into one test.
llvm-svn: 80902
2009-09-03 06:29:23 +00:00
Chris Lattner 4f101f98d1 rename test
llvm-svn: 80901
2009-09-03 06:16:49 +00:00
Chris Lattner 438380aa4d use a darwin triple
llvm-svn: 80900
2009-09-03 06:15:11 +00:00
Chris Lattner 41bf56de79 TAI -> MAI
llvm-svn: 80899
2009-09-03 06:13:54 +00:00
Chris Lattner 17b3a93ad0 adjust expected lines.
llvm-svn: 80898
2009-09-03 06:13:45 +00:00
Chris Lattner cdeb8d147d improve comments.
llvm-svn: 80897
2009-09-03 06:00:00 +00:00
Chris Lattner 1945453843 fix MCSymbol printing to exactly match the normal mangler rules so
we can diff .s files.

llvm-svn: 80894
2009-09-03 05:57:47 +00:00
Chris Lattner 7a53b96394 remove extraneous hack.
llvm-svn: 80893
2009-09-03 05:54:00 +00:00
Daniel Dunbar c3a0aba120 Make these functions static and local.
llvm-svn: 80892
2009-09-03 05:47:34 +00:00
Daniel Dunbar 76628def06 Tweak comment.
llvm-svn: 80891
2009-09-03 05:47:22 +00:00
Chris Lattner f4366a3998 Thread an MCAsmInfo pointer through the various MC printing APIs,
and fix a few things using << on MCSymbols to use ->print(). No
functionality change other than unbreaking my previous patch.

llvm-svn: 80890
2009-09-03 05:46:51 +00:00
Chris Lattner 1a67fe8862 just use dump()
llvm-svn: 80889
2009-09-03 05:39:09 +00:00
Chris Lattner 1800dff44e inline insertion operators.
llvm-svn: 80888
2009-09-03 05:33:01 +00:00
Chris Lattner 27266f164f In C++, code is not allowed to call main. In C it is, this
simplifylibcalls optimization is thus valid for C++ but not C.
It's not important enough to worry about for C++ apps, so just
remove it.

rdar://7191924

llvm-svn: 80887
2009-09-03 05:19:59 +00:00
Chris Lattner 954b9cd41f merge globaladdress symbol processing stuff into other stuff. Now
all global variable operand flag processing stuff is shared between
different operand types.

llvm-svn: 80886
2009-09-03 05:06:07 +00:00
Evan Cheng 155deabbcb Unbreak x86_64 build.
llvm-svn: 80885
2009-09-03 05:01:00 +00:00
Chris Lattner 6370d5606c Split the "operand -> symbol" logic from the "get offset and other munging
from operand" logic.  GlobalAddress still todo.

llvm-svn: 80884
2009-09-03 04:56:20 +00:00
Chris Lattner 5daf61910e implement lowering support for constant pool index operands, this gets a bunch more
olden programs working.

llvm-svn: 80881
2009-09-03 04:44:53 +00:00
Evan Cheng 47455a79ae X86JITInfo::getLazyResolverFunction() should not read cpu id to determine whether sse is available. Just use consult subtarget.
No functionality changes.

llvm-svn: 80880
2009-09-03 04:37:05 +00:00
Ted Kremenek 231dd7169d Set the 'cached digest' flag after computing the digest for an
ImutAVLTree.  This was accidentally left out, and essentially caused
digest caching to be ignored in ImmutableMap and ImmutableSet (this
bug was detected from shark traces that showed ComputeDigest was in
the hot path in the clang static analyzer).

This reduces the running time of the clang static analyzer on an
example benchmark by ~32% for both RegionStore (field-sensitivty) and
BasicStore (without field-sensitivity).

llvm-svn: 80877
2009-09-03 04:21:34 +00:00
Chris Lattner 11c989cc47 update test for alignment value in hex
llvm-svn: 80876
2009-09-03 04:03:44 +00:00
Chris Lattner f16a122213 output alignment value in hex so that we get:
.align 3, 0x90
instead of,
  .align 3, 144

suggested by eric.

llvm-svn: 80875
2009-09-03 04:01:10 +00:00
Chris Lattner 620713c5b4 simplify this by using SmallString::str(), much nicer!
llvm-svn: 80874
2009-09-03 03:54:02 +00:00
Lang Hames 0b3720b3c3 Fixed a test that ensures the LocalRewriter does not attempt to
avoid reloads by reusing clobbered registers.

This was causing issues in 256.bzip2 when compiled with PIC for
a while (starting at r78217), though the problem has since been masked. 

llvm-svn: 80872
2009-09-03 02:52:02 +00:00
Gabor Greif 2d60e1ec0c back out my recent commit (r80858), it seems to break self-hosting buildbot's stage 2 configure
llvm-svn: 80871
2009-09-03 02:02:59 +00:00
Devang Patel f7188325ef Now Bitcode reader bug is fixed. Reapply 80839.
Use CallbackVH, instead of WeakVH, to hold MDNode elements.
Use FoldingSetNode to unique MDNodes in a context.
Use CallbackVH hooks to update context's MDNodeSet appropriately.

llvm-svn: 80868
2009-09-03 01:39:20 +00:00
Devang Patel 116b4a0cb3 Add new value for given index in MDValuePtrs.
llvm-svn: 80867
2009-09-03 01:38:02 +00:00
Daniel Dunbar 18d6959f39 Improve llvm::getHostTriple for some cases where the LLVM_HOSTTRIPLE is not
reliable.

llvm-svn: 80863
2009-09-03 01:10:13 +00:00
Gabor Greif 14dfba6d66 re-commit r66920 (which has been backed out in r66953) I may have more luck this time. I'll back out if needed...
llvm-svn: 80858
2009-09-03 00:18:58 +00:00
Sean Callanan f400442927 Added opaque 32-, 48-, and 80-bit memory operand types to the X86
instruction tables to support segmented addressing (and other objects
of obscure type).
Modified the X86 assembly printers to handle these new operand types.
Added JMP and CALL instructions that use segmented addresses.

llvm-svn: 80857
2009-09-03 00:04:47 +00:00
Daniel Dunbar fc39586b4f Show derived host triple in --version.
llvm-svn: 80855
2009-09-02 23:52:38 +00:00
Shantonu Sen 96995e8179 Improve support for cross-hosted builds of LLVM.
--build=triple and other configure options are passed
to the BuildTools/ sub-invocation more consistently

llvm-svn: 80854
2009-09-02 23:52:23 +00:00
Douglas Gregor ef7c1fd909 Unbreak my CMake build. Say you'll link again.
llvm-svn: 80842
2009-09-02 22:45:31 +00:00
Devang Patel c180029be4 Revert 80839 for now. It causes test failures.
llvm-svn: 80841
2009-09-02 21:49:26 +00:00
Devang Patel 36309cd391 Use CallbackVH, instead of WeakVH, to hold MDNode elements.
Use FoldingSetNode to unique MDNodes in a context.
Use CallbackVH hooks to update context's MDNodeSet appropriately.

llvm-svn: 80839
2009-09-02 21:22:09 +00:00
Anton Korobeynikov f0da41c3e4 More missed vdup patterns
llvm-svn: 80838
2009-09-02 21:21:28 +00:00
Dan Gohman c76bfb777e Switch llc from ParseBitcodeFile to ParseIRFile. This lets llc
transparently read either LLVM Assembly or LLVM Bitcode files.

llvm-svn: 80829
2009-09-02 19:35:19 +00:00
Dan Gohman a7e8799c72 Add a comment noting the memory ownership rules.
llvm-svn: 80827
2009-09-02 19:21:56 +00:00
Dan Gohman b7cb99bf50 Add convenience functions for reading in LLVM IR that autodetect
and LLVM Assembly and LLVM Bitcode and automatically call the
corresponding reader.

llvm-svn: 80809
2009-09-02 17:54:06 +00:00
Chris Lattner 7bd37b47c8 switch from std::string to SmallString + raw_svector_ostream.
llvm-svn: 80807
2009-09-02 17:37:38 +00:00
Chris Lattner 74f4ca7cb2 split mcinst lowering stuff out to its own file.
llvm-svn: 80806
2009-09-02 17:35:12 +00:00
Dan Gohman 957b1316e6 Fix the syntax of add/sub/mul nsw/nuw and sdiv exact.
llvm-svn: 80805
2009-09-02 17:31:42 +00:00
Dan Gohman ae58e72018 Add const qualifiers for isBitcodeWrapper, and add new functions
isRawBitcode and isBitcode to allow clients to test whether a given
memory buffer holds a bitcode image.

llvm-svn: 80804
2009-09-02 17:21:29 +00:00
Dan Gohman 77ac99dc31 Refactor common code from ParseAssemblyString and ParseAssemblyFile,
to expose a low-level interface for parsing from an existing MemoryBuffer.

llvm-svn: 80803
2009-09-02 17:18:19 +00:00
Dan Gohman 87d69e80b1 Add const qualifiers to dominates' arguments.
llvm-svn: 80801
2009-09-02 17:05:05 +00:00
Andreas Neustifter 69e2afe030 Removed temporarily because of breaking Darwin builds.
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086214.html)

llvm-svn: 80799
2009-09-02 16:47:24 +00:00
Bob Wilson bc751989f1 Rearrange code to eliminate redundancy and avoid gotos.
llvm-svn: 80798
2009-09-02 16:35:35 +00:00
Nuno Lopes 2baa6a38d2 plug another leak in LLParser::PerFunctionState::SetInstName()
llvm-svn: 80792
2009-09-02 15:02:57 +00:00
Andreas Neustifter da6b0fa8ed Changed profiling-tool-chain.ll test to use optimal-edge-profiling instead of
edge-profiling, this is more useful since the loading of the
optimal-edge-profiling is more complicated.
The edge-profiling is tested in edge-profiling.ll where only the
instrumentation is tested.

llvm-svn: 80791
2009-09-02 14:24:08 +00:00
Nuno Lopes 2fcee70aeb plug memory leak in LLParser::PerFunctionState::SetInstName() by deleting a value after replacing it
llvm-svn: 80790
2009-09-02 14:22:03 +00:00
Andreas Neustifter ae866b0c66 Sort edges in MaximumSpanningTree more stable in case of equal weight.
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090824/085890.html)

llvm-svn: 80789
2009-09-02 14:03:11 +00:00
Andreas Neustifter 964fa2bdac Changed set of BlocksToInstrument to set of InsertedBlocks that do not have to
be instrumented.

llvm-svn: 80788
2009-09-02 13:59:05 +00:00
Andreas Neustifter 4469c164d0 Code cleanups and added comments.
llvm-svn: 80781
2009-09-02 12:38:39 +00:00
Torok Edwin 82131d6ad7 Opaque types didn't work if llvm_is_multithreaded().
AlwaysOpaqueTy is always NULL at this point, and it causes an assertion failure.
Fix it by using the just constructed tmp instead.

llvm-svn: 80780
2009-09-02 12:23:05 +00:00
Torok Edwin 18e03dd70c Fix DbgStopPointInst->getFileName/getDirectory, broken by the MDNodification in
r80406, and readd a -print-dbginfo test.

llvm-svn: 80778
2009-09-02 11:13:56 +00:00
Sandeep Patel 68c5f477fa Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.
llvm-svn: 80773
2009-09-02 08:44:58 +00:00
Chris Lattner defbbc9105 Fix month.
llvm-svn: 80769
2009-09-02 06:34:22 +00:00
Chris Lattner 4916267c97 fix PR4815: some cases where DeleteDeadInstruction can delete
the instruction BBI points to.

llvm-svn: 80768
2009-09-02 06:31:02 +00:00
Chris Lattner 09a79dcfdf clean up this code a bit.
llvm-svn: 80767
2009-09-02 06:15:37 +00:00
Chris Lattner 2dd09dbdf7 eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861
llvm-svn: 80766
2009-09-02 06:11:42 +00:00
Chris Lattner d5f4fcceae refactor select 'sched insertion' out to its own method.
llvm-svn: 80764
2009-09-02 05:57:00 +00:00
Chris Lattner cc8c581a5b Add support for modeling whether or not the processor has support for
conditional moves as a subtarget feature.  This is the easy part of 
PR4841.

llvm-svn: 80763
2009-09-02 05:53:04 +00:00
Chris Lattner 950e60ea97 fix PR4848 an infinite loop when indexing down through a recursive gep
and we get the original pointer type.  This doesn't mean that we're
at the first pointer being indexed.  Correct the predicate.

llvm-svn: 80762
2009-09-02 05:35:45 +00:00
Chris Lattner 64b5842986 fix PR4837, some bugs folding vector compares. These
return a vector of i1, not i1 itself.

llvm-svn: 80761
2009-09-02 05:12:37 +00:00
Chris Lattner 65fb597793 revert my patch, duncan points out what is wrong with my logic. Add
a comment so that I don't change this in the future :)

llvm-svn: 80760
2009-09-02 04:39:04 +00:00
Chris Lattner 8f23276431 one more try at making this simpler, hopefully it won't break everything :)
llvm-svn: 80759
2009-09-02 04:34:06 +00:00
Duncan Sands 5632d96176 Complicate Chris's simplification, avoiding complaints
about singular iterators when building with expensive
checks turned on.

llvm-svn: 80757
2009-09-02 03:48:41 +00:00
Daniel Dunbar 0935339f81 Don't force the triple or data layout in this test. We just have to get them
from the host and hope that works.

llvm-svn: 80751
2009-09-02 02:43:11 +00:00
Dan Gohman 24a60cd2eb Add a comment.
llvm-svn: 80749
2009-09-02 01:14:16 +00:00
Sean Callanan a8ee2e7496 Fixed the asmstrings for 8-bit, 16-bit, and 32-bit ADD %rAX, imm instructions.
Added a 64-bit ADD %RAX, imm32 instruction.
Added all 4 forms for AND %rAX, imm and CMP %rAX, imm.

llvm-svn: 80746
2009-09-02 00:55:49 +00:00
Evan Cheng 10a5dabfd5 Fix PR4845: r77946 completely broke x86_64 Darwin (or any situation where the
desired triplet is a sub-target, e.g. thumbv7 vs. arm host). Reverting the
patch isn't quite right either since the previous behavior does not allow the
triplet to be overridden with -march.

llvm-svn: 80742
2009-09-02 00:19:03 +00:00
Devang Patel 34455c9c65 Disable uniqueness test for now.
llvm-svn: 80741
2009-09-02 00:16:33 +00:00
Devang Patel 8c7f86e698 For now disable MDNode uniquing. This fixes llvm-gcc bootstrap failure on certain Mac OS X 10.5. I am working on a proper fix.
llvm-svn: 80738
2009-09-01 23:56:42 +00:00
Bob Wilson fcd618bf1d Avoid calling removeVirtualRegisterKilled which iterates over the operands
to find the kill, since we already have the operand.

llvm-svn: 80736
2009-09-01 23:18:46 +00:00
Bob Wilson efe96918f8 Refactor some code into separate functions. No functional changes.
llvm-svn: 80733
2009-09-01 22:51:08 +00:00
Bob Wilson 71e77ea89b Move use of LV inside condition that guards for null LV.
llvm-svn: 80731
2009-09-01 22:19:00 +00:00
Daniel Dunbar 2a275102d3 Fix build warning.
llvm-svn: 80730
2009-09-01 22:07:12 +00:00
Daniel Dunbar ff0e622d1c Simplify.
llvm-svn: 80729
2009-09-01 22:07:06 +00:00
Daniel Dunbar 9ab9e0aa25 Fix what I believe is a copy-n-pasto introduced in r78129.
- Bruno, please check!!

llvm-svn: 80728
2009-09-01 22:07:00 +00:00
Daniel Dunbar 6c3843866c X86/Encoding: Support ExternalSymbol operands in emitDisplacementField (for consistency).
llvm-svn: 80727
2009-09-01 22:06:53 +00:00
Daniel Dunbar f7a14aa43d Remove Offset from ExternalSybmol MachineOperands, this is unused (and at least partly unsupported, in X86 encoding at least).
llvm-svn: 80726
2009-09-01 22:06:46 +00:00
Chris Lattner 6190bb01be debug intrinsics do not go in the callgraph, this fixes a couple
clang regtest failures.

llvm-svn: 80724
2009-09-01 21:37:50 +00:00
Chris Lattner 339c82df85 Fix a regression I introduced in r80708, found by llvm-test.
llvm-svn: 80718
2009-09-01 20:33:43 +00:00
Bruno Cardoso Lopes 92e18c456a Fix ELF Writter related memory leaks
llvm-svn: 80717
2009-09-01 19:25:52 +00:00
Andreas Neustifter e3cdafc70b OptimalEdgeProfiling: Reading in Profiles.
This enables LLVM to read the OptimalEdgeProfiles.

llvm-svn: 80715
2009-09-01 19:08:51 +00:00
Andreas Neustifter e7fa9fa3cc Addedum to r80712, forgot to add files.
llvm-svn: 80713
2009-09-01 19:05:58 +00:00
Andreas Neustifter 759094e323 OptimalEdgeProfiling: Creation of profiles.
This adds the instrumentation and runtime part of OptimalEdgeProfiling.

llvm-svn: 80712
2009-09-01 19:03:44 +00:00
Andreas Neustifter 4fde5c756d Small fix in ProfileEstimator that eliminates duplicated code.
llvm-svn: 80711
2009-09-01 19:01:59 +00:00
Jim Grosbach e4459e466f reduce size of SmallString to something more reasonable
llvm-svn: 80710
2009-09-01 18:55:08 +00:00
Chris Lattner 9b463729d7 remove CallGraphNode::replaceCallSite, it is redundant with other APIs.
llvm-svn: 80708
2009-09-01 18:52:39 +00:00
Bob Wilson d7797754d4 Add support for generating code for vst{234}lane intrinsics.
llvm-svn: 80707
2009-09-01 18:51:56 +00:00
Chris Lattner f61b0fb5d0 cleanup/simplify
llvm-svn: 80706
2009-09-01 18:50:55 +00:00
Bob Wilson 39dc89b458 Fix incorrect declarations of intrinsics in this test.
llvm-svn: 80705
2009-09-01 18:50:43 +00:00
Jim Grosbach c5fcbdc7ee Use raw_ostream instead of sstream
llvm-svn: 80704
2009-09-01 18:49:12 +00:00
Chris Lattner 8900f3ec57 remove a bunch of explicit code previously needed to update the
callgraph.  This is now dead because RAUW does the job.

llvm-svn: 80703
2009-09-01 18:44:06 +00:00
David Goodwin 7f6516949b Add hidden flags to allow binary search of post-RA scheduling errors.
llvm-svn: 80702
2009-09-01 18:34:03 +00:00
David Goodwin 5f582b7290 RRX reads CPSR.
llvm-svn: 80699
2009-09-01 18:32:09 +00:00
Chris Lattner e33167ac35 doxygenate RefreshCallGraph, add a new 'verification mode', and run it after
CGSCC passes make change to ensure they are updating the callgraph correctly
(when assertions are enabled).

llvm-svn: 80698
2009-09-01 18:32:03 +00:00
Dan Gohman 4623a26ec3 Fix a typo in a comment.
llvm-svn: 80697
2009-09-01 18:29:01 +00:00
Sean Callanan 09b2e51711 Added TEST %rAX, $imm instructions to the Intel tables. These are required for the X86 disassembler.
llvm-svn: 80696
2009-09-01 18:14:18 +00:00
Chris Lattner 3f7b3d149f simpler solution to iterator invalidation "problem" found
by expensive checking.

llvm-svn: 80695
2009-09-01 18:13:40 +00:00
Chris Lattner 1145e33bc6 enhance memcpy opt to turn memmoves into memcpy when the src/dest
don't alias.  Remove an old and poorly reduced testcase that fails
with this transform for reasons unrelated to the original test.

llvm-svn: 80693
2009-09-01 17:56:32 +00:00
Bruno Cardoso Lopes 0f20a5b338 Reapply 80278
Add MO flags to simplify the printing of relocations.
Remove the support for printing large code model relocs (which
aren't supported anyway).

llvm-svn: 80691
2009-09-01 17:27:58 +00:00
Jim Grosbach 5afbf2b541 revert inadvertant change from previous commit
llvm-svn: 80689
2009-09-01 17:19:13 +00:00
Chris Lattner b5557a7b42 random code cleanups, no functionality change.
llvm-svn: 80682
2009-09-01 17:09:55 +00:00
Ted Kremenek 1543d133db Update CMake files.
llvm-svn: 80680
2009-09-01 17:01:02 +00:00
Jim Grosbach 9372f4d7d5 Simply LSDA lable emission to use a direct special-case output instead of
EmitLabel()

llvm-svn: 80677
2009-09-01 16:43:35 +00:00
Duncan Sands 1f8303bfce Do not manipulate invalid iterators. This fixes the
llvm-gcc build when expensive checking is turned on.

llvm-svn: 80671
2009-09-01 15:13:02 +00:00
Sanjiv Gupta a19e971f0c Further refactoring of PIC16 Obj file code.
llvm-svn: 80670
2009-09-01 10:47:31 +00:00
Benjamin Kramer a43ad3ddbd Update CMakeLists.
llvm-svn: 80669
2009-09-01 10:24:10 +00:00
Andreas Neustifter eb5a9d34d6 Preparation for Optimal Edge Profiling:
Add statistics for regular edge profiling, this enables the comparation of the
number of edges inserted by regular and optimal edge profiling.

llvm-svn: 80668
2009-09-01 10:08:39 +00:00
Andreas Neustifter 8bcd5dcf5d Preparation for Optimal Edge Profiling:
Optimal edge profiling is only possible when blocks with no predecessors get an
virtual edge (BB,0) that counts the execution frequencies of this
function-exiting blocks.
This patch makes the necessary changes before actually enabling optimal edge profiling.

llvm-svn: 80667
2009-09-01 10:06:05 +00:00
Andreas Neustifter b683b6e2ce Preparation for Optimal Edge Profiling:
This adds a pass to verify the current profile against the flow conditions.
This is very helpful when later on trying to perserve the profiling information
during all passes.

llvm-svn: 80666
2009-09-01 08:48:42 +00:00
Chris Lattner 026e34c4f7 testcase for PR3601
llvm-svn: 80664
2009-09-01 06:33:49 +00:00
Chris Lattner 063d06527e Change CallGraphNode to maintain it's Function as an AssertingVH
for sanity.  This didn't turn up any bugs.

Change CallGraphNode to maintain its "callsite" information in the 
call edges list as a WeakVH instead of as an instruction*.  This fixes
a broad class of dangling pointer bugs, and makes CallGraph have a number
of useful invariants again.  This fixes the class of problem indicated
by PR4029 and PR3601.

llvm-svn: 80663
2009-09-01 06:31:31 +00:00
Devang Patel aa57e1085e Add virtual destructor.
llvm-svn: 80660
2009-09-01 05:04:28 +00:00
Bob Wilson ff69320427 Add test for vld{234}_lane instructions.
llvm-svn: 80658
2009-09-01 04:27:10 +00:00
Bob Wilson da9817cddd Generate code for vld{234}_lane intrinsics.
llvm-svn: 80656
2009-09-01 04:26:28 +00:00
Bob Wilson 33b408a10f Fix pr4843: When an instruction has multiple destination registers that are
tied to different source registers, the TwoAddressInstructionPass needs to
be smarter.  Change it to check before replacing a source register whether
that source register is tied to a different destination register, and if so,
defer handling it until a subsequent iteration.

llvm-svn: 80654
2009-09-01 04:18:40 +00:00
Daniel Dunbar 4fa0595b94 llvm-mc: Store MCSymbolData value as a pointer (to make MSVC happy).
llvm-svn: 80652
2009-09-01 04:09:03 +00:00
Jim Grosbach f09e8d5497 SJLJ is arm/darwin only for now. force the triple for the test
llvm-svn: 80651
2009-09-01 02:34:49 +00:00
Jim Grosbach 345a5ae6e4 Fix compiler warnings
llvm-svn: 80650
2009-09-01 02:05:03 +00:00
Jim Grosbach 20eac92d88 Clean up LSDA name generation and use for SJLJ exception handling. This
makes an eggregious hack somewhat more palatable. Bringing the LSDA forward
and making it a GV available for reference would be even better, but is
beyond the scope of what I'm looking to solve at this point.

Objective C++ code could generate function names that broke the previous
scheme. This fixes that.

llvm-svn: 80649
2009-09-01 01:57:56 +00:00
Devang Patel b1bff47718 Introduce DILocation.
llvm-svn: 80648
2009-09-01 01:14:15 +00:00
Devang Patel 71b42f2d40 Add getDirectory() and getFilename() interface to DIScope.
llvm-svn: 80647
2009-09-01 00:53:21 +00:00
Devang Patel b2de5fa689 Subprogram is a scope. Derive DISubprogram from DIScope.
llvm-svn: 80637
2009-08-31 22:47:13 +00:00
Devang Patel 869529c58c Rename DIBlock as DILexicalBlock.
llvm-svn: 80633
2009-08-31 22:00:15 +00:00
Dan Gohman dba696afc0 Don't use an iterator which is potentially invalidated.
llvm-svn: 80632
2009-08-31 21:58:28 +00:00
Bob Wilson e98396d3fc Use early exit and reduce indentation.
llvm-svn: 80631
2009-08-31 21:54:55 +00:00
Bob Wilson 53b6a02dd1 If the tied registers are already the same, there is no need to change
them.  Move the code to make that change inside the conditional.

llvm-svn: 80630
2009-08-31 21:54:16 +00:00
Richard Osborne e7717e7b2a Add triple parsing support for XCore.
llvm-svn: 80629
2009-08-31 21:51:36 +00:00
Devang Patel e4cfcc3081 Derive DICompileUnit from DIScope.
llvm-svn: 80627
2009-08-31 21:34:44 +00:00
Caroline Tice c87c1e2cfd Add flag to mark structs for Apple Block "byref" variables; also add code to
modify the type and location debug information for these variables to match the
programmer's expectations.

llvm-svn: 80625
2009-08-31 21:19:37 +00:00
Dan Gohman cc2f1eb7fe Extend the ValuesAtScope cache to cover all expressions, not just
SCEVUnknowns, as the non-SCEVUnknown cases in the getSCEVAtScope code
can also end up repeatedly climing through the same expression trees,
which can be unusably slow when the trees are very tall.

Also, add a quick check for SCEV pointer equality to the main
SCEV comparison routine, as the full comparison code can be expensive
in the case of large expression trees.

These fix compile-time problems in some pathlogical cases.

llvm-svn: 80623
2009-08-31 21:15:23 +00:00
Gabor Greif f04db57674 restore semantics of operator* (removing a FIXME I had to introduce in r80224)
llvm-svn: 80622
2009-08-31 20:54:23 +00:00
David Goodwin c8985204d9 Don't mark a register live at an undef use.
llvm-svn: 80621
2009-08-31 20:47:02 +00:00
Devang Patel d9b6115f27 Introduce DIScope.
llvm-svn: 80620
2009-08-31 20:44:45 +00:00
Devang Patel 88a26fb0f1 Oops. Fix inverted logic in assertion check.
llvm-svn: 80618
2009-08-31 20:27:49 +00:00
Evan Cheng 4f835f1d7d Remove .n suffix for some 16-bit opcodes now that Darwin assembler is fixed.
llvm-svn: 80615
2009-08-31 20:14:07 +00:00
Daniel Dunbar b0215efc45 X86/exp-asm-printer: Lower MachineOperand::MO_JumpTableIndex to MCOperand.
- Down to 7 failures on 403.gcc.

llvm-svn: 80605
2009-08-31 19:14:05 +00:00
Daniel Dunbar 443f849b6b Stop printing old asm printing code inline with -experimental-asm-printer (this allows diffing and assembling the .s)
llvm-svn: 80604
2009-08-31 19:13:56 +00:00
Daniel Dunbar 524630915d Avoid unnecessary +0 in experimental-asm-printer.
llvm-svn: 80603
2009-08-31 19:13:47 +00:00
Devang Patel 9fda4bd998 Simplify isDerivedType() and other predicate interface.
llvm-svn: 80602
2009-08-31 18:49:10 +00:00
Bill Wendling 6627c4ec82 Output a hex value, because all of the others are hex.
llvm-svn: 80601
2009-08-31 18:26:48 +00:00
Dale Johannesen 70e2f093a4 Fix some misspellings of XTARGET.
llvm-svn: 80598
2009-08-31 18:05:23 +00:00
Dale Johannesen a1aed7bb40 Mark test as passing on all x86, which it should,
although I don't think anyone cares about this
feature except Darwin.  PR 4825.

llvm-svn: 80596
2009-08-31 17:49:20 +00:00
Chris Lattner a9262bb19c cleanups pointed out by duncan
llvm-svn: 80595
2009-08-31 17:08:30 +00:00
Duncan Sands 9cf8bcb69d Revert commit 80428. It completely broke exception
handling on x86-32 linux.

llvm-svn: 80592
2009-08-31 16:45:16 +00:00
Torok Edwin d18e668fbc Free the constants that have no uses in ~LLVMContext.
This fixes leaks from LLVMContext in multithreaded apps.
Since constants are only deleted if they have no uses, it is safe to not delete
a Module on shutdown, as many single-threaded tools do.
Multithreaded apps should however delete the Module before destroying the
Context to ensure that there are no leaks (assuming they use a different context
for each thread).

llvm-svn: 80590
2009-08-31 16:14:59 +00:00
Torok Edwin 487d576020 Fix ExplicitSymbols leak.
llvm-svn: 80589
2009-08-31 16:12:29 +00:00
Benjamin Kramer 3c62f5095a Normalize makefile comments and sort cmake file lists.
llvm-svn: 80584
2009-08-31 13:05:24 +00:00
Daniel Dunbar 897ffadd2d llvm-mc: Pass values to MCStreamer as MCExprs, not MCValues.
llvm-svn: 80578
2009-08-31 08:09:28 +00:00
Daniel Dunbar b7b2097aac llvm-mc: Simplify EmitAssignment ('.set' is identical to '=').
llvm-svn: 80577
2009-08-31 08:09:09 +00:00
Daniel Dunbar b12b33051d llvm-mc: Remove MCAsmParser::Parse[Paren]RelocatableExpression.
llvm-svn: 80576
2009-08-31 08:08:50 +00:00
Daniel Dunbar 73da11ebda llvm-mc: Switch MCInst to storing an MCExpr* instead of an MCValue.
Also, use MCInst::print instead of custom code in MCAsmPrinter.

llvm-svn: 80575
2009-08-31 08:08:38 +00:00
Daniel Dunbar 7c82d56930 llvm-mc: Add MCAsmParser::Parse[Paren]Expression forms which return an MCExpr.
llvm-svn: 80574
2009-08-31 08:08:17 +00:00
Daniel Dunbar 945e257e99 llvm-mc: Make MCSymbolData symbol member const.
llvm-svn: 80573
2009-08-31 08:08:06 +00:00
Daniel Dunbar 02c7254f6d llvm-mc: Add MCContext to MCAssembler.
llvm-svn: 80572
2009-08-31 08:07:55 +00:00
Daniel Dunbar 940cda2590 llvm-mc: Add MCAsmParser::getContext.
llvm-svn: 80571
2009-08-31 08:07:44 +00:00
Daniel Dunbar b34a2b9da1 llvm-mc: Add MCExpr::{dump,print}.
llvm-svn: 80570
2009-08-31 08:07:33 +00:00
Daniel Dunbar f363645da2 llvm-mc: Switch MCExpr construction to using static member functions, and taking the MCContext (which now owns all MCExprs).
llvm-svn: 80569
2009-08-31 08:07:22 +00:00
Daniel Dunbar aecc936ea0 llvm-mc: Add some doxyment markers.
llvm-svn: 80568
2009-08-31 08:07:08 +00:00
Daniel Dunbar 115e4d6d7b llvm-mc: Move AsmExpr into MC lib (as MCExpr).
llvm-svn: 80567
2009-08-31 08:06:59 +00:00
Chris Lattner eedcd84803 Step #1 to giving Callgraph some sane invariants. The problems with callgraph
stem from the fact that we have two types of passes that need to update it:

1. callgraphscc and module passes that are explicitly aware of it
2. Functionpasses (and loop passes etc) that are interlaced with CGSCC passes
   by the CGSCC Passmgr.

In the case of #1, we can reasonably expect the passes to update the call
graph just like any analysis.  However, functionpasses are not and generally
should not be CG aware.  This has caused us no end of problems, so this takes
a new approach.  Logically, the CGSCC Pass manager can rescan every function 
after it runs a function pass over it to see if the functionpass made any 
updates to the IR that affect the callgraph.  This allows it to catch new calls
introduced by the functionpass.

In practice, doing this would be slow.  This implementation keeps track of
whether or not the current scc is dirtied by a function pass, and, if so, 
delays updating the callgraph until it is actually needed again.  This was
we avoid extraneous rescans, but we still have good invariants when the
callgraph is needed.

Step #2 of the "give Callgraph some sane invariants" is to change CallGraphNode
to use a CallBackVH for the callsite entry of the CallGraphNode.  This way
we can immediately remove entries from the callgraph when a FunctionPass is
active instead of having dangling pointers.  The current pass tries to tolerate
these dangling pointers, but it is just an evil hack.

This is related to PR3601/4835/4029.  This also reverts r80541, a hack working
around the sad lack of invariants.

llvm-svn: 80566
2009-08-31 07:23:46 +00:00
Chris Lattner ff5f1e4d70 fix some cases where instcombine would change hte IR but not return true
from runOnFunction

llvm-svn: 80562
2009-08-31 06:57:37 +00:00
Chris Lattner 7e4fbddf39 cleanups, factor some code out to a helper function
llvm-svn: 80542
2009-08-31 06:01:21 +00:00
Chris Lattner b822abd37d fix a crash building SPASS by tolerating a callsite that doesn't exist
in the callgraph, see the big comment at the top of the testcase.

llvm-svn: 80541
2009-08-31 05:46:59 +00:00
Chris Lattner 9e50747958 comment and simplify some code.
llvm-svn: 80540
2009-08-31 05:34:32 +00:00
Chris Lattner 70ebbc59f3 add -debug output
llvm-svn: 80539
2009-08-31 05:22:48 +00:00
Chris Lattner 19dd315e67 improve -debug output, so that -debug is more likely to print when
instcombine is changing stuff.

llvm-svn: 80538
2009-08-31 05:17:58 +00:00
Chris Lattner 4e3e930743 fix a bug I introduced with my 'instcombine builder' refactoring
changes: SimplifyDemandedBits can't use the builder yet because it
has the wrong insertion point.  This fixes a crash building
MultiSource/Benchmarks/PAQ8p

llvm-svn: 80537
2009-08-31 04:36:22 +00:00
Chris Lattner 2f2110affa simplify some code by making the SCCNodes set contain Function*'s
instead of CallGraphNode*'s.  This also papers over a callgraph
problem where a pass (in this case, MemCpyOpt) introduces a new
function into the module (llvm.memset.i64) but doesn't add it to
the call graph (nor should it, since it is a function pass).

While it might be a good idea for MemCpyOpt to not synthesize 
functions in a runOnFunction(), there is no need for FunctionAttrs
to be boneheaded, so fix it there.  This fixes an assertion building
176.gcc.

llvm-svn: 80535
2009-08-31 04:09:04 +00:00
Chris Lattner edcbfe8529 only print the override triple if it exists!
llvm-svn: 80534
2009-08-31 03:22:35 +00:00
Chris Lattner 081375bb08 Fix PR4834, a tricky case where the inliner would resolve an
indirect function pointer, inline it, then go to delete the body.
The problem is that the callgraph had other references to the function,
though the inliner had no way to know it, so we got a dangling pointer
and an invalid iterator out of the deal.

The fix to this is pretty simple: stop the inliner from deleting the
function by knowing that there are references to it.  Do this by making
CallGraphNodes contain a refcount.  This requires moving deletion of 
available_externally functions to the module-level cleanup sweep where
it belongs.

llvm-svn: 80533
2009-08-31 03:15:49 +00:00
Chris Lattner 4275cf2efa use an accessor instead of poking internals of a node.
llvm-svn: 80532
2009-08-31 02:24:20 +00:00
Oscar Fuentes c6db3ee94b CMake: updated library dependencies.
llvm-svn: 80531
2009-08-31 01:58:50 +00:00
Jim Grosbach ce713134b8 PR4747
Shared landing pads run into trouble with SJLJ, as the dispatch table is
mapped to call sites, and merging the pads will throw that off. There needs
to be a one-to-one mapping of landing pad exception table entries to invoke
call points.

Detecting the shared pad during lowering of SJLJ info insn't sufficient, as
the dispatch function may still need separate destinations to properly
handle phi-nodes.

llvm-svn: 80530
2009-08-31 01:35:03 +00:00
Chris Lattner b1c3df239d update unit test for previous change.
llvm-svn: 80528
2009-08-31 00:28:46 +00:00
Chris Lattner 305b115a87 Fix some nasty callgraph dangling pointer problems in
argpromotion and structretpromote.  Basically, when replacing
a function, they used the 'changeFunction' api which changes
the entry in the function map (and steals/reuses the callgraph
node).

This has some interesting effects: first, the problem is that it doesn't
update the "callee" edges in any callees of the function in the call graph.
Second, this covers for a major problem in all the CGSCC pass stuff, which 
is that it is completely broken when functions are deleted if they *don't*
reuse a CGN.  (there is a cute little fixme about this though :).

This patch changes the protocol that CGSCC passes must obey: now the CGSCC 
pass manager copies the SCC and preincrements its iterator to avoid passes
invalidating it.  This allows CGSCC passes to mutate the current SCC.  However
multiple passes may be run on that SCC, so if passes do this, they are now
required to *update* the SCC to be current when they return.

Other less interesting parts of this patch are that it makes passes update
the CG more directly, eliminates changeFunction, and requires clients of
replaceCallSite to specify the new callee CGN if they are changing it.

llvm-svn: 80527
2009-08-31 00:19:58 +00:00
Erick Tryzelaar a64b1c1d4c Fix header comment for bindings/ocaml/llvm/Makefile.
llvm-svn: 80526
2009-08-30 23:41:20 +00:00
Erick Tryzelaar f34cb0cab4 Make sure we specify no arguments for context functions.
llvm-svn: 80525
2009-08-30 23:38:06 +00:00
Chris Lattner 69349a55e7 add a dump() method on callgraph.
llvm-svn: 80524
2009-08-30 22:24:32 +00:00