1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Commit Graph

46012 Commits

Author SHA1 Message Date
Chris Lattner
0577b8e2ef fix two problems with machine sinking:
1. Sinking would crash when the first instruction of a block was
   sunk due to iterator problems.
2. Instructions could be sunk to their current block, causing an
   infinite loop.

This fixes PR3968

llvm-svn: 68787
2009-04-10 16:38:36 +00:00
Dan Gohman
b85fd685f8 Now that register classes have names, include the name in debug output.
llvm-svn: 68786
2009-04-10 15:59:38 +00:00
Chris Lattner
8d5d3eaf95 fix a broken assertion in ilist_iterator, which caused it to crash in the
bad case instead of actually assert.  Bug pointed out by Jakob Stoklund 
Olesen!

llvm-svn: 68785
2009-04-10 15:47:17 +00:00
Chris Lattner
0b8f2eafad fix typo, patch by Shlomi Fish!
llvm-svn: 68784
2009-04-10 15:38:51 +00:00
Sanjiv Gupta
6962a75641 Added code to handle spilling and reloading of FSRs.
llvm-svn: 68783
2009-04-10 15:10:14 +00:00
Rafael Espindola
88986ef511 Don't fold a load if the other operand is a TLS address.
With this we generate

movl    %gs:0, %eax
leal    i@NTPOFF(%eax), %eax

instead of

movl    $i@NTPOFF, %eax
addl    %gs:0, %eax

llvm-svn: 68778
2009-04-10 10:09:34 +00:00
Nick Lewycky
e5b361c13a Cleanup. Remove redundant llvm:: , we don't need them since we're inside
namespace llvm already.

llvm-svn: 68774
2009-04-10 06:54:06 +00:00
Chris Lattner
af0fd068e1 Add a new Type::getPointerTo method, which is shorthand for
llvm::PointerType::get().  Patch by Anders Johnsen!

llvm-svn: 68772
2009-04-10 06:42:02 +00:00
Nick Lewycky
0f4dbe06e7 Add utility function to IRBuilder that takes the difference between two
pointers, taking into account the size of the pointed-to object.
Patch by Jeffrey Yasskin!

llvm-svn: 68768
2009-04-10 05:30:48 +00:00
Nick Lewycky
9c0705186a Regenerate.
llvm-svn: 68767
2009-04-10 05:18:27 +00:00
Chris Lattner
26aee059ba a few fixes to "addrspace(256) is reference offset of GS segment register".
It turns out that there are still several problems with this, will file a bugzilla.

llvm-svn: 68749
2009-04-10 00:16:23 +00:00
Bill Wendling
5d9538852f Pass in the std::string parameter instead of returning it by value.
llvm-svn: 68747
2009-04-10 00:12:49 +00:00
Bill Wendling
ab0a8487ca Constify getter methods.
llvm-svn: 68745
2009-04-10 00:00:25 +00:00
Dan Gohman
8121b3f88d Remove the obsolete SelectionDAG::getNodeValueTypes and simplify
code that uses it by using SelectionDAG::getVTList instead.

llvm-svn: 68744
2009-04-09 23:54:40 +00:00
Dan Gohman
f0aeaae63c Change the NumVTs field from short to int, since there's no
real need for it to be short.

llvm-svn: 68742
2009-04-09 23:53:31 +00:00
Bill Wendling
62c4c8bc44 StringMap<DIE*>::iterator::first() returns a pointer to the first character of
the key. This will cause it to create a new std::string, which isn't
wanted. Instead, pass back the "const char*". Modify the EmitString() method to
take a "const char*".

llvm-svn: 68741
2009-04-09 23:51:31 +00:00
Devang Patel
500dc5157e Silence unused variable warning.
llvm-svn: 68735
2009-04-09 23:45:17 +00:00
Chris Lattner
4c5310e25e ignore register zero in isRegTiedToUseOperand, following the example of
isRegTiedToDefOperand.  Thanks to Bob for pointing this out!

llvm-svn: 68734
2009-04-09 23:33:34 +00:00
Owen Anderson
bd340ca405 Give register alias checking the hash table treatment too.
llvm-svn: 68730
2009-04-09 22:19:30 +00:00
Bill Wendling
e1dd8c815b Use a StringMap instead of std::map for storing std::string->DIE* maps. This
gives a micro speedup in the Dwarf writer.

llvm-svn: 68728
2009-04-09 21:49:15 +00:00
Devang Patel
78fd57741b llvm.dbg.func_start also defines beginning of function scope.
llvm-svn: 68727
2009-04-09 21:42:11 +00:00
Bill Wendling
c2b941b79c Revert r68708. It was causing this failure in the self-hosting buildbot:
llvm[2]: Compiling lto.cpp for Debug build  (PIC)
make[2]: *** No rule to make target `/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Debug/lib/libLLVMBitWriter.a', needed by `/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/lib/libLTO.dylib'.  Stop.
make[1]: *** [all] Error 1
make: *** [all] Error 1

llvm-svn: 68721
2009-04-09 18:26:57 +00:00
Bob Wilson
c53238dff1 Fix pr3954. The register scavenger asserts for inline assembly with
register destinations that are tied to source operands.  The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly.  The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).

llvm-svn: 68714
2009-04-09 17:16:43 +00:00
Sanjiv Gupta
14c26ced49 The way we are trying to figure out banksel immediate operand may yield different results for different type of insns. This will eventually need to be changed but currently let us prevent the crash in cases of incorrect detection of banksel operand.
llvm-svn: 68713
2009-04-09 17:06:24 +00:00
Chris Lattner
301c4f39a0 reg0 references are not real registers. This fixes a crash on the
attached testcase.

