Chris Lattner
13306a1fff
remove a temporary hack.
...
llvm-svn: 82395
2009-09-20 07:47:59 +00:00
Chris Lattner
5159bbaf9e
rename X86ATTAsmPrinter.cpp -> X86AsmPrinter.cpp likewise the .h file.
...
llvm-svn: 82394
2009-09-20 07:41:30 +00:00
Chris Lattner
40d9a5319a
move target registry stuff to X86ATTAsmPrinter.cpp
...
llvm-svn: 82393
2009-09-20 07:39:06 +00:00
Chris Lattner
b95a9cd6a7
simplify this now that createX86CodePrinterPass is trivial
...
llvm-svn: 82392
2009-09-20 07:37:51 +00:00
Chris Lattner
288a95da0c
rename X86ATTAsmPrinter class -> X86AsmPrinter
...
llvm-svn: 82391
2009-09-20 07:35:34 +00:00
Chris Lattner
00b4508bb0
remove the asmstring, it is now dead. Improve comment.
...
llvm-svn: 82390
2009-09-20 07:32:00 +00:00
Nick Lewycky
9b3ed87506
Peer through zext and sext to eliminate them when it is safe to do so.
...
llvm-svn: 82389
2009-09-20 07:31:25 +00:00
Chris Lattner
a93dcf1bc0
kill off printPICLabel now, it's specialness is handled by
...
the MachineInstr ->MCInst lowering process, not in the
asmprinter.
llvm-svn: 82388
2009-09-20 07:28:26 +00:00
Chris Lattner
609fbed49f
delete X86IntelAsmPrinter! Now -x86-asm-syntax just switches
...
the instruction syntax, not the entire asmprinter.
llvm-svn: 82387
2009-09-20 07:25:17 +00:00
Nick Lewycky
b0225ba289
Fold 'icmp eq (icmp), true' into an xor(icmp).
...
llvm-svn: 82386
2009-09-20 07:21:39 +00:00
Chris Lattner
4479034537
Add an intel syntax MCInstPrinter implementation. You can now
...
transcode from AT&T to intel syntax with "llvm-mc foo.s -output-asm-variant=1"
llvm-svn: 82385
2009-09-20 07:17:49 +00:00
Chris Lattner
78f908c877
tidy up
...
llvm-svn: 82384
2009-09-20 07:16:54 +00:00
Chris Lattner
a15f0044a0
eliminate a use of strtoul.
...
llvm-svn: 82382
2009-09-20 06:58:54 +00:00
Chris Lattner
17ec6b11d2
split random COFF asmprinter state out to X86COFFMachineModuleInfo.h.
...
Make dllexport directives come out in determinstic order.
llvm-svn: 82381
2009-09-20 06:45:52 +00:00
Nick Lewycky
ff550aa36d
Correct the comment; this applies to fcmp too.
...
llvm-svn: 82380
2009-09-20 06:27:35 +00:00
Nick Lewycky
0f8348e85b
Remove tab, again.
...
llvm-svn: 82379
2009-09-20 06:26:34 +00:00
Nick Lewycky
28260409f2
Teach the constant folder how to not a cmpinst.
...
llvm-svn: 82378
2009-09-20 06:24:51 +00:00
Chris Lattner
56efff07f5
smallvectorize getExtraOptionNames
...
llvm-svn: 82377
2009-09-20 06:21:43 +00:00
Chris Lattner
131dca9c48
minor cleanups.
...
llvm-svn: 82375
2009-09-20 06:18:38 +00:00
Chris Lattner
00f53807c3
strength reduce further StringRef-> const char*, saving another 620 bytes.
...
llvm-svn: 82372
2009-09-20 05:53:47 +00:00
Nick Lewycky
4a03452077
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
b1f2e101db
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
2b31b53d97
Remove tabs I added.
...
llvm-svn: 82369
2009-09-20 05:47:45 +00:00
Chris Lattner
6ec8caf003
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
8d0309daa0
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
64dbb5ca5a
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
28610b9878
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
41f8b0b7a6
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
f74e28abfa
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
e7c1e210c7
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
9e085545f8
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
ecbb126e34
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
6058b51f8c
Strip trailing whitespace.
...
llvm-svn: 82359
2009-09-20 04:03:34 +00:00
Nick Lewycky
2949a2398c
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
f878d70720
Still one more thing wrong here...
...
llvm-svn: 82356
2009-09-20 02:27:06 +00:00
Daniel Dunbar
7d6781b0fe
Tabs -> spaces, and remove trailing whitespace.
...
llvm-svn: 82355
2009-09-20 02:20:51 +00:00
Bill Wendling
0f899601f3
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
595b3dfcbe
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
5a3fa4ef33
convert argname to StringRef, simplifying LookupOption.
...
llvm-svn: 82352
2009-09-20 02:02:24 +00:00
Chris Lattner
0a40a975dd
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
40fef8032e
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
e0332983fd
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
77c2724360
rewrite ParseCStringVector in terms of stringref.
...
llvm-svn: 82348
2009-09-20 01:33:46 +00:00
Chris Lattner
372a8ae403
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
1b88fbdaa3
coding style cleanup
...
llvm-svn: 82346
2009-09-20 01:11:23 +00:00
Chris Lattner
3b8adaf488
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
a894053a9b
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
ca2552d9f9
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
605109d151
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
fa9c6f43a0
Avoid some temporary strings.
...
llvm-svn: 82339
2009-09-19 23:59:02 +00:00
Chris Lattner
84c1527b6b
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
85689b2065
Revert r82274. It's causing failures in the CINT2006 benchmarks.
...
llvm-svn: 82336
2009-09-19 22:02:37 +00:00
Daniel Dunbar
be22ec4cfc
Fix indentation.
...
llvm-svn: 82333
2009-09-19 20:40:14 +00:00
Daniel Dunbar
c418d6b106
Strip trailing whitespace.
...
llvm-svn: 82332
2009-09-19 20:40:05 +00:00
Nick Lewycky
1303c0ab86
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
68ee70035e
provide a "strtoull" operation that works on StringRef's.
...
llvm-svn: 82322
2009-09-19 19:47:14 +00:00
Nick Lewycky
3b8bd05081
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
aecd74d895
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
7e6deb1cb4
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
1636b7ef47
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
b82b5514fe
Fix funky comments.
...
llvm-svn: 82314
2009-09-19 10:09:15 +00:00
Benjamin Kramer
543d9b2fba
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
9827ad39a7
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
5d034499ad
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
8c33d67fbf
Fix a comment typo and some whitespace.
...
llvm-svn: 82285
2009-09-18 21:43:11 +00:00
Bob Wilson
3c21a35908
Fix a typo in an assertion message.
...
llvm-svn: 82284
2009-09-18 21:42:44 +00:00
Bill Wendling
053237109a
Factor out label difference creation.
...
llvm-svn: 82282
2009-09-18 21:37:56 +00:00
Victor Hernandez
537d8d99be
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
43f2cd7757
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
270d0f986f
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
7ba874bb5e
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
3a78ce3a56
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
71a15b1316
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
5e9a5c3664
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
722b1eefdb
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
8e31aa773f
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
af206b8c88
Write and read metadata attachments.
...
llvm-svn: 82259
2009-09-18 19:26:43 +00:00
Victor Hernandez
788eaabd18
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
e133923abe
duncan points out the EH selector values are signed.
...
llvm-svn: 82245
2009-09-18 18:34:29 +00:00
Chris Lattner
1e64038bcb
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
592638ae05
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
bf4c56d82b
Stop using alloca.
...
llvm-svn: 82225
2009-09-18 16:46:16 +00:00
Evan Cheng
f4db6396e0
Revert r82214. It broke 403.gcc on x86_64 / Darwin.
...
llvm-svn: 82215
2009-09-18 08:26:06 +00:00
Evan Cheng
6ba1931d60
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
6a3260e004
Add newlines.
...
llvm-svn: 82206
2009-09-18 07:36:47 +00:00
Chris Lattner
1bd81314e7
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
ea8a4b984c
Fix parsing of optional metadata for 'load', 'store' and 'alloc' instructions.
...
llvm-svn: 82175
2009-09-17 23:04:48 +00:00
Chris Lattner
a6ebba270d
pass machinemoduleinfo down into getSymbolForDwarfGlobalReference,
...
currently unused.
llvm-svn: 82157
2009-09-17 18:49:52 +00:00
Dan Gohman
36bad00bef
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
9632c14949
grammar
...
llvm-svn: 82150
2009-09-17 17:57:26 +00:00
Benjamin Kramer
5ff90ed33e
Initialize HasMetadata to zero.
...
llvm-svn: 82145
2009-09-17 14:51:57 +00:00
Evan Cheng
4ba30d9913
Remove simple regalloc. It has bit rotted.
...
llvm-svn: 82127
2009-09-17 05:48:07 +00:00
Chris Lattner
ac6271e3f4
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
f56b0482c4
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
c7012fa1e8
Some platforms may need malloc.h for alloca.
...
llvm-svn: 82100
2009-09-17 00:14:44 +00:00
Daniel Dunbar
487d1c8138
Update CMake.
...
llvm-svn: 82097
2009-09-17 00:06:48 +00:00
Sean Callanan
cc774e7476
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
4498168753
Add StringRef::{rfind, rsplit}
...
llvm-svn: 82087
2009-09-16 22:38:48 +00:00
Sean Callanan
73645ac10c
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
7865f79011
Added the LOOP family of instructions to the Intel
...
instruction tables.
llvm-svn: 82083
2009-09-16 21:50:07 +00:00
Sean Callanan
ca968cf1f0
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
44b3a87f78
Fix typo.
...
llvm-svn: 82080
2009-09-16 21:09:07 +00:00
Devang Patel
852c9b6627
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
0f64d71d99
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
dec23fd825
Print debug info attached with an instruction.
...
llvm-svn: 82075
2009-09-16 20:21:17 +00:00
Bob Wilson
5d8cfb217c
Expand vector floating-point conversions not supported by NEON.
...
llvm-svn: 82074
2009-09-16 20:20:44 +00:00
Devang Patel
820640d39f
Provide a way to extract location info from DILocation.
...
llvm-svn: 82064
2009-09-16 18:20:05 +00:00
Devang Patel
0d9950e315
Parse debug info attached with an instruction.
...
llvm-svn: 82063
2009-09-16 18:18:06 +00:00
Devang Patel
d5497a4bf8
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
c0edda3184
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
bd0050810c
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
6f3d4e900b
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
41c1103273
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
230c717e0b
updated lib/CodeGen/CMakeLists.txt to unbreak cmake build after r82018
...
llvm-svn: 82038
2009-09-16 10:18:36 +00:00
Andreas Neustifter
f8cb758ba8
Preserve ProfileInfo during CodeGenPrepare.
...
llvm-svn: 82034
2009-09-16 09:26:52 +00:00
Chris Lattner
05f4039763
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
3828c2fa80
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
f3f54ffc89
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
07fc26d63c
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
273215733c
tidy up
...
llvm-svn: 82011
2009-09-16 05:25:43 +00:00
Chris Lattner
46dcaadb4a
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
8df79f2681
remove the AsmPrinter::printMCInst hook hack now that
...
we have MCInstPrinter.
llvm-svn: 82006
2009-09-16 04:57:15 +00:00
Shantonu Sen
b15840a6d6
fix cmake build
...
llvm-svn: 81999
2009-09-16 04:44:00 +00:00
Nate Begeman
1ae49ee7ca
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
771a1f1720
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
0fdee53266
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
3b7ce109ec
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
1c28c4db58
Removed a few instructions that were already
...
covered by other definitions.
llvm-svn: 81992
2009-09-16 01:54:38 +00:00
Chris Lattner
b866602f06
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
0d3f6962a1
remove a dead variable.
...
llvm-svn: 81985
2009-09-16 01:29:11 +00:00
Chris Lattner
6a833f6806
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
e739ac8900
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
6b99ae882b
inline AsmPrinter::getCurrentFunctionEHName into its only caller.
...
llvm-svn: 81970
2009-09-16 00:35:39 +00:00
Bob Wilson
6cc46577f4
Expand some more vector operations not supported by Neon.
...
llvm-svn: 81969
2009-09-16 00:32:15 +00:00
Chris Lattner
d106abfce7
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
4ed397c141
Neon does not support vector divide or remainder. Expand them.
...
llvm-svn: 81966
2009-09-16 00:17:28 +00:00
Chris Lattner
4e465598f0
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
dd5a989034
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
3045f9e57b
simplify some code
...
llvm-svn: 81961
2009-09-16 00:08:07 +00:00
Bob Wilson
194a2518e5
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
f8f6479388
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
2251293788
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
7b40df7589
strength reduce a call to PrintRelDirective(true).
...
llvm-svn: 81942
2009-09-15 22:58:35 +00:00
Chris Lattner
f2471ec967
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
fbb88b180c
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
17f54d0f42
Expand on comment.
...
llvm-svn: 81928
2009-09-15 21:56:46 +00:00
Sean Callanan
7a27b9342c
Updated comments per Eli's suggestion.
...
llvm-svn: 81923
2009-09-15 21:43:27 +00:00
Sean Callanan
79b570de9d
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
316b4a0206
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
9367ec8644
Fix -Asserts warning.
...
llvm-svn: 81909
2009-09-15 20:31:12 +00:00