Commit Graph

31373 Commits

Author SHA1 Message Date
Dan Gohman
f14d919742 Make TargetData optional in SimplifyLibCalls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79298 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-18 00:48:13 +00:00
Anton Korobeynikov
e55db74152 The attached patches attempt to fix cross builds. For example, if you
try to use i686-darwin to build for arm-eabi, you'll quickly run into
several false assumptions that the target OS must be the same as the
host OS. These patches split $(OS) into $(HOST_OS) and $(TARGET_OS) to
help builds like "make check" and the test-suite able to cross
compile. Along the way a target of *-unknown-eabi is defined as
"Freestanding" so that TARGET_OS checks have something to work with.

Patch by Sandeep Patel!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-18 00:40:33 +00:00
Dan Gohman
25103a2617 Fix function alignment at -Os on x86 to be 1, not 2. getFunctionAlignment
returns a log2 value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79293 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-18 00:20:06 +00:00
Dale Johannesen
5cfd4ddece PowerPC inline asm was emitting two output operands
for a single "m" constraint; this is wrong because the
opcode of a load or store would have to change in parallel.
This patch makes it always compute addresses into a register,
which is correct but not as efficient as possible.  7144566.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79292 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-18 00:18:39 +00:00
Devang Patel
4b49cd298a Add prefix only if it is needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79289 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 23:17:17 +00:00
Jim Grosbach
606f3d696f cleanups per review. Mostly cosmetic, plus use SmallVector in place of std::vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79287 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 21:40:03 +00:00
Devang Patel
4c77dfa20c Oops. find all llvm.dbg.global_variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79274 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 20:36:20 +00:00
Jim Grosbach
2962664227 Remove a bit more cruft from the sjlj moving to a backend pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79272 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 20:25:04 +00:00
Benjamin Kramer
ae68a19ef9 Update CMakeLists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79264 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 18:47:11 +00:00
Dan Gohman
d802f7e290 Update comments to new-style syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79263 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 18:45:31 +00:00
Daniel Dunbar
5d17eddb0c Fix build warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79262 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 18:41:42 +00:00
Owen Anderson
7b7b102023 Privatize the last bits of static type state.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79258 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 17:59:35 +00:00
Owen Anderson
36a3eb0aaa Move the TypeMap lock to a member on LLVMContextImpl.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79256 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 17:34:27 +00:00
Owen Anderson
596c1dc3e2 Add locking around the attributes list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79255 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 17:10:58 +00:00
Owen Anderson
6ae8c73aca Add locking around signal handler registration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79254 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 17:07:22 +00:00
Benjamin Kramer
76d5ccf6af Clear the uniquing table when initializing TLOF to avoid a crash when the TLOF is reinitialized with a different MCContext.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79253 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 17:05:44 +00:00
Nick Lewycky
a10e89f372 Don't crash on critical edge. Patch by Andre Tavares.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79252 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 17:00:57 +00:00
Jim Grosbach
8b818d7e98 Move the sjlj exception handling conversions to a back-end pass where they
more properly belong. This allows removing the front-end conditionalized
SJLJ code, and cleans up the generated IR considerably. All of the
infrastructure code (calling _Unwind_SjLj_Register/Unregister, etc) is
added by the SjLjEHPrepare pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79250 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 16:41:22 +00:00
Richard Osborne
2a5e23b44d Update getSectionForConstant() to to allow mergable sections to be nulled out
if not supported by the ELF subtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79249 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 16:37:11 +00:00
David Goodwin
fac8541dd4 Extend the instruction itinerary model to include the ability to indicate the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79247 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 16:02:57 +00:00
Chris Lattner
8f4b1ec02b the MinPad argument to PadToColumn only really makes sense to be 1,
just remove the argument and replace it with 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79246 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 15:48:08 +00:00
Dan Gohman
094ae454e8 Fix more missing newlines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79244 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 15:29:31 +00:00
Dan Gohman
48cc73d9c7 Fix printing of instructions with null operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79243 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 15:28:08 +00:00
Dan Gohman
e04853ca78 Always print at least one space before adding a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79242 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 15:27:30 +00:00
Dan Gohman
8732577230 Fix debug output to include a newline after printing a Value, now
that Value's operator<< doesn't include one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79240 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 15:25:05 +00:00
Duncan Sands
fa6a1cf1ed Don't access the first element of a potentially empty
vector (&Formals[0]).  With this change llvm-gcc builds
with expensive checking enabled for C, C++ and Fortran.
While there, change a std::vector into a SmallVector.
This is partly gratuitous, but mostly because not all
STL vector implementations define the data method (and
it should be faster).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79237 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 14:33:27 +00:00
Chris Lattner
975780bb59 change AsmPrinter to switch sections using AsmStreamer instead of
doing it directly.  This requires const'izing a bunch of stuff that
took sections, but this seems like the right semantic thing to do:
emitting a label to a section shouldn't mutate the MCSection object
itself, for example.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79227 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 05:49:08 +00:00
Nick Lewycky
d3aa25e2a8 Don't crash trying to promote VLAs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79226 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 05:37:31 +00:00
Chris Lattner
f3ce009fcb give MCAsmStreamer a TargetAsmInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79222 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 04:23:44 +00:00
Chris Lattner
46a947d8c1 formatting cleanups, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79221 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-17 04:17:34 +00:00
Erick Tryzelaar
e0a1bf64c9 Expose creating constant ints and floats from strings in llvm-c.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79213 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 23:36:46 +00:00
Erick Tryzelaar
0e81f660db Add helper functions to ConstantInt and ConstantFP to accept strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79212 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 23:36:33 +00:00
Erick Tryzelaar
a15d890c34 Modify APFloat to take a StringRef instead of a c string.
This also adds unit tests to APFloat that mainly tests the
string handling of APFloat, but not much else of it's api.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79210 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 23:36:19 +00:00
Dan Gohman
3778f21b17 Add a getOffsetOf, for building a target-independent expression for
offsetof, similar to getSizeOf for sizeof.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79208 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 21:26:11 +00:00
Dan Gohman
face41a4de Avoid emitting XMM save code in soft-float or no-implicit-float mode
or some other situation where no xmm registers need to be saved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79207 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 21:24:25 +00:00
Dan Gohman
e646d043b0 Delete an unused field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79206 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 21:19:53 +00:00
Jakob Stoklund Olesen
66a39699fb Replace RegScavenger::DistanceMap with a simpler local algorithm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79195 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 17:41:39 +00:00
Jakob Stoklund Olesen
e689ce626c Clean up the public interface of RegScavenger.
Remove unused methods and make others private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79194 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 17:41:20 +00:00
Jakob Stoklund Olesen
f7e8af925c Be more clever about regclasses in ScheduleDAGSDNodes::EmitCopyFromReg.
If two uses of a CopyFromReg want different regclasses, first try a common
sub-class, then fall back on the copy emitted in AddRegisterOperand. There is
no need for an assert here. The cross-class joiner usually cleans up nicely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79193 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 17:40:59 +00:00
Benjamin Kramer
9ae7d44d95 Fix use after free in Thumb2SizeReduction (PR4707). A MachineInstr was used after erasure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79189 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 11:56:42 +00:00
Bill Wendling
80c76436fe Styalistic and format changes. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79187 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 11:00:26 +00:00
Chris Lattner
9b60e04b65 add support for external symbols + X86::MOVPC32r.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79175 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 04:28:14 +00:00
Eli Friedman
12bb766ae9 Fix for PR3016: detect the tricky case, where there are
unfoldable references to a PHI node in the block being folded, and disable
the transformation in that case.  The correct transformation of such PHI
nodes depends on whether BB dominates Succ, and dominance is expensive 
to compute here.  (Alternatively, it's possible to check whether any 
uses are live, but that's also essentially a dominance calculation. 
Another alternative is to use reg2mem, but it probably isn't a good idea to
use that in simplifycfg.)