llvm-svn: 68712
2009-04-09 16:50:43 +00:00
Misha Brukman
694eb0f18e Make sure to rebuild dependencies for the check' and unittests' targets so
we're not testing out-of-date code.  This also makes "make check" and
"make unittests" work out-of-the box right after the configure step, without
requiring the user to run "make tools-only" or "make libs-only".

Tested on Linux/x86_64 and Darwin/x86.

llvm-svn: 68708
2009-04-09 14:57:00 +00:00
Sanjiv Gupta
daa922501d Arguments to indirect calls were being passed incorrectly. They are not fixed to start after return value.
llvm-svn: 68705
2009-04-09 10:29:32 +00:00
Chris Lattner
e0d0edaf3f Fix code size computation on x86-64, patch by Zoltan Varga!
llvm-svn: 68690
2009-04-09 06:10:51 +00:00
Chris Lattner
c49d128e58 add an accessor method, patch by John McCall!
llvm-svn: 68684
2009-04-09 05:56:58 +00:00
Sanjiv Gupta
3baf157321 r68576 unconverd a bug in PIC16 port (Thanks to Dan Gohman) where we were custom lowering an ADD to ADDC.
llvm-svn: 68671
2009-04-09 04:03:43 +00:00
Dan Gohman
68de98eef3 Generalize ExtendUsesToFormExtLoad to be usable for ANY_EXTEND,
in addition to ZERO_EXTEND and SIGN_EXTEND. Fix a bug in the
way it checked for live-out values, and simplify the way it
find users by using SDNode::use_iterator's (relatively) new
features. Also, make it slightly more permissive on targets
with free truncates.

In SelectionDAGBuild, avoid creating ANY_EXTEND nodes that are
larger than necessary. If the target's SwitchAmountTy has
enough bits, use it. This exposes the truncate to optimization
early, enabling more optimizations.

llvm-svn: 68670
2009-04-09 03:51:29 +00:00
Owen Anderson
d4ce32ccae Convert TargetRegisterInfo's super-register checking to use a pre-computed hash table just like subregister checking does.
llvm-svn: 68669
2009-04-09 03:50:16 +00:00
Nick Lewycky
c7edd80c95 Fix pointer casting problem.
llvm-svn: 68668
2009-04-09 03:10:03 +00:00
Dan Gohman
6479d0cbb7 Don't copy the operand of a SwitchInst into virtual registers as
eagerly. This helps avoid CopyToReg nodes in some cases where they
aren't needed, and also helps subsequent optimizer heuristics
in cases where the extra nodes would cause the node to appear
to have multiple results. This doesn't have a significant impact
currently; it'll help an upcoming change.

llvm-svn: 68667
2009-04-09 02:33:36 +00:00
Dan Gohman
6cb1387261 Fix grammaros in comments.
llvm-svn: 68666
2009-04-09 02:06:09 +00:00
Misha Brukman
37fb714033 Fixed compiler warning.
llvm-svn: 68664
2009-04-09 00:42:37 +00:00
Daniel Dunbar
7682ffcabb Add sys::Path::makeAbsolute().
llvm-svn: 68663
2009-04-09 00:33:08 +00:00
Douglas Gregor
1c83e8d3ec Fix BitstreamReader's GetCurrentBitNo to return the correct bit number, and stop JumpToBit from covering up its mistakes
llvm-svn: 68648
2009-04-08 22:26:47 +00:00
Devang Patel
187a4c385a If subprogram type is not tagged as DW_TAG_subroutine_type then use it directly as a return value type.
llvm-svn: 68647
2009-04-08 22:18:45 +00:00
Rafael Espindola
7eb72dc5f2 Re-apply 68552.
Tested by bootstrapping llvm-gcc and using that to build llvm.

llvm-svn: 68645
2009-04-08 21:14:34 +00:00
Bob Wilson
e0e4a070da Add testcase for PR3795.
llvm-svn: 68620
2009-04-08 18:00:55 +00:00
Bob Wilson
a4abfb962e Fix PR3795: Apply Dan's suggested fix for
ARMTargetLowering::isLegalAddressingMode.

llvm-svn: 68619
2009-04-08 17:55:28 +00:00
Ted Kremenek
af38385f43 Accommodate empty string for build type. This was previously causing an error
when generating an Xcode project using the CMake files (thanks to Doug Gregor
for identifying the issue).

llvm-svn: 68618
2009-04-08 17:28:16 +00:00
Douglas Gregor
936c1fd9eb Use 8 instead of CHAR_BIT
llvm-svn: 68616
2009-04-08 16:57:40 +00:00
Duncan Sands
d0e186d90f Soft float support for FREM.
llvm-svn: 68614
2009-04-08 16:20:57 +00:00
Misha Brukman
56dff472d2 * Fixed calls to APInt ctor to work for negative values on Darwin/x86
* Converted C-style casts to C++-style casts

llvm-svn: 68613
2009-04-08 16:17:23 +00:00
Douglas Gregor
e093e2a759 Add BitstreamWriter::GetCurrentBitNo, to report where we are in the output bitstream
llvm-svn: 68610
2009-04-08 15:18:21 +00:00
Duncan Sands
ee34b0d05d Soft float support for undef. Reported by Xerxes Rånby.
llvm-svn: 68607
2009-04-08 13:33:37 +00:00
Rafael Espindola
d4563305fd Avoid a hard coded constant.
llvm-svn: 68603
2009-04-08 08:09:33 +00:00
Sanjiv Gupta
8830b56cba Emit .line debug directives for stoppoints. The debug location is retrieved by the MachineInstr itself, rather than by custom handling the DBG_STOPPOINT nodes.
llvm-svn: 68602
2009-04-08 06:24:04 +00:00