Dan Gohman
b895f668cc
AliasAnalysis wants sizes in address-units, not bits.
...
llvm-svn: 77009
2009-07-24 23:01:30 +00:00
Eli Friedman
11e86150c4
Fix assert assembling zero-argument constant GEP.
...
There's still a strict-aliasing violation here, but I don't feel like
dealing with that right now...
llvm-svn: 77005
2009-07-24 21:56:17 +00:00
Evan Cheng
84cf748468
Uh. It would be useful to actually print the operand.
...
llvm-svn: 77004
2009-07-24 20:47:38 +00:00
Chris Lattner
50d9b68935
fix some predicates
...
llvm-svn: 76999
2009-07-24 20:27:11 +00:00
Chris Lattner
89b6f54999
change SectionKindForGlobal from being a public (and
...
previously virtual) function to being a static function
in the .cpp file.
llvm-svn: 76997
2009-07-24 20:14:10 +00:00
Evan Cheng
597bf41097
Disable my constant island pass optimization (to make use soimm more effectively). It caused infinite looping on lencod.
...
llvm-svn: 76995
2009-07-24 19:31:03 +00:00
Chris Lattner
3d63455016
make SectionKindForGlobal target independent, and therefore non-virtual.
...
It's classifications now include elf-specific discriminators. Targets
that don't have these features (like darwin and pecoff) simply treat
data.rel like data, etc.
llvm-svn: 76993
2009-07-24 19:15:47 +00:00
Evan Cheng
92376f5a32
Add a workaround for Darwin assembler bug where it's not setting the thumb bit in Thumb2 jumptable entries. We now pass Olden.
...
llvm-svn: 76991
2009-07-24 18:54:23 +00:00
Chris Lattner
5af94066ee
we already know the sectionkind when invoking SelectSectionForGlobal,
...
pass it in instead of recomputing it.
llvm-svn: 76990
2009-07-24 18:42:53 +00:00
Chris Lattner
cc951ce3cb
make SectionForGlobal non-virtual, add a hook for pic16 to do its "address=" hack.
...
llvm-svn: 76989
2009-07-24 18:34:27 +00:00
Dan Gohman
58619d5ad2
Fix this condition I accidentally inverted.
...
llvm-svn: 76988
2009-07-24 18:31:07 +00:00
Jakob Stoklund Olesen
5ca1bdc613
Add support for promoting SETCC operations.
...
llvm-svn: 76987
2009-07-24 18:22:59 +00:00
Evan Cheng
e01fec5446
Make sure thumb2 jumptable entries are aligned.
...
llvm-svn: 76986
2009-07-24 18:20:44 +00:00
Evan Cheng
c4221e9b04
Clean up.
...
llvm-svn: 76984
2009-07-24 18:20:16 +00:00
Evan Cheng
5bab9444f9
Replace use of std::set with SmallPtrSet.
...
llvm-svn: 76983
2009-07-24 18:19:46 +00:00
Dan Gohman
f1a01b8cc0
Convert several more passes to use getAnalysisIfAvailable<TargetData>()
...
instead of getAnalysis<TargetData>().
llvm-svn: 76982
2009-07-24 18:13:53 +00:00
Chris Lattner
a9c1641014
start refactoring pic16 section selection logic.
...
llvm-svn: 76977
2009-07-24 17:13:27 +00:00
Chris Lattner
37abb9f4ba
move ELF-specific code into ELFTargetAsmInfo.
...
llvm-svn: 76976
2009-07-24 17:02:17 +00:00
Chris Lattner
ad0925f556
tidy up
...
llvm-svn: 76975
2009-07-24 16:53:52 +00:00
Chris Lattner
bd89cc24bb
split the ELF-specific section flag inference-from-name code out
...
into its own helper function.
llvm-svn: 76974
2009-07-24 16:50:24 +00:00
Chris Lattner
6e4d35f825
make SectionFlagsForGlobal a private static function instead of a public
...
virtual one.
llvm-svn: 76973
2009-07-24 16:46:50 +00:00
Chris Lattner
6bb2030fa8
move a method up in the file, GV is always non-null, so remove a check.
...
llvm-svn: 76972
2009-07-24 16:44:01 +00:00
Chris Lattner
7d304b8e4e
There is no need to pass the name into lib/Target/TargetAsmInfo.cpp
...
when we have a global with no section explicitly specified.
llvm-svn: 76971
2009-07-24 16:40:45 +00:00
Chris Lattner
1ae0ab672a
remove a use of SectionFlagsForGlobal.
...
llvm-svn: 76970
2009-07-24 16:40:09 +00:00
Daniel Dunbar
b3d81314f6
Another getName -> getNameStr
...
llvm-svn: 76967
2009-07-24 12:21:08 +00:00
Daniel Dunbar
da47773d6a
More move to raw_ostream.
...
llvm-svn: 76966
2009-07-24 10:47:20 +00:00
Daniel Dunbar
339c88008f
Move more to raw_ostream, provide support for writing MachineBasicBlock,
...
LiveInterval, etc to raw_ostream.
llvm-svn: 76965
2009-07-24 10:36:58 +00:00
Daniel Dunbar
ea6955ce65
Move more to raw_ostream.
...
llvm-svn: 76964
2009-07-24 10:05:20 +00:00
Daniel Dunbar
1df20e31e5
Move to raw_ostream.
...
llvm-svn: 76963
2009-07-24 09:53:24 +00:00
Daniel Dunbar
e3fea713f1
Switch to getNameStr().
...
llvm-svn: 76962
2009-07-24 08:24:36 +00:00
Daniel Dunbar
076387bcc0
Allow llvm_report_error to accept a Twine.
...
llvm-svn: 76961
2009-07-24 07:58:10 +00:00
Eli Friedman
1be7dfb1aa
Remove unused member functions.
...
llvm-svn: 76960
2009-07-24 07:43:59 +00:00
Daniel Dunbar
bc0b1a1506
Update CMake
...
llvm-svn: 76957
2009-07-24 07:04:49 +00:00
Daniel Dunbar
6f78d7ac27
Add Twine ADT.
...
- Not currently used.
llvm-svn: 76956
2009-07-24 07:04:27 +00:00
Chris Lattner
d594b72797
hoist section name uniquing logic up to the top-level SectionForGlobal
...
implementation, eliminating a dupe.
llvm-svn: 76953
2009-07-24 05:10:25 +00:00
Chris Lattner
20d18ee0c4
reduce indentation
...
llvm-svn: 76951
2009-07-24 05:01:55 +00:00
Chris Lattner
259a7b2a4d
simplify code by making special case more obvious
...
llvm-svn: 76950
2009-07-24 04:59:43 +00:00
Chris Lattner
e21abfb5c1
the 'isWeakForLinker' code is common between functions and globals, hoist it
...
and simplify some other code.
llvm-svn: 76949
2009-07-24 04:52:38 +00:00
Chris Lattner
4bb9a9a7d3
Replace UniqueSectionForGlobal with getSectionPrefixForUniqueGlobal.
...
The later doesn't depend on any crazy LLVM IR stuff, and this
pulls the concatenation of prefix with GV name (the root problem behind
PR4584) out one level.
llvm-svn: 76948
2009-07-24 04:49:34 +00:00
Chris Lattner
a82421ce2f
document SectionFlags::Named better and make it more easily greppable by
...
eliminating isNamed.
llvm-svn: 76946
2009-07-24 04:26:19 +00:00
Chris Lattner
32c8463bb5
fix indentation.
...
llvm-svn: 76945
2009-07-24 04:11:40 +00:00
Chris Lattner
13611a24d8
use section flags more correctly.
...
llvm-svn: 76944
2009-07-24 04:08:17 +00:00
Daniel Dunbar
5895c5adf3
Switch to raw_ostream.
...
llvm-svn: 76943
2009-07-24 04:01:01 +00:00
Chris Lattner
9aa6064164
fix a mysterious and scary failure on test/CodeGen/X86/cstring.ll
...
llvm-svn: 76942
2009-07-24 03:55:48 +00:00
Chris Lattner
6339e5e786
reduce api exposure: clients shouldn't call SectionKindForGlobal directly.
...
llvm-svn: 76941
2009-07-24 03:49:17 +00:00
Chris Lattner
2cae10056c
make Constant::getRelocationInfo return an enum, as suggested by Duncan.
...
llvm-svn: 76938
2009-07-24 03:27:21 +00:00
Chris Lattner
b7fcec2e8c
remove more bits of small section support.
...
llvm-svn: 76937
2009-07-24 03:16:53 +00:00
Chris Lattner
f4c7765d30
remove more remnants of small section support.
...
llvm-svn: 76936
2009-07-24 03:14:35 +00:00
Chris Lattner
09511ed243
Remove SectionKind::Small*. This was only used on mips, and is apparently
...
a sad mistake that is regretted. :)
llvm-svn: 76935
2009-07-24 03:11:51 +00:00
Evan Cheng
d18a7fc185
Thumb2 should use the register scavenger.
...
llvm-svn: 76930
2009-07-24 01:05:51 +00:00
Dan Gohman
4c5b26a78e
Fix whitespace.
...
llvm-svn: 76929
2009-07-24 01:03:59 +00:00
Evan Cheng
d13b8f8353
FLDD, FLDS, FCPYD, FCPYS, FSTD, FSTS, VMOVD, VMOVQ maps to the same instructions on all sub-targets.
...
llvm-svn: 76925
2009-07-24 00:53:56 +00:00
Owen Anderson
be00de7dfe
Privatize the ConstantVector tables.
...
llvm-svn: 76922
2009-07-24 00:36:24 +00:00
Eric Christopher
c205a8da9d
Update insertps handling based on feedback. Move to a v4f32 style
...
to support vector arguments and scalar arguments correctly. Update
lowering and fix comment to refer to pinsr* instead of insertps.
llvm-svn: 76921
2009-07-24 00:33:09 +00:00
Dan Gohman
62c8b40b66
Remove the IA-64 backend.
...
llvm-svn: 76920
2009-07-24 00:30:09 +00:00
David Goodwin
85bcdffa4f
Correctly handle the Thumb-2 imm8 addrmode. Specialize frame index elimination more exactly for Thumb-2 to get better code gen.
...
llvm-svn: 76919
2009-07-24 00:16:18 +00:00
Sean Callanan
73b927334f
Added a 2+-byte NOP instruction to the Intel tables,
...
for the assembler/disassembler to use.
llvm-svn: 76914
2009-07-23 23:39:34 +00:00
Owen Anderson
d449007c92
Privatize the ConstantStruct table.
...
llvm-svn: 76912
2009-07-23 23:25:33 +00:00
David Greene
d40b2dbb34
Write space padding as one string to speed up comment printing.
...
llvm-svn: 76910
2009-07-23 23:21:10 +00:00
Evan Cheng
90f66e1c4e
Thumb2 does not allow the use of "pc" register as part of the load / store address.
...
llvm-svn: 76909
2009-07-23 23:09:51 +00:00
Reid Kleckner
3f197c850d
Re-committing r76828 with the JIT memory manager changes now that the build
...
bots like the BumpPtrAllocator changes.
llvm-svn: 76902
2009-07-23 21:46:56 +00:00
Chris Lattner
bbcb16a3eb
"fix" PR4612, which is a crash on:
...
%0 = malloc [3758096384 x i32]
The "malloc" instruction doesn't support 64-bits correctly (see PR715),
and should be removed. Victor is actively working on fixing this, in
the meantime just don't crash.
llvm-svn: 76899
2009-07-23 21:26:18 +00:00
Duncan Sands
f4838d90e4
Revert r75581: it causes massive breakage in the Ada
...
testsuite, due to exception handling not working
correctly. Maybe because the libgcc unwinder is
miscompiled - not sure, and I won't have time to
look into it before leaving on holiday. Note that
miscompilations of libgcc are not picked up by the
nightly testers, because they dynamically link with
libgcc, so pick up the system version rather than
the version built as part of llvm-gcc. This is a
nasty flaw in the nightly testers. (On the other
hand the Ada testsuite links with the just built
libgcc).
llvm-svn: 76895
2009-07-23 19:00:02 +00:00
Daniel Dunbar
4499c47ea4
Switch ValueSymbolTable to StringRef based API.
...
llvm-svn: 76894
2009-07-23 18:52:12 +00:00
Daniel Dunbar
00155504f8
Add llvm::Value::getNameRef, for help in API migration.
...
llvm-svn: 76893
2009-07-23 18:50:53 +00:00
Reid Kleckner
5a7816053e
Re-committing changes from r76825 to BumpPtrAllocator with a fix and tests for
...
an off-by-one error.
llvm-svn: 76891
2009-07-23 18:34:13 +00:00
Evan Cheng
f6b88eae82
Fix up ARM constant island pass for Thumb2.
...
Also fixed up code to fully use the SoImm field for ADR on ARM mode.
llvm-svn: 76890
2009-07-23 18:27:47 +00:00
Evan Cheng
8997f6bfc1
Since we have moved unified assembly, switch to ADR instruction instead of a the difficult-to-read .set + add syntax to materialize pc-relative address.
...
Turns out this also fixed a poor code selection on Thumb1. I have no idea why we were using a mov + add to do the same thing as ADR before.
llvm-svn: 76889
2009-07-23 18:26:03 +00:00
Daniel Dunbar
b5adc13728
Convert StringMap to using StringRef for its APIs.
...
- Yay for '-'s and simplifications!
- I kept StringMap::GetOrCreateValue for compatibility purposes, this can
eventually go away. Likewise the StringMapEntry Create functions still follow
the old style.
- NIFC.
llvm-svn: 76888
2009-07-23 18:17:34 +00:00
David Goodwin
f3c839e0b9
Fix frame index elimination to correctly handle thumb-2 addressing modes that don't allow negative offsets. During frame elimination convert *i12 opcode to a *i8 when necessary due to a negative offset.
...
llvm-svn: 76883
2009-07-23 17:06:46 +00:00
Andreas Bolka
f0462da445
Cache dependence computation using FoldingSet.
...
This introduces an LDA-internal DependencePair class. The intention is,
that this is a place where dependence testers can store various results
such as SCEVs describing conflicting iterations, breaking conditions,
distance/direction vectors, etc.
llvm-svn: 76877
2009-07-23 14:32:46 +00:00
Evan Cheng
c21e149091
80 col violation.
...
llvm-svn: 76872
2009-07-23 07:58:08 +00:00
Chris Lattner
2ed4453d0e
refactor a blob of code out to a new 'FoldOrOfFCmps' function and
...
simplify it.
llvm-svn: 76866
2009-07-23 05:46:22 +00:00
Lang Hames
85f4012739
For real this time: PHI Def & Kill tracking added to PHIElimination.
...
llvm-svn: 76865
2009-07-23 05:44:24 +00:00
Chris Lattner
c687344f0c
Make some existing optimizations that would only trigger on scalars
...
also apply to vectors. This allows us to compile this:
#include <emmintrin.h>
__m128i a(__m128 a, __m128 b) { return a==a & b==b; }
__m128i b(__m128 a, __m128 b) { return a!=a | b!=b; }
to:
_a:
cmpordps %xmm1, %xmm0
ret
_b:
cmpunordps %xmm1, %xmm0
ret
with clang instead of to a ton of horrible code.
llvm-svn: 76863
2009-07-23 05:32:17 +00:00
Chris Lattner
af6fdef894
refactor a bunch of code out into a helper function,
...
no functionality change.
llvm-svn: 76859
2009-07-23 05:14:02 +00:00
Lang Hames
1716e28365
Added PHI Def & Kill tracking to PHIElimination pass.
...
llvm-svn: 76849
2009-07-23 04:34:03 +00:00
Eric Christopher
c9299d5756
Support insertps via the intrinsic and add a couple of simple
...
testcases to make sure it's being generated.
llvm-svn: 76843
2009-07-23 02:22:41 +00:00
Sanjiv Gupta
d62bebab22
Do not call getMangledName on Intrinsics.
...
llvm-svn: 76842
2009-07-23 02:11:04 +00:00
Devang Patel
45ce5c2ac1
MDString
...
- Rename member function size(). New name is length().
- Store string beginning and length. Earlier it used to store string end.
llvm-svn: 76841
2009-07-23 02:00:51 +00:00
Andreas Bolka
b33d956e21
Minor cosmetics: indentation, formatting, naming.
...
llvm-svn: 76839
2009-07-23 01:57:06 +00:00
Reid Kleckner
6f9bf7f028
Reverting r76825 and r76828, since they caused clang runtime errors and some build failure involving memset.
...
llvm-svn: 76838
2009-07-23 01:40:54 +00:00
Zhongxing Xu
cd7c9007d1
add header for 'memset'.
...
llvm-svn: 76837
2009-07-23 01:38:47 +00:00
Devang Patel
63cece4454
Silence "uninitialized use" warning.
...
llvm-svn: 76836
2009-07-23 01:36:16 +00:00
Devang Patel
6b2162686a
Derive MDNode from MetadataBase instead of Constant. Emit MDNodes into METADATA_BLOCK in bitcode file.
...
llvm-svn: 76834
2009-07-23 01:07:34 +00:00
Eric Christopher
973fc2d7ab
Fix error message for correct opcode.
...
llvm-svn: 76829
2009-07-23 01:01:32 +00:00
Reid Kleckner
b500f07edf
Make the JIT code emitter properly retry and ask for more memory when it runs
...
out of memory, and also make the default memory manager allocate more memory
when it runs out.
Also, switch function stubs and global data over to using the BumpPtrAllocator.
This makes it so the JIT no longer mmaps (or the equivalent on Windows) 16 MB
of memory, and instead allocates in 512K slabs. I suspect this size could go
lower, especially on embedded platforms, now that more slabs can be allocated.
llvm-svn: 76828
2009-07-23 00:49:59 +00:00
Reid Kleckner
4c892c05ec
Parameterize the BumpPtrAllocator over a slab allocator. It defaults to using
...
malloc, so there should be no functional changes to other code.
These changes are necessary since I have plans to use this allocator in the JIT
memory manager, and it needs a special allocator.
I also added some tests which helped me pinpoint some bugs.
llvm-svn: 76825
2009-07-23 00:30:41 +00:00
Chris Lattner
a3b58f4ecd
remove SectionFlags::Small: it is only used on Xcore, and we'll find
...
a better solution for it in the future.
llvm-svn: 76818
2009-07-22 23:27:22 +00:00
Dan Gohman
840e7f252e
x86 isel tweak: use lea (%reg,%reg) instead of lea (,%reg,2).
...
llvm-svn: 76817
2009-07-22 23:26:55 +00:00
Dan Gohman
001d777207
Rename the new unsigned and signed keywords to nuw and nsw,
...
which stand for no-unsigned-wrap and no-signed-wrap.
llvm-svn: 76810
2009-07-22 22:44:56 +00:00
David Greene
d1f9f45b05
Reorder if-else branches as suggested by Bill.
...
llvm-svn: 76808
2009-07-22 22:32:19 +00:00
David Goodwin
6fa63db9be
Fix typo in addrmode definition.
...
llvm-svn: 76806
2009-07-22 22:24:31 +00:00
Evan Cheng
4a77f28c47
Use getTargetConstant instead of getConstant since it's meant as an constant operand.
...
llvm-svn: 76803
2009-07-22 22:03:29 +00:00
David Greene
fede97eac6
Constify the key in Mi2IndexMap.
...
llvm-svn: 76801
2009-07-22 21:56:14 +00:00
Evan Cheng
88dbc00ca7
Ignore undef uses.
...
llvm-svn: 76799
2009-07-22 21:51:42 +00:00
Daniel Dunbar
3119e6a609
Switch some clients to Value::getName(), and other getName() user
...
simplification.
- NFC
llvm-svn: 76789
2009-07-22 21:33:09 +00:00
Devang Patel
963b3bc974
Fix indentation.
...
llvm-svn: 76787
2009-07-22 21:10:50 +00:00
Daniel Dunbar
0ff394b13d
Simplify some uses of Value::getName()
...
llvm-svn: 76786
2009-07-22 21:10:12 +00:00
Daniel Dunbar
51818313fe
Remove unnecessary store to temporary std::string.
...
llvm-svn: 76782
2009-07-22 20:46:46 +00:00
David Greene
76d89c51ce
Put comment printing under asm-verbose.
...
llvm-svn: 76780
2009-07-22 20:33:26 +00:00
Daniel Dunbar
b6a40026a7
Fix indentation.
...
llvm-svn: 76778
2009-07-22 20:26:37 +00:00
David Greene
7f92a15a4b
Make some changes suggested by Bill and Evan.
...
llvm-svn: 76775
2009-07-22 20:08:25 +00:00
Devang Patel
7b31d8224d
Fix thinko.
...
llvm-svn: 76769
2009-07-22 18:56:16 +00:00
Devang Patel
04a1939c08
Use isa<> instead of dyn_cast<>.
...
llvm-svn: 76767
2009-07-22 18:35:25 +00:00
Devang Patel
a047636be2
Add replaceAllUsesWith() to FE replace debug info constructs while building complex types.
...
llvm-svn: 76765
2009-07-22 18:23:44 +00:00
Devang Patel
5456f0ba29
Do not print "metadata" twice while printing MDString.
...
This fixes unittest failure.
llvm-svn: 76764
2009-07-22 18:10:23 +00:00
Evan Cheng
ae91b0616b
Eliminate a redudant check Eli pointed out.
...
llvm-svn: 76762
2009-07-22 18:08:05 +00:00
Sanjiv Gupta
2168098478
Fixed build warning. No functionality change.
...
llvm-svn: 76761
2009-07-22 17:58:47 +00:00
Devang Patel
5794cb80ad
Introduce MetadataBase, a base class for MDString and MDNode.
...
Derive MDString directly from MetadataBase.
Introduce new bitcode block to hold metadata.
llvm-svn: 76759
2009-07-22 17:43:22 +00:00
Chris Lattner
573e2cde50
doxygenify
...
llvm-svn: 76750
2009-07-22 16:53:56 +00:00
Duncan Sands
16fd5fb3e8
Add newline at end of file.
...
llvm-svn: 76736
2009-07-22 13:20:41 +00:00
Richard Osborne
7f495fd2bd
Thread local globals don't require special handling by the linker and so can
...
be placed in the standard data / bss sections.
llvm-svn: 76735
2009-07-22 11:01:00 +00:00
Duncan Sands
2a4535353f
Revert commit 76707, it was breaking the llvm-gcc build
...
on linux platforms. The binutils assembler does not
recognize the "s" flag, see for example
http://sourceware.org/binutils/docs/as/Section.html
llvm-svn: 76733
2009-07-22 10:35:05 +00:00
Eli Friedman
ca2e01b721
Don't give a massive inlining cost bonus to available_externally
...
functions with a single use; eliminating the single use may eliminate
the function from the current module, but usually doesn't eliminate
it from the final program.
llvm-svn: 76730
2009-07-22 08:12:59 +00:00
Evan Cheng
34576850e1
Don't forget D16 - D31 are clobbered by calls and sjlj eh.
...
llvm-svn: 76729
2009-07-22 06:46:53 +00:00
Evan Cheng
4fdb43a89d
Add R12 to the list of registers clobbered by 16-bit Thumb calls as a pre-caution. r12 could be live once we have mixed 32-bit and 16-bit instructions.
...
llvm-svn: 76728
2009-07-22 06:37:28 +00:00
Evan Cheng
2e2a1cbab7
Fix a obvious copy-n-paste bug.
...
llvm-svn: 76727
2009-07-22 06:12:40 +00:00
Evan Cheng
005330f8a0
Get rid one of the getRegisterNumbering. Also add D16 - D31.
...
llvm-svn: 76725
2009-07-22 05:55:18 +00:00
Eli Friedman
2b4857cdff
Add support for MMX VSETCC.
...
llvm-svn: 76713
2009-07-22 01:06:52 +00:00
Sean Callanan
1e9eb16a45
Added the unconditional JMP with an 8-bit relocation for the
...
assembler / disassembler.
llvm-svn: 76712
2009-07-22 01:05:20 +00:00
Evan Cheng
f0af946ac8
Add an entry.
...
llvm-svn: 76711
2009-07-22 00:58:27 +00:00
Chris Lattner
2ef030ec2e
inline the two MergeableConstSection implementations into their
...
only caller.
llvm-svn: 76710
2009-07-22 00:47:11 +00:00
Chris Lattner
ced616dd50
set the ELF "small" flag on objects that end up in .rodata.cst4 consistently,
...
updating a mips testcase to expect it.
llvm-svn: 76707
2009-07-22 00:41:56 +00:00
Chris Lattner
d966e55a42
don't set the small flag yet.
...
llvm-svn: 76706
2009-07-22 00:30:39 +00:00
Chris Lattner
e2bd5bc939
remove the SelectSectionForMachineConst hook, replacing it with
...
a new getSectionForMergableConstant hook. This removes one dependence
of TAI on Type, and provides the hook with enough info to make the
right decision based on whether the global has relocations etc.
llvm-svn: 76705
2009-07-22 00:28:43 +00:00
Evan Cheng
82499c09ff
Let each target determines whether a machine instruction is dead. If true, that allows late codeine passes to delete it.
...
This is considered a workaround. The problem is some targets are not modeling side effects correctly. PPC is apparently one of those. This patch allows ppc llvm-gcc to bootstrap on Darwin. Once we find out which instruction definitions are wrong, we can remove the PPCInstrInfo workaround.
llvm-svn: 76703
2009-07-22 00:25:27 +00:00
Owen Anderson
cc287b28c9
Get rid of the Pass+Context magic.
...
llvm-svn: 76702
2009-07-22 00:24:57 +00:00
Chris Lattner
48dffde0d7
reimplement Constant::ContainsRelocations as
...
Constant::getRelocationInfo(), which has a much simpler
to use API. It still should not be part of libvmcore, but
is better than it was. Also teach it to be smart about
hidden visibility.
llvm-svn: 76700
2009-07-22 00:05:44 +00:00
Evan Cheng
b639684766
Fixing cp island pass. Step 1: Determine whether the constant pool offset can be
...
negative on an individual bases rather than basing on whether it's in thumb
mode.
llvm-svn: 76698
2009-07-21 23:56:01 +00:00
Evan Cheng
149b0d4cf1
Fix comment.
...
llvm-svn: 76693
2009-07-21 23:54:22 +00:00
Chris Lattner
4d3b78e0f5
simplify code now that it is inlined.
...
llvm-svn: 76689
2009-07-21 23:49:55 +00:00
Lang Hames
0e61f87ea3
Exposed PHIElimination pass within CodeGen.
...
llvm-svn: 76688
2009-07-21 23:47:33 +00:00
Chris Lattner
b9332126cc
Now that RelocBehaviour() is never overloaded, it doesn't need to be
...
virtual. Just inline it into its two current call sites in preparation
for simplifying the code.
llvm-svn: 76686
2009-07-21 23:47:11 +00:00
Chris Lattner
c1c5dab4c4
this doesn't break any of the 4 ia64 tests.
...
llvm-svn: 76683
2009-07-21 23:42:24 +00:00
Chris Lattner
5c144a5948
alpha doesn't need to redefine this: it only supports PIC codegen anyway.
...
llvm-svn: 76682
2009-07-21 23:41:35 +00:00
David Greene
ddaf106a0c
Add some support for iterative coalescers to calculate a joined live
...
range's weight properly. This is turned off right now in the sense that
you'll get an assert if you get into a situation that can only be caused
by an iterative coalescer. All other code paths operate exactly as
before so there is no functional change with this patch. The asserts
should be disabled if/when an iterative coalescer gets added to trunk.
llvm-svn: 76680
2009-07-21 23:36:14 +00:00
Chris Lattner
fb908d7671
no really, I can spell!
...
llvm-svn: 76679
2009-07-21 23:36:01 +00:00
Chris Lattner
11b49ed2ce
add an API so target-independent codegen can determine if a constant
...
pool entry will require relocations against it. I implemented this
conservatively for ARM, someone who is knowledgable about it should
see if this can be improved.
llvm-svn: 76678
2009-07-21 23:34:23 +00:00
Dan Gohman
b45091f0f9
Convert instcombine from using using getAnalysis<TargetData> to
...
getAnalysisIfAvailable<TargetData>.
llvm-svn: 76676
2009-07-21 23:21:54 +00:00
Dan Gohman
8577dd4cca
Permit the IntPtrTy argument to isEliminableCastPair to be null,
...
to help support use when TargetData is not available.
llvm-svn: 76675
2009-07-21 23:19:40 +00:00
Bruno Cardoso Lopes
3483574772
Change ELFCodeEmitter logic to emit the constant pool and jump tables to
...
their appropriate sections before the code itself. They need to be emitted
before the function because on some targets (x86 but not x86_64) the later
may reference a JT or CP entry address
llvm-svn: 76672
2009-07-21 23:13:26 +00:00
Dan Gohman
190d29cb5c
Replace the original ad-hoc code for determining whether (v pred w) implies
...
(x pred y) with more thorough code that does more complete canonicalization
before resorting to range checks. This helps it find more cases where
the canonicalized expressions match.
llvm-svn: 76671
2009-07-21 23:03:19 +00:00
Chris Lattner
fb3e6ae8b2
remove the last bits of SectionFlagsForGlobal. There is some flag here that
...
depends on XS1A, but I think the ReadOnlySection is already set up for this
and there is no testcase that this breaks. If this is really needed, we can
add the appropriate parameterization to TargetAsmInfo in the future to support
this.
llvm-svn: 76667
2009-07-21 22:42:37 +00:00
Chris Lattner
bca235c1d3
don't mask out the small flag and then reapply it later.
...
llvm-svn: 76666
2009-07-21 22:39:28 +00:00
Chris Lattner
34ba5422cd
if Xcore doesn't support TLS, it doesn't have to worry about thread local LLVM IR, it should be rejected by a front-end.
...
llvm-svn: 76665
2009-07-21 22:37:38 +00:00
Chris Lattner
aa793632ff
remove the Xcore implementation of SelectSectionForGlobal. While you have
...
to twist your brain to see it, I believe it is the same as ELFTargetAsmInfo::SelectSectionForGlobal.
llvm-svn: 76664
2009-07-21 22:36:53 +00:00
Chris Lattner
8a24ab398f
simplify based on the fact that darwin always uses L/l.
...
llvm-svn: 76662
2009-07-21 22:32:55 +00:00
Chris Lattner
b52c8153f3
make some stuff private.
...
llvm-svn: 76661
2009-07-21 22:30:39 +00:00
Chris Lattner
0a3a6f2ceb
Remove the XCore custom implementation of MergeableConstSection, relying on
...
the generic ELF version instead. This will result in its mergable constant
sections getting named ".rodata.cst4" instead of ".cp.const4", but the
linker looks at the section flags, not the name of the section AFAICT.
llvm-svn: 76659
2009-07-21 22:25:52 +00:00
Chris Lattner
8d061f011b
inline a trivial method into its only call site and fix indentation of cases
...
llvm-svn: 76654
2009-07-21 21:29:08 +00:00
Chris Lattner
4815d4919c
Remove some overridden functions in XCoreTargetAsmInfo that are
...
implemented exactly the same way as its ELFTargetAsmInfo subclass
has them.
llvm-svn: 76653
2009-07-21 21:26:32 +00:00
Chris Lattner
135caf1a2b
revert r76602, 76603, and r76615, pending design discussions.
...
llvm-svn: 76646
2009-07-21 21:12:58 +00:00
Chris Lattner
589a37a068
minor cleanups.
...
llvm-svn: 76645
2009-07-21 21:09:35 +00:00
Owen Anderson
a8637e9824
Privatize the ConstantArray table.
...
llvm-svn: 76639
2009-07-21 20:55:28 +00:00
Eli Friedman
a78b44069b
Missed a piece of the commit to remove the shift flavor.
...
llvm-svn: 76635
2009-07-21 20:15:24 +00:00
Owen Anderson
bdcb99324a
Privatize the first of the value maps.
...
llvm-svn: 76634
2009-07-21 20:13:12 +00:00
Eli Friedman
45160af6bd
Remove shift amount flavor. It isn't actually complete enough to
...
be useful, and it's currently unused. (Some issues: it isn't actually
rich enough to capture the semantics on many architectures, and
semantics can vary depending on the type being shifted.)
llvm-svn: 76633
2009-07-21 20:12:16 +00:00
Eli Friedman
a62553ec99
Remove a couple of already-implemented notes.
...
llvm-svn: 76631
2009-07-21 20:05:43 +00:00
David Greene
94bfedaf40
Prefix IR dumps with LiveInterval indices when possible. This turns
...
this:
%ESI<def> = MOV32rr %EDI<kill>
ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
%reg1027<def> = MOVZX64rr32 %ESI
%reg1027<def> = ADD64ri8 %reg1027, 15, %EFLAGS<imp-def,dead>
%reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
%RDI<def> = MOV64rr %RSP
%RDI<def> = SUB64rr %RDI, %reg1027<kill>, %EFLAGS<imp-def,dead>
%RSP<def> = MOV64rr %RDI
into this:
4 %reg1024<def> = MOV32rr %EDI<kill>
12 ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>
20 %reg1025<def> = MOVZX64rr32 %reg1024
28 %reg1026<def> = MOV64rr %reg1025<kill>
36 %reg1026<def> = ADD64ri8 %reg1026, 15, %EFLAGS<imp-def,dead>
44 %reg1027<def> = MOV64rr %reg1026<kill>
52 %reg1027<def> = AND64ri8 %reg1027, -16, %EFLAGS<imp-def,dead>
60 %reg1028<def> = MOV64rr %RSP
68 %reg1029<def> = MOV64rr %reg1028<kill>
76 %reg1029<def> = SUB64rr %reg1029, %reg1027<kill>, %EFLAGS<imp-def,dead>
84 %RSP<def> = MOV64rr %reg1029
This helps greatly when debugging register allocation and coalescing
problems.
llvm-svn: 76615
2009-07-21 18:56:32 +00:00
Evan Cheng
66f1d7a0e1
Add fake v7 itineraries for now.
...
llvm-svn: 76612
2009-07-21 18:54:14 +00:00
Chris Lattner
3d4ab7a231
make AsmPrinter::doFinalization iterate over the global variables
...
and call PrintGlobalVariable, allowing elimination and simplification
of various targets.
llvm-svn: 76604
2009-07-21 18:38:57 +00:00
David Greene
979d7aa03a
Add PrefixPrinter arguments to the dump routines for MachineFunction and
...
MachineBasicBlock. We'll use these shortly.
llvm-svn: 76603
2009-07-21 18:27:05 +00:00
Evan Cheng
192fc19379
Do not select tSXTB / tSXTH in thumb2 mode.
...
llvm-svn: 76600
2009-07-21 18:15:26 +00:00
Owen Anderson
7f61f8dc30
Rename getConstantInt{True|False} to get{True|False} at Chris' behest.
...
llvm-svn: 76598
2009-07-21 18:03:38 +00:00
Chris Lattner
89785b23b8
reduce indentation by using an early exit.
...
llvm-svn: 76596
2009-07-21 17:59:36 +00:00
Ted Kremenek
60d0ab4838
Update CMake files.
...
llvm-svn: 76595
2009-07-21 17:43:20 +00:00
Chris Lattner
ac0f5e081e
whitespace cleanups, make the MipsAsmPrinter::doInitialization
...
chain to the super class instead of initializing mangler directly.
This gives it .file and module level inline asm support among other
things.
llvm-svn: 76593
2009-07-21 17:39:48 +00:00
Chris Lattner
433fbf959a
fix Sparc, SystemZ, and MSP430 to not override AsmPrinter::doInitialization.
...
This eliminates redundancy setting up the mangler and adds support to them
for module-level inline asm and a .file directive.
llvm-svn: 76592
2009-07-21 17:37:35 +00:00
Chris Lattner
0f65fbf095
Rename LessPrivateGlobalPrefix -> LinkerPrivateGlobalPrefix to match the
...
LLVM IR concept.
llvm-svn: 76590
2009-07-21 17:30:51 +00:00
Chris Lattner
61fcb8d26b
fix indentation
...
llvm-svn: 76587
2009-07-21 17:25:13 +00:00
Chris Lattner
31a9d57bb9
remove an unneeded override.
...
llvm-svn: 76586
2009-07-21 17:23:41 +00:00
Chris Lattner
2c8fed2c75
more random whitespace cleanup, eliminate #define, avoid copying
...
vectors needlessly, doxygenify comments, improve constness, etc.
llvm-svn: 76585
2009-07-21 17:20:18 +00:00
Chris Lattner
99a474f026
some simple whitespace cleanup, avoid copying vectors for no reason
...
as much, etc.
llvm-svn: 76578
2009-07-21 16:44:47 +00:00
Evan Cheng
c142755cec
Another rewriter bug exposed by recent coalescer changes. ReuseInfo::GetRegForReload() should make sure the "switched" register is in the desired register class. I'm surprised this hasn't caused more failures in the past.
...
llvm-svn: 76558
2009-07-21 09:15:00 +00:00
Daniel Dunbar
3447c5ce67
Add missing include.
...
llvm-svn: 76555
2009-07-21 08:58:44 +00:00
Daniel Dunbar
6f594a00b0
Switch this API to StringRef.
...
llvm-svn: 76554
2009-07-21 08:57:31 +00:00
Daniel Dunbar
a0a76c174b
Simplify / normalize some uses of Value::getName.
...
llvm-svn: 76553
2009-07-21 08:54:24 +00:00
Daniel Dunbar
1edc7a0eab
Remove some unused code.
...
llvm-svn: 76541
2009-07-21 07:08:59 +00:00
Bruno Cardoso Lopes
2015382398
Support adding relocations for data sections, handling the cases where
...
global declared symbols are initialized with references from other global
symbols.
llvm-svn: 76540
2009-07-21 06:51:32 +00:00
Evan Cheng
d76397061a
Add jumps with 8-bit relocation for assembler / disassembler. Patch by Sean Callanan.
...
llvm-svn: 76536
2009-07-21 06:00:18 +00:00
Evan Cheng
0cf19155ef
Fix a dagga combiner bug: avoid creating illegal constant.
...
Is this really a winning transformation?
fold (shl (srl x, c1), c2) -> (shl (and x, (shl -1, c1)), (sub c2, c1)) or
(srl (and x, (shl -1, c1)), (sub c1, c2))
llvm-svn: 76535
2009-07-21 05:40:15 +00:00
Owen Anderson
b64eef73cf
Move a bit more state over to the LLVMContext.
...
llvm-svn: 76533
2009-07-21 02:47:59 +00:00
Bill Wendling
50e5f4884a
Add the following functions:
...
- SYSCALL (normal fast system call instruction) [0f 05]
- SYSENTER (system call entry instruction) [0f 34]
- SYSEXIT (system call exit instruction) [0f 35]
- SYSEXIT64 (system call exit instruction to 64-bit user code) [REX.W 0f 35]
- SYSRET (system call return instruction) [0f 07]
Patch by Sean Callanan.
llvm-svn: 76528
2009-07-21 01:07:24 +00:00
Dan Gohman
00fa00fec8
Make the range calculations for addrecs to be more conservative,
...
as they aren't currently prepared to handle complicated overflow
cases.
llvm-svn: 76524
2009-07-21 00:42:47 +00:00
Dan Gohman
4100aea6ad
Whitespace cleanups.
...
llvm-svn: 76523
2009-07-21 00:38:55 +00:00
Dan Gohman
a37a433693
Minor code simplification.
...
llvm-svn: 76521
2009-07-21 00:37:45 +00:00
Evan Cheng
949c2404a2
Fix ARM isle code that optimize multiply by constants which are power-of-2 +/- 1.
...
llvm-svn: 76520
2009-07-21 00:31:12 +00:00
Evan Cheng
443ae1d494
Cross RC coalescing is now on by default.
...
llvm-svn: 76519
2009-07-21 00:22:59 +00:00
Dale Johannesen
8b0ece80d9
revert 76503 while I figure out what's going on
...
llvm-svn: 76517
2009-07-21 00:12:29 +00:00
Dan Gohman
47100f32c0
Add a comment to clarify why there isn't any code in this spot.
...
llvm-svn: 76505
2009-07-20 23:54:43 +00:00
Dan Gohman
857ccb8149
Remove the code that tried to evaluate whether (A pred B) is known
...
by determining if (B pred (B-A)) is known, as it doesn't handle
overflow correctly.
llvm-svn: 76504
2009-07-20 23:53:35 +00:00
Dale Johannesen
ee3f2d6dc3
Make sure a global matching asm 'i' constraint gets its
...
flags set properly. (hasMemory is clearly irrelevant
when matching 'i', I don't understand what this was
supposed to be doing.)
gcc.apple/asm-block-25.c (test passed before by
accident, but generated code was wrong)
llvm-svn: 76503
2009-07-20 23:39:13 +00:00
Dale Johannesen
04c5ef4742
Move stripping of bitcasts in inline asm arguments
...
to a place where it affects everything. Occurs
only on calls AFAIK.
llvm-svn: 76502
2009-07-20 23:27:39 +00:00
Dan Gohman
b92b14f20b
Minor code simplification.
...
llvm-svn: 76496
2009-07-20 22:41:51 +00:00
Dan Gohman
74a435e9f1
The upper argument of ConstantRange is exclusive, not inclusive.
...
llvm-svn: 76492
2009-07-20 22:34:18 +00:00
Chris Lattner
27a2e74e58
clean up some formatting, indent by 2 instead of 4.
...
llvm-svn: 76490
2009-07-20 22:23:48 +00:00
David Goodwin
c5ee8fbaa7
CMP and TST define CPSR, not use it.
...
llvm-svn: 76489
2009-07-20 22:13:31 +00:00
David Greene
1ac6d4ac0e
Re-apply 75490, 75806 and 76177 with fixes and tests. Efficiency comes
...
next.
llvm-svn: 76486
2009-07-20 22:02:59 +00:00
Bill Wendling
ca94e95735
Simplify the code in DarwinTargetAsmInfo::emitUsedDirectiveFor so that humans can understand it.
...
llvm-svn: 76480
2009-07-20 21:38:26 +00:00