Also, remove some incorrect code from CanPropagatePredecessorsForPHIs 
which is made unnecessary with this patch: it didn't consider the case 
where a PHI node in BB has multiple uses.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79174 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 04:23:49 +00:00
Chris Lattner
30c74a2429 implement support for lowering references to global addresses. For example, we now
can asmprint:

NEW: 	movl	"L___stack_chk_guard$non_lazy_ptr", %eax
OLD: 	movl	L___stack_chk_guard$non_lazy_ptr, %eax

where 'new' is coming out of the MCInst version of the printer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79170 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 03:12:25 +00:00
Chris Lattner
f5af556c18 more formatting improvements, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79167 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 02:45:18 +00:00
Chris Lattner
d8638babf9 code formatting improvements, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79165 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 02:36:40 +00:00
Erick Tryzelaar
5c1c208296 Add an llvm-c function that lets you insert an instruction with a name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79163 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 02:20:57 +00:00
Erick Tryzelaar
56b22697d8 Expose most of the Constant creation functions to llvm-c.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79160 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 02:20:12 +00:00
Erick Tryzelaar
f72596c04a Expose most of the rest of IRBuilder's functions to llvm-c.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79159 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 02:19:59 +00:00
Evan Cheng
8a9d5f96a5 Needs to check whether unaligned load / store of i64 is legal here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79150 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-15 23:41:42 +00:00