Nick Lewycky
cd6475ebe9
Correct the comment; this applies to fcmp too.
...
llvm-svn: 82380
2009-09-20 06:27:35 +00:00
Nick Lewycky
13510f330b
Remove tab, again.
...
llvm-svn: 82379
2009-09-20 06:26:34 +00:00
Nick Lewycky
5cbc7c4ae9
Teach the constant folder how to not a cmpinst.
...
llvm-svn: 82378
2009-09-20 06:24:51 +00:00
Chris Lattner
acb70ff251
smallvectorize getExtraOptionNames
...
llvm-svn: 82377
2009-09-20 06:21:43 +00:00
Chris Lattner
cacb071233
minor cleanups.
...
llvm-svn: 82375
2009-09-20 06:18:38 +00:00
Chris Lattner
b1db248193
strength reduce further StringRef-> const char*, saving another 620 bytes.
...
llvm-svn: 82372
2009-09-20 05:53:47 +00:00
Nick Lewycky
93d1111b1c
Try turning icmp(bitcast(x), bitcast(y)) into icmp(bitcast(bitcast(x)), y) in
...
the hopes that the two bitcasts will merge.
llvm-svn: 82371
2009-09-20 05:48:50 +00:00
Chris Lattner
b7eb454f66
switch an std::string to StringRef, shaving 400 bytes off CommandLine.o
...
llvm-svn: 82370
2009-09-20 05:48:01 +00:00
Nick Lewycky
b96f9df101
Remove tabs I added.
...
llvm-svn: 82369
2009-09-20 05:47:45 +00:00
Chris Lattner
346c1f60db
the switch from std::map -> StringMap caused --help output to be in
...
non-sorted order, restore the sort.
llvm-svn: 82368
2009-09-20 05:37:24 +00:00
Chris Lattner
483832f33a
eliminate the duplicate detection loop, moving it into the loop that populates the Opts vector in the first place.
...
llvm-svn: 82367
2009-09-20 05:22:52 +00:00
Chris Lattner
5b8c4b309a
Eliminate a masochistic "algorithm" loop, shrinking CommandLine.o from 71524->70700 bytes.
...
llvm-svn: 82366
2009-09-20 05:18:28 +00:00
Chris Lattner
3a20fca97c
don't use count + insert, just do insert + failure. Also, instead of deleting from
...
the middle of a vector, swap the last element in and pop_back. Also saves 330 bytes :)
llvm-svn: 82365
2009-09-20 05:15:12 +00:00
Chris Lattner
488639ad3b
switch to SmallPtrSet instead of std::set, saving 1K from the
...
release-asserts .o file (72900->71856).
llvm-svn: 82364
2009-09-20 05:12:14 +00:00
Chris Lattner
80674c762c
change an std::sort to an array_pod_sort call, shrinking CommandLine.o by 9%.
...
llvm-svn: 82363
2009-09-20 05:06:23 +00:00
Chris Lattner
6a6a75896d
Several changes together in a murky mess:
...
1. Change some "\n" -> '\n'.
2. eliminte some std::string's by using raw_ostream::indent.
3. move a bunch of code out of the main arg parser routine into
a new static HandlePrefixedOrGroupedOption function.
4. Greatly simplify the implementation of getOptionPred, and make
it avoid splitting prefix options at = when that doesn't match
a non-prefix option.
llvm-svn: 82362
2009-09-20 05:03:30 +00:00
Nick Lewycky
42065f1555
Clean up the usage of evaluateICmpRelation's return value.
...
Add another line to the ConstantExprFold test to demonstrate the GEPs may not
wrap around in either the signed or unsigned senses.
llvm-svn: 82361
2009-09-20 04:27:06 +00:00
Daniel Dunbar
16b2c02cd3
Fix refacto, this code was expecting to stride past the argument prefix.
...
llvm-svn: 82360
2009-09-20 04:03:41 +00:00
Daniel Dunbar
4e33798de0
Strip trailing whitespace.
...
llvm-svn: 82359
2009-09-20 04:03:34 +00:00
Nick Lewycky
261d7a49b1
Remove dead store by taking a guess at what Chris meant. I wasn't able to
...
design a testcase that would tickle this behaviour.
llvm-svn: 82357
2009-09-20 03:48:46 +00:00
Bill Wendling
fe2bcb9889
Still one more thing wrong here...
...
llvm-svn: 82356
2009-09-20 02:27:06 +00:00
Daniel Dunbar
378331a13d
Tabs -> spaces, and remove trailing whitespace.
...
llvm-svn: 82355
2009-09-20 02:20:51 +00:00
Bill Wendling
d402d7374a
Here's fun! It turns out that these filter functions can be internal. If they're
...
internal, they shouldn't use the indirect pointer stuff. In the case of
throw_rethrow_test, it was marked as 'internal' and calculated its own offset to
its contents.
llvm-svn: 82354
2009-09-20 02:19:49 +00:00
Nick Lewycky
79db45a852
Delete dead code. sext and zext can not turn integers into pointers. Further,
...
the optimization described in the comment is only valid with target data.
llvm-svn: 82353
2009-09-20 02:11:47 +00:00
Chris Lattner
462444d1c8
convert argname to StringRef, simplifying LookupOption.
...
llvm-svn: 82352
2009-09-20 02:02:24 +00:00
Chris Lattner
2c4d26f38f
convert 'Value' to StringRef which makes it easier to
...
maintain the "null is unspecified, empty is empty" semantics.
llvm-svn: 82351
2009-09-20 01:53:12 +00:00
Chris Lattner
08e8c98fec
Change CommaSeparated processing to do it with StringRef instead of temporary std::strings.
...
This requires StringRef'izing ProvideOption which I also did.
llvm-svn: 82350
2009-09-20 01:49:31 +00:00
Nick Lewycky
ca1f29ee1b
Value* were never meant to be const. Removing constness from the constant
...
folder removes a lot of const_casting and requires no changes to clang or
llvm-gcc.
llvm-svn: 82349
2009-09-20 01:35:59 +00:00
Chris Lattner
5b5a0ec095
rewrite ParseCStringVector in terms of stringref.
...
llvm-svn: 82348
2009-09-20 01:33:46 +00:00
Chris Lattner
72732da2f0
move a couple non-trivial methods out of line, add new
...
find_first_of/find_first_of methods.
llvm-svn: 82347
2009-09-20 01:22:16 +00:00
Chris Lattner
d32099fb1f
coding style cleanup
...
llvm-svn: 82346
2009-09-20 01:11:23 +00:00
Chris Lattner
85478e8cd1
convert a bunch more stuff to use StringRef. The ArgName arguments are now
...
stringref because they may not be nul terminated. For options like -Lfoo
this now avoids a O(n) temporary std::strings where N is the length of
the string after -L.
llvm-svn: 82345
2009-09-20 00:40:49 +00:00
Dale Johannesen
f8d05d7ce6
When computing live intervals for earlyclobber operands,
...
we pushed the beginning of the interval back 1, so the
interval would overlap with inputs that die. We were
also pushing the end of the interval back 1, though,
which means the earlyclobber didn't overlap with other
output operands. Don't do this. PR 4964.
llvm-svn: 82342
2009-09-20 00:36:41 +00:00
Chris Lattner
bb111eeae4
avoid a bunch of malloc thrashing for PositinoalVals by eliminating
...
a std::vector and a bunch of std::string temporaries.
llvm-svn: 82341
2009-09-20 00:07:40 +00:00
Nick Lewycky
6ad3b51864
Teach the constant folder how to handle a few simple i1 cases.
...
llvm-svn: 82340
2009-09-20 00:04:02 +00:00
Chris Lattner
b29a51b4d4
Avoid some temporary strings.
...
llvm-svn: 82339
2009-09-19 23:59:02 +00:00
Chris Lattner
d2a0138c62
add some more overloads of StringRef::getAsInteger for
...
common and useful integer types.
llvm-svn: 82338
2009-09-19 23:58:48 +00:00
Bill Wendling
5dfef4dce4
Revert r82274. It's causing failures in the CINT2006 benchmarks.
...
llvm-svn: 82336
2009-09-19 22:02:37 +00:00
Daniel Dunbar
9ae3c56c92
Fix indentation.
...
llvm-svn: 82333
2009-09-19 20:40:14 +00:00
Daniel Dunbar
39c0d90339
Strip trailing whitespace.
...
llvm-svn: 82332
2009-09-19 20:40:05 +00:00
Nick Lewycky
3b7df4bbd5
Remove the default value for ConstantStruct::get's isPacked parameter and
...
update the code which was broken by this.
llvm-svn: 82327
2009-09-19 20:30:26 +00:00
Chris Lattner
e6fa81a475
provide a "strtoull" operation that works on StringRef's.
...
llvm-svn: 82322
2009-09-19 19:47:14 +00:00
Nick Lewycky
e539e55f2a
Add a comment explaining why you would ever want to do this.
...
llvm-svn: 82319
2009-09-19 19:00:06 +00:00
Chris Lattner
86c1fbbc0a
convert a bunch of std::strings to use StringRef. This should eliminate
...
a massive number of temporary strings created when parsing a command line.
More still left to eliminate.
llvm-svn: 82318
2009-09-19 18:55:05 +00:00
Nick Lewycky
441d1e8dd5
Lett users of sparse propagation do their own thing with phi nodes if they want
...
to. This can be combined with LCSSA or SSI form to store more information on a
PHINode than can be computed by looking at its incoming values.
llvm-svn: 82317
2009-09-19 18:33:36 +00:00
Duncan Sands
6f1a8215c0
The flag "--dot-cfg-only" is at the moment equivalent to the flag "--dot-cfg".
...
It prints the content of all bbs, instead of printing empty bbs to make the
CFG more readable. Fix this. Patch by Tobias Grosser.
llvm-svn: 82315
2009-09-19 11:25:44 +00:00
Evan Cheng
a82b43fb81
Fix funky comments.
...
llvm-svn: 82314
2009-09-19 10:09:15 +00:00
Benjamin Kramer
b8b2ef98f4
Try to speed up the slowest parts of the CommandLine library
...
- Replace std::map<std::string with StringMap
- Eliminate unnecessary std::string copies
- ~10% speed-up for clang's testsuite on my machine (debug build)
llvm-svn: 82312
2009-09-19 10:01:45 +00:00
Evan Cheng
7714c8412d
Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.
...
llvm-svn: 82311
2009-09-19 09:51:03 +00:00
Victor Hernandez
fe5347d782
Enhance transform passes so that they apply the same tranforms to malloc calls as to MallocInst.
...
Reviewed by Dan Gohman.
llvm-svn: 82300
2009-09-18 22:35:49 +00:00
Bob Wilson
0ad3a28b10
Fix a comment typo and some whitespace.
...
llvm-svn: 82285
2009-09-18 21:43:11 +00:00
Bob Wilson
1b311a6a9b
Fix a typo in an assertion message.
...
llvm-svn: 82284
2009-09-18 21:42:44 +00:00
Bill Wendling
5e030245e8
Factor out label difference creation.
...
llvm-svn: 82282
2009-09-18 21:37:56 +00:00
Victor Hernandez
66d4042178
Enhance analysis passes so that they apply the same analysis to malloc calls as to MallocInst.
...
Reviewed by Eli Friedman.
llvm-svn: 82281
2009-09-18 21:34:51 +00:00
Bill Wendling
6ddbe2a6ad
It's inefficient to have place the exception tables (which contain the LSDA)
...
into the __DATA section. At launch time, dyld has to update most of the section
to fix up the type info pointers. It's better to place it into the __TEXT
section and use pc-rel indirect pointer encodings. Similar to the personality
routine.
llvm-svn: 82274
2009-09-18 21:14:36 +00:00
Evan Cheng
7cb9c456e5
Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes.
...
Not functionality change yet.
llvm-svn: 82273
2009-09-18 21:02:19 +00:00
Shantonu Sen
eedff40e25
Fix cmake build, which has a different -I that
...
causes the "../foo" to not find the file
llvm-svn: 82270
2009-09-18 20:35:59 +00:00
Chris Lattner
60739d60bf
Make a new X8632_MachoTargetObjectFile TLOF implementation whose
...
getSymbolForDwarfGlobalReference is smart enough to know that it
needs to register the stub it references with MachineModuleInfoMachO,
so that it gets emitted at the end of the file.
Move stub emission from X86ATTAsmPrinter::doFinalization to the
new X86ATTAsmPrinter::EmitEndOfAsmFile asmprinter hook. The important
thing here is that EmitEndOfAsmFile is called *after* the ehframes are
emitted, so we get all the stubs.
This allows us to remove a gross hack from the asmprinter where it would
"just know" that it needed to output stubs for personality functions.
Now this is all driven from a consistent interface.
The testcase change is just reordering the expected output now that the
stubs come out after the ehframe instead of before.
This also unblocks other changes that Bill wants to make.
llvm-svn: 82269
2009-09-18 20:22:52 +00:00
Chris Lattner
f50872c2c4
add a new hook to allow targets to splat stuff at the end of the file.
...
Overriding doFinalization is pretty lame.
llvm-svn: 82268
2009-09-18 20:17:03 +00:00
Dale Johannesen
7d68f8de7f
Model the carry bit on ppc32. Without this we could
...
move a SUBFC (etc.) below the SUBFE (etc.) that consumed
the carry bit. Add missing ADDIC8, noticed along the way.
llvm-svn: 82266
2009-09-18 20:15:22 +00:00
Dan Gohman
0dcc5f9922
Add support for using the FLAGS result of or, xor, and and instructions
...
on x86, to avoid explicit test instructions. A few existing tests changed
due to arbitrary register allocation differences.
llvm-svn: 82263
2009-09-18 19:59:53 +00:00
Sean Callanan
498be752e0
Added RCL and RCR (rotate left and right with a
...
carry bit) instructions to the Intel instruction
tables.
llvm-svn: 82260
2009-09-18 19:35:23 +00:00
Devang Patel
c195f74dee
Write and read metadata attachments.
...
llvm-svn: 82259
2009-09-18 19:26:43 +00:00
Victor Hernandez
065bc44d01
Update malloc call creation code (AllocType is now the element type of the malloc, not the resulting type).
...
In getMallocArraySize(), fix bug in the case that array size is the product of 2 constants.
Extend isArrayMalloc() and getMallocArraySize() to handle case where malloc is used as char array.
Ensure that ArraySize in LowerAllocations::runOnBasicBlock() is correct type.
Extend Instruction::isSafeToSpeculativelyExecute() to handle malloc calls.
Add verification for malloc calls.
Reviewed by Dan Gohman.
llvm-svn: 82257
2009-09-18 19:20:02 +00:00
Chris Lattner
288097205f
duncan points out the EH selector values are signed.
...
llvm-svn: 82245
2009-09-18 18:34:29 +00:00
Chris Lattner
b2ccd100fc
This file can need access to the X86 instruction enums when the table exceeds 32-bits.
...
llvm-svn: 82235
2009-09-18 18:08:55 +00:00
Anton Korobeynikov
fb7ac49d96
Allow symbols to start from the digit if target requests it. This allows, e.g. pinning
...
variables to specified absolute address. Make use of this feature for MSP430.
This unbreaks PR4776.
llvm-svn: 82227
2009-09-18 16:57:42 +00:00
Nick Lewycky
6fccd67e2f
Stop using alloca.
...
llvm-svn: 82225
2009-09-18 16:46:16 +00:00
Evan Cheng
479df579a0
Revert r82214. It broke 403.gcc on x86_64 / Darwin.
...
llvm-svn: 82215
2009-09-18 08:26:06 +00:00
Evan Cheng
d1392886c1
Fix a bug in sdisel switch lowering code. When it updates the phi nodes in switch successor blocks, it can introduce multiple phi operands of the same value from different blocks (and may not be on the predecessor list).
...
This can be seen on CodeGen/Generic/2006-09-06-SwitchLowering.ll. But it's not known to cause any real regression (but I have added an assertion for it now).
llvm-svn: 82214
2009-09-18 08:16:04 +00:00
Nick Lewycky
9143d2c7a2
Add newlines.
...
llvm-svn: 82206
2009-09-18 07:36:47 +00:00
Chris Lattner
7c218a0238
tolerate llvm.eh.selector.i64 on 32-bit systems and llvm.eh.selector.i32 on
...
64-bit systems.
llvm-svn: 82180
2009-09-17 23:54:54 +00:00
Devang Patel
d90471a00d
Fix parsing of optional metadata for 'load', 'store' and 'alloc' instructions.
...
llvm-svn: 82175
2009-09-17 23:04:48 +00:00
Chris Lattner
be5afd41e3
pass machinemoduleinfo down into getSymbolForDwarfGlobalReference,
...
currently unused.
llvm-svn: 82157
2009-09-17 18:49:52 +00:00
Dan Gohman
723717853b
Teach ScalarEvolution how to reason about no-wrap flags on loops
...
where the induction variable has a non-unit stride, such as {0,+,2}, and
there are expressions such as {1,+,2} inside the loop formed with
or or add nsw operators.
llvm-svn: 82151
2009-09-17 18:05:20 +00:00
Jim Grosbach
6d6f3ded0b
grammar
...
llvm-svn: 82150
2009-09-17 17:57:26 +00:00
Benjamin Kramer
b1d15dcefe
Initialize HasMetadata to zero.
...
llvm-svn: 82145
2009-09-17 14:51:57 +00:00
Evan Cheng
491d179d97
Remove simple regalloc. It has bit rotted.
...
llvm-svn: 82127
2009-09-17 05:48:07 +00:00
Chris Lattner
09084c45af
add a version of the APFloat constructor that initializes to 0.0
...
llvm-svn: 82110
2009-09-17 01:08:43 +00:00
Evan Cheng
218f882aff
Fix PR4910: Broken logic in coalescer means when a physical register liveness is being shortened, the sub-registers were not. The symptom is the register allocator could not find a free register for this particular test.
...
llvm-svn: 82108
2009-09-17 00:57:15 +00:00
Daniel Dunbar
c688e9b700
Some platforms may need malloc.h for alloca.
...
llvm-svn: 82100
2009-09-17 00:14:44 +00:00
Daniel Dunbar
1ce602e5db
Update CMake.
...
llvm-svn: 82097
2009-09-17 00:06:48 +00:00
Sean Callanan
a025a7f352
Added the LODS (load byte into register, usually
...
as part string parsing) instructions to the Intel
instruction tables.
llvm-svn: 82089
2009-09-16 22:59:28 +00:00
Daniel Dunbar
60e1dee7fa
Add StringRef::{rfind, rsplit}
...
llvm-svn: 82087
2009-09-16 22:38:48 +00:00
Sean Callanan
cb5724f556
Added the LAR (load segment access rights)
...
instructions to the Intel instruction tables.
llvm-svn: 82084
2009-09-16 21:55:34 +00:00
Sean Callanan
a0ec1cbaa9
Added the LOOP family of instructions to the Intel
...
instruction tables.
llvm-svn: 82083
2009-09-16 21:50:07 +00:00
Sean Callanan
38313b9f78
Added an alternate form of register-register CMP
...
to the Intel instruction tables.
llvm-svn: 82081
2009-09-16 21:11:23 +00:00
Devang Patel
0b710cf26b
Fix typo.
...
llvm-svn: 82080
2009-09-16 21:09:07 +00:00
Devang Patel
63a798ef1e
At iSel time, update DebugLoc based on debug info attached with an instruction.
...
llvm-svn: 82077
2009-09-16 20:39:11 +00:00
Dan Gohman
752227ef24
Add a new pass for doing late hoisting of floating-point and vector
...
constants out of loops. These aren't covered by the regular LICM
pass, because in LLVM IR constants don't require separate
instructions. They're not always covered by the MachineLICM pass
either, because it doesn't know how to unfold folded constant-pool
loads. This is somewhat experimental at this point, and off by
default.
llvm-svn: 82076
2009-09-16 20:25:11 +00:00
Devang Patel
f15eea3399
Print debug info attached with an instruction.
...
llvm-svn: 82075
2009-09-16 20:21:17 +00:00
Bob Wilson
989568d935
Expand vector floating-point conversions not supported by NEON.
...
llvm-svn: 82074
2009-09-16 20:20:44 +00:00
Devang Patel
371df479d4
Provide a way to extract location info from DILocation.
...
llvm-svn: 82064
2009-09-16 18:20:05 +00:00
Devang Patel
b3173a0dfb
Parse debug info attached with an instruction.
...
llvm-svn: 82063
2009-09-16 18:18:06 +00:00
Devang Patel
253aa4d192
Add llvm::Metadata to manage metadata used in a context.
...
This interface will be used to attach metadata with an instruction.
llvm-svn: 82060
2009-09-16 18:09:00 +00:00
Kevin Enderby
007cc571b8
Fix incorrect assert that should be a user error for code like 'mov $0, %%eax'.
...
llvm-svn: 82054
2009-09-16 17:18:29 +00:00
Dan Gohman
c7e3d84790
Change FoldPHIArgBinOpIntoPHI to decline folding if it would introduce two
...
phis, similar to the FoldPHIArgGEPIntoPHI change.
Also, delete some comments that don't reflect the code.
llvm-svn: 82053
2009-09-16 16:50:24 +00:00
Benjamin Kramer
55ae32042d
Don't sort the vector when it is empty. This should fix some expensive checking
...
failures.
llvm-svn: 82040
2009-09-16 11:43:12 +00:00
Andreas Neustifter
15e9f61d26
Reapplied r81355 with the problems fixed.
...
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090907/086737.html and
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090907/086746.html )
llvm-svn: 82039
2009-09-16 11:35:50 +00:00
Xerxes Ranby
9232899c5c
updated lib/CodeGen/CMakeLists.txt to unbreak cmake build after r82018
...
llvm-svn: 82038
2009-09-16 10:18:36 +00:00
Andreas Neustifter
3c9b4c4c75
Preserve ProfileInfo during CodeGenPrepare.
...
llvm-svn: 82034
2009-09-16 09:26:52 +00:00
Chris Lattner
f91260f6cf
move FnStubs/GVSTubs/HiddenGVStub handling out of the X86 asmprinter
...
and use MachineModuleInfoMachO instead.
llvm-svn: 82022
2009-09-16 06:25:03 +00:00
Chris Lattner
481a417960
revert a hunk of r82018 that wasn't supposed to go in yet.
...
llvm-svn: 82020
2009-09-16 06:04:53 +00:00
Chris Lattner
4452afa6d8
add a new MachineModuleInfoMachO class, which is the per-module
...
stuff common across all macho targets.
llvm-svn: 82018
2009-09-16 06:03:48 +00:00
Chris Lattner
d6143d7aff
the pointer MMI keeps will start out with object-file format specific stuff
...
llvm-svn: 82012
2009-09-16 05:26:00 +00:00
Chris Lattner
bc8d86ec5a
tidy up
...
llvm-svn: 82011
2009-09-16 05:25:43 +00:00
Chris Lattner
e6bd7b39eb
rearrange X86ATTAsmPrinter::doFinalization, making a scan of
...
the global variable list only happen for COFF targets.
llvm-svn: 82010
2009-09-16 05:20:33 +00:00
Chris Lattner
0a6f37ec43
remove the AsmPrinter::printMCInst hook hack now that
...
we have MCInstPrinter.
llvm-svn: 82006
2009-09-16 04:57:15 +00:00
Shantonu Sen
cdd58c2969
fix cmake build
...
llvm-svn: 81999
2009-09-16 04:44:00 +00:00
Nate Begeman
e9d86c0126
Do not try and sink a load whose chain result has more than one use, when
...
trying to create RMW opportunities in the x86 backend. This can cause a
cycle to appear in the graph, since the other uses may eventually feed into
the TokenFactor we are sinking the load below.
llvm-svn: 81996
2009-09-16 03:20:46 +00:00
Sean Callanan
0fb60155bd
Added the ENTER instruction, which sets up a stack
...
frame, to the Intel instruction tables.
llvm-svn: 81995
2009-09-16 02:57:13 +00:00
Sean Callanan
a3e93882f3
Added the definitions for one-bit left shifts to
...
the Intel instruction tables.
The patterns will stay blank because ADD reg, reg
is faster, but having the encoding available is
useful for the disassembler.
llvm-svn: 81994
2009-09-16 02:28:43 +00:00
Dan Gohman
77638f25b1
Don't sink gep operators through phi nodes if the result would require
...
more than one phi, since that leads to higher register pressure on
entry to the phi. This is especially problematic when the phi is in
a loop header, as it increases register pressure throughout the loop.
llvm-svn: 81993
2009-09-16 02:01:52 +00:00
Sean Callanan
e482e93995
Removed a few instructions that were already
...
covered by other definitions.
llvm-svn: 81992
2009-09-16 01:54:38 +00:00
Chris Lattner
7b52d90c9e
Big change #1 for personality function references:
...
Eliminate the PersonalityPrefix/Suffix & NeedsIndirectEncoding
fields from MAI: they aren't part of the asm syntax, they are
related to the structure of the object file.
To replace their functionality, add a new
TLOF::getSymbolForDwarfGlobalReference method which asks targets
to decide how to reference a global from EH in a pc-relative way.
The default implementation just returns the symbol. The default
darwin implementation references the symbol through an indirect
$non_lazy_ptr stub. The bizarro x86-64 darwin specialization
handles the weird "foo@GOTPCREL+4" hack.
DwarfException.cpp now uses this to emit the reference to the
symbol in the right way, and this also eliminates another
horrible hack from DwarfException.cpp:
- if (strcmp(MAI->getPersonalitySuffix(), "+4@GOTPCREL"))
- O << "-" << MAI->getPCSymbol();
llvm-svn: 81991
2009-09-16 01:46:41 +00:00
Chris Lattner
7a0fe1ca4b
remove a dead variable.
...
llvm-svn: 81985
2009-09-16 01:29:11 +00:00
Chris Lattner
006af669b4
add a helper method for creating MCSymbol and MCSymbolRefExpr at
...
the same time.
llvm-svn: 81984
2009-09-16 01:26:31 +00:00
Sean Callanan
296ed7d1e1
Added a variety of floating-point and SSE instructions.
...
All of these do not have patterns (they're for the
disassembler).
Many of the floating-point instructions will probably
be rolled into definitions that have patterns, and may
eventually be superseded by mdefs. So I put them
together and left a comment.
llvm-svn: 81979
2009-09-16 01:13:52 +00:00
Chris Lattner
7a4748ad3a
inline AsmPrinter::getCurrentFunctionEHName into its only caller.
...
llvm-svn: 81970
2009-09-16 00:35:39 +00:00
Bob Wilson
8770c809c2
Expand some more vector operations not supported by Neon.
...
llvm-svn: 81969
2009-09-16 00:32:15 +00:00
Chris Lattner
7a07d794ee
Eliminate AsmPrinter::EmitExternalGlobal, inlining its (now)
...
one implementation into its one caller. This eliminates a totally
awesome and gratuitous hack where we casted a Function* to
GlobalVariable*.
llvm-svn: 81967
2009-09-16 00:17:39 +00:00
Bob Wilson
c01a94dad0
Neon does not support vector divide or remainder. Expand them.
...
llvm-svn: 81966
2009-09-16 00:17:28 +00:00
Chris Lattner
91c3b33e33
eliminate the PPC backend's implementation of EmitExternalGlobal
...
and use PersonalityPrefix/Suffix to achieve the same effect (like
the x86 backend).
This changes the code generated for ppc static mode, but guess what,
we were generating this before:
.byte 0x9B ; Personality (indirect pcrel sdata4)
.long ___gxx_personality_v0-. ; Personality
which is not correct! (it is not an 'indirect' reference).
llvm-svn: 81965
2009-09-16 00:14:19 +00:00
Chris Lattner
f720dd9257
eliminate the horrid AsmPrinter::getGlobalLinkName method, inlining
...
it into all of its call sites and simplifying them.
llvm-svn: 81962
2009-09-16 00:08:41 +00:00
Chris Lattner
6302039748
simplify some code
...
llvm-svn: 81961
2009-09-16 00:08:07 +00:00
Bob Wilson
f091792f40
Expand all v2f64 arithmetic operations for Neon.
...
Radar 7200803. (This should also fix the
SingleSource/UnitTests/Vector/sumarray-dbl test.)
llvm-svn: 81959
2009-09-15 23:55:57 +00:00
Sean Callanan
a68b2a56bb
Added far return instructions (that is, returns to
...
code in other segments) to the Intel instruction
tables.
llvm-svn: 81953
2009-09-15 23:37:51 +00:00
Chris Lattner
249d5fe8b9
remove some horrible MAI hooks which fortunately turn out to be always empty.
...
llvm-svn: 81946
2009-09-15 23:11:32 +00:00
Chris Lattner
c06870ad45
strength reduce a call to PrintRelDirective(true).
...
llvm-svn: 81942
2009-09-15 22:58:35 +00:00
Chris Lattner
8457d8c557
add hooks to hang target-specific goop off MachineModuleInfo,
...
move MachineFunctionInfo virtual method out of line to give it
a home.
llvm-svn: 81940
2009-09-15 22:44:26 +00:00
Nate Begeman
d34c7760b3
Do not add the SVOffset to the Node CSE ID. The same pointer argument cannot have different
...
SVOffsets.
llvm-svn: 81937
2009-09-15 22:30:11 +00:00
Eric Christopher
936a41fff1
Expand on comment.
...
llvm-svn: 81928
2009-09-15 21:56:46 +00:00
Sean Callanan
4dc743b7ff
Updated comments per Eli's suggestion.
...
llvm-svn: 81923
2009-09-15 21:43:27 +00:00
Sean Callanan
e62a9a60c7
Added register-to-register ADD instructions to the
...
Intel tables, where the source operand is
specified by the R/M field and the destination
operand by the Reg field.
llvm-svn: 81914
2009-09-15 20:53:57 +00:00
Daniel Dunbar
f1b6d523e4
Drop the raw_ostream required buffer size to 1.
...
- As best I can tell, we have eliminated all the code which used to require a
larger buffer size.
llvm-svn: 81912
2009-09-15 20:31:46 +00:00
Daniel Dunbar
e14446813e
Fix -Asserts warning.
...
llvm-svn: 81909
2009-09-15 20:31:12 +00:00
Nate Begeman
e7fa31031b
Better solution for tracking both the original alignment of the access, and the current alignment based
...
on the source value offset. This avoids increasing the size of mem nodes.
llvm-svn: 81897
2009-09-15 19:05:41 +00:00
Sean Callanan
3386a02b81
Added a new register class for segment registers
...
to the Intel register table.
Added 16- and 64-bit MOVs to and from the segment
registers to the Intel instruction tables.
llvm-svn: 81895
2009-09-15 18:47:29 +00:00
Dale Johannesen
d00219c590
Change the marker byte for stubs from 0xcd to 0xce (another form of
...
interrupt instruction, which shouldn't arise any other way). 0xcd is
also used by JITMemoryManager to initialize the buffer to garbage,
which means it could appear following a noreturn call even when
that is not a stub, confusing X86CompilationCallback2. PR 4929.
llvm-svn: 81888
2009-09-15 18:32:14 +00:00
Chris Lattner
0f1da52ad1
fix PR4984 by ensuring that fastisel adds properly sign extended GEP displacement
...
values to machineinstrs.
llvm-svn: 81886
2009-09-15 18:27:02 +00:00
Chris Lattner
a2f99fe0ec
add missing file
...
llvm-svn: 81881
2009-09-15 18:03:13 +00:00
Bob Wilson
a42ff3190c
Handle AddrMode4 for Thumb2 in rewriteT2FrameIndex. This occurs for
...
VLDM/VSTM instructions, and without this check, the code assumes that an
offset is allowed, as it would be with VLDR/VSTR. The asm printer,
however, silently drops the offset, producing incorrect code. Since the
address register in this case is either the stack or frame pointer, the
spill location ends up conflicting with some other stack slot or with
outgoing arguments on the stack.
llvm-svn: 81879
2009-09-15 17:56:18 +00:00
Sandeep Patel
7727a68464
Fix superreg use in ARMAsmPrinter. Approved by Anton Korobeynikov.
...
llvm-svn: 81878
2009-09-15 17:53:11 +00:00
Chris Lattner
31ba68c9af
several major improvements to the sparc backend: support for weak linkage
...
and PIC codegen. Patch by Venkatraman Govindaraju!
llvm-svn: 81877
2009-09-15 17:46:24 +00:00
Dan Gohman
78b99e3761
Teach ValueTracking how to look through GlobalAliases. GlobalAliases are
...
not folded in the constant folder because the constant folder doesn't
simplify ConstantExpr operands.
llvm-svn: 81864
2009-09-15 16:14:44 +00:00
Dan Gohman
ccdb00720e
Fix an accidental inversion of the inbounds flag.
...
llvm-svn: 81862
2009-09-15 16:00:30 +00:00
Dan Gohman
18a3644dde
When a constant's type is refined, update the constant in place
...
instead of cloning and RAUWing it.
- Make AbstractTypeUser a friend of Value so that it can offer
its subclasses a way to update a Value's type in place. This
is better than a universally visible setType method on Value,
and it's sufficient for the immediate need.
- Eliminate the constant "convert" functions. This eliminates a
lot of logic duplication, and fixes a complicated bug where a
constant can't actually be cloned during the type refinement
process because some of the types that its folder needs are
half-destroyed, being in the middle of refinement themselves.
- Move the getValType functions from being static overloaded
functions in Constants.cpp to be members of class template
specializations in ConstantsContext.h. This means that the
code ends up getting instantiated twice, however it also
makes it possible to eliminate all "convert" functions, so
it's not a big net code size increase. And if desired, the
duplicate instantiations could be eliminated with some
reorganization.
llvm-svn: 81861
2009-09-15 15:58:07 +00:00
Nick Lewycky
85f7bd1942
Add more newlines to make up for the ones removed from the end of instructions.
...
llvm-svn: 81851
2009-09-15 07:08:25 +00:00
Evan Cheng
c6aba09119
Another try at early partial coalescing. Identity phi source copies (their sources are defined by phi join def) are coalesced. And the phi join copy is backward copy propagated into the other copies.
...
Still miscompiling some tests. :-(
llvm-svn: 81849
2009-09-15 06:45:16 +00:00
Nick Lewycky
554eac4066
Forbid arrays of function-type and structures with function-typed fields.
...
While I'm there, change code that does:
SomeTy == Type::getFooType(Context)
into:
SomeTy->getTypeID() == FooTyID
to decrease the amount of useless type creation which may involve locking, etc.
llvm-svn: 81846
2009-09-15 06:28:26 +00:00
Chris Lattner
cf3281f7d0
fix PR4963: folding insertvalue would sometimes turn a packed struct into
...
an unpacked one.
llvm-svn: 81845
2009-09-15 06:28:12 +00:00
Chris Lattner
d219c7b6ee
add a new CallGraphNode::replaceCallEdge method and use it from
...
argpromote to avoid invalidating an iterator. This fixes PR4977.
All clang tests now pass with expensive checking (on my system
at least).
llvm-svn: 81843
2009-09-15 05:40:35 +00:00
Chris Lattner
4dd9afd1be
add newline to debug dump
...
llvm-svn: 81840
2009-09-15 05:14:57 +00:00
Chris Lattner
50438771c0
make -debug-pass=Executions show information about what call graph nodes
...
are in the SCC for each execution of a CGSCC pass.
llvm-svn: 81838
2009-09-15 05:03:04 +00:00
Chris Lattner
d7ba993f2e
add some missing quotes in debug output
...
llvm-svn: 81836
2009-09-15 04:45:26 +00:00
Ted Kremenek
477a21a996
Remove invalid add_dependencies line to unbreak the CMake build.
...
llvm-svn: 81827
2009-09-15 04:06:36 +00:00
Mikhail Glushenkov
3b1f94a1fc
Get rid of GetProcessId in Win32/Program.inc.
...
GetProcessId was introduced only in XP. As a bonus, this change makes Program
objects copyable, since Program is now basically a PID.
llvm-svn: 81826
2009-09-15 03:39:45 +00:00
Dan Gohman
41a3b8fba9
Don't pull a load through a callseq_start if the load's chain
...
has multiple uses, as one of the other uses may be on a path
to a different node above the callseq_start, because that
leads to a cyclic graph. This problem is exposed when
-combiner-global-alias-analysis is used. This fixes PR4880.
llvm-svn: 81821
2009-09-15 01:22:01 +00:00
Nate Begeman
ebc8c4a3f1
Remove incorrect CSE code from r81813.
...
llvm-svn: 81819
2009-09-15 00:38:09 +00:00
Sean Callanan
f6e983b998
Modified the Intel instruction tables to include
...
versions of CALL and JMP with segmented addresses
provided in-line, as pairs of immediates.
llvm-svn: 81818
2009-09-15 00:35:17 +00:00
Kevin Enderby
da3290e68c
Added the first bits of the ARM target assembler to llvm-mc. For now it only
...
parses the .word directive as 4 bytes and ARMAsmParser::ParseInstruction will
give an error is called. Broke out the test of the .word directive into two
different test cases, one for x86 and one for arm.
llvm-svn: 81817
2009-09-15 00:27:25 +00:00
Nate Begeman
729869a398
Substantially speed up combiner-aa in the following ways:
...
1. Switch from an std::set to a SmallPtrSet for visited chain nodes.
2. Do not force the recursive flattening of token factor nodes, regardless of
use count.
3. Immediately process newly created TokenFactor nodes.
Also, improve combiner-aa by teaching it that loads to non-overlapping offsets
of relatively aligned objects cannot alias.
These changes result in a >5x speedup for combiner-aa on most testcases.
llvm-svn: 81816
2009-09-15 00:18:30 +00:00
Nate Begeman
a9e552182a
Teach the legalizer to propagate the original alignment of loads and store when
...
it splits them.
llvm-svn: 81815
2009-09-15 00:14:28 +00:00
Dan Gohman
9401b2fcab
On x86-64, the 32-bit cmov doesn't actually clear the high 32-bit of
...
its result if the condition is false.
llvm-svn: 81814
2009-09-15 00:14:11 +00:00
Nate Begeman
e9572a945b
Add an "original alignment" field to load and store nodes. This enables the
...
DAG Combiner to disambiguate chains for loads and stores of types which are
broken up by the Legalizer into smaller pieces.
llvm-svn: 81813
2009-09-15 00:13:12 +00:00
Dan Gohman
ec42afc1dc
When extending a memset range past the front, set the alignment of the
...
memset region to the alignment of the new start address.
llvm-svn: 81810
2009-09-14 23:39:10 +00:00
Evan Cheng
83bb285c97
Add early coalescing to liveintervals. This is work in progress and is known to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this.
...
The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals.
llvm-svn: 81796
2009-09-14 21:33:42 +00:00
Bill Wendling
f43d8a08b0
Pull the creation of the "RewindFunction" function out of the loop. It's only
...
created once, so shouldn't be stuck in the middle of the loop. Also early exit
if there are no uses of UnwindInst in the function.
llvm-svn: 81785
2009-09-14 20:52:37 +00:00
Jim Grosbach
5f662f31bc
trivial whitespace cleanup
...
llvm-svn: 81773
2009-09-14 17:27:35 +00:00
Chris Lattner
444c69afae
add PR#
...
llvm-svn: 81770
2009-09-14 16:49:26 +00:00
Daniel Dunbar
d729752a24
Update CMake.
...
llvm-svn: 81757
2009-09-14 05:22:47 +00:00
Chris Lattner
ec805c1a5d
PIC16 does allow colon after MBB labels, simplify EmitBasicBlockStart.
...
llvm-svn: 81755
2009-09-14 03:15:54 +00:00
Chris Lattner
4a33f01892
Change MCAsmStreamer to take an MCInstPrinter instead of a
...
full AsmPrinter, and change TargetRegistry to keep track
of registered MCInstPrinters.
llvm-mc is still linking in the entire
target foo to get the code emitter stuff, but this is an
important step in the right direction.
llvm-svn: 81754
2009-09-14 03:02:37 +00:00
Nick Lewycky
65180a9be4
Fix a pair of comment typos.
...
llvm-svn: 81750
2009-09-14 02:25:34 +00:00
Nick Lewycky
02986c78c5
Fifth time's a charm! Remove ourselves as abstract type listeners once we've
...
been told that the type is no longer abstract.
llvm-svn: 81749
2009-09-14 02:25:19 +00:00
Chris Lattner
a00e070ea0
Give MCInstPrinter a MCAsmInfo member, make X86ATTInstPrinter
...
be a MCInstPrinter.
llvm-svn: 81746
2009-09-14 01:49:26 +00:00
Chris Lattner
27a850eb70
add a new MCInstPrinter class, move the (trivial) MCDisassmbler ctor inline.
...
llvm-svn: 81745
2009-09-14 01:43:38 +00:00
Chris Lattner
8da6598a75
tidy up a bit.
...
llvm-svn: 81744
2009-09-14 01:34:40 +00:00
Nick Lewycky
e38e763387
Don't leak! Always remove oneself as a listener after adding oneself.
...
llvm-svn: 81736
2009-09-14 00:36:52 +00:00
Nick Lewycky
c4bde40e87
Actually remove old types from the set.
...
Also break the type verification stuff into its own TypeSet to keep the
Verifier pass from becoming an AbstractTypeUser.
llvm-svn: 81729
2009-09-13 23:45:39 +00:00
Chris Lattner
fbe97bcd52
kill off the last use of TRI::AsmName.
...
llvm-svn: 81727
2009-09-13 22:42:03 +00:00
Chris Lattner
830f090c2e
add some special case handling for strangely named x86 registers.
...
llvm-svn: 81726
2009-09-13 22:41:48 +00:00
Chris Lattner
8724d994d0
'printMCInst' doesn't print newlines after instructions anymore.
...
llvm-svn: 81723
2009-09-13 22:24:34 +00:00
Daniel Dunbar
8e0f9e60d7
Remove unused variables.
...
llvm-svn: 81718
2009-09-13 21:31:07 +00:00
Nick Lewycky
9b6c23aba0
Storing a set of PATypeHolders is a bad idea because their sort order will
...
change as types are refined. Remove abstract types from CheckedTypes when they
we're informed that they have been refined. The only way types get refined in
the verifier is when later function passes start optimizing. Fixes PR4970.
llvm-svn: 81716
2009-09-13 21:07:59 +00:00
Chris Lattner
334aa7a1d4
remove all but one reference to TargetRegisterDesc::AsmName.
...
llvm-svn: 81714
2009-09-13 20:31:40 +00:00
Chris Lattner
20b7392123
the tblgen produced 'getRegisterName' method does not access
...
the object, make it static instead of const.
llvm-svn: 81711
2009-09-13 20:19:22 +00:00
Chris Lattner
31c7141542
switch the x86 asmprinters to use getRegisterName instead
...
of getting it from TRI, inst printing now is codegen context
free!
llvm-svn: 81710
2009-09-13 20:15:16 +00:00
Chris Lattner
0cde5283e3
make tblgen produce a function that returns the name for a physreg.
...
Nothing is using this info yet.
llvm-svn: 81707
2009-09-13 20:08:00 +00:00
Chris Lattner
1e264d7506
eliminate an extraneous use of TRI::getAsmName in a comment.
...
llvm-svn: 81705
2009-09-13 19:48:37 +00:00
Chris Lattner
fb0e41caef
make intel asmprinter use TRI::getAsmName instead of TRI::getName like
...
all the other targets. Add support for weak/linkonce linkage so it doesn't
crash on basically all nontrivial testcases.
llvm-svn: 81704
2009-09-13 19:44:38 +00:00
Chris Lattner
96e22d6462
split MCInst printing out of the X86ATTInstPrinter
...
class into its own X86ATTInstPrinter class. The inst
printer now has just one dependence on the code generator
(TRI).
llvm-svn: 81703
2009-09-13 19:30:11 +00:00
Chris Lattner
57dbcc4388
reduce indentation with early exit.
...
llvm-svn: 81699
2009-09-13 19:10:08 +00:00
Chris Lattner
cb05a87447
remove MAI::JumpTableSpecialLabelPrefix now that MAI
...
has real information about linker private linkage.
llvm-svn: 81695
2009-09-13 19:02:16 +00:00
Chris Lattner
a0dbce2e0e
delete the fixme too! :)
...
llvm-svn: 81689
2009-09-13 18:50:22 +00:00
Chris Lattner
dfc3079a9e
merge the linux cpool/jtbl pic tests into pic.ll and convert to filecheck.
...
Change the picbase symbol on non-darwin systems from ".Lllvm$4.$piclabel" to
".L4$pb". The actual name doesn't matter and the darwin name is shorter.
llvm-svn: 81688
2009-09-13 18:46:37 +00:00
Chris Lattner
9e536003ba
make X86ATTAsmPrinter::PrintPICBaseSymbol forward to X86MCInstLower.
...
llvm-svn: 81685
2009-09-13 18:33:59 +00:00
Chris Lattner
cbcbedf254
replace printBasicBlockLabel with EmitBasicBlockStart,
...
now that printBasicBlockLabel is only used for starting
a MBB. This allows elimination of a bunch of arguments.
llvm-svn: 81684
2009-09-13 18:25:37 +00:00
Chris Lattner
89e5731659
fix MCSymbol printing on darwin to exactly match the mangler (handling of \n and " in a symbol name).
...
llvm-svn: 81683
2009-09-13 18:11:09 +00:00
Chris Lattner
e26af94cd4
Make the MC symbol printer and llvm::Mangler exactly agree on mangling
...
for systems that don't support quoting (PR4966).
llvm-svn: 81682
2009-09-13 18:04:46 +00:00