Commit Graph

48845 Commits

Author SHA1 Message Date
Anton Korobeynikov fe8df8ff61 Properly handle divides. As a bonus - implement memory versions of them.
llvm-svn: 76003
2009-07-16 14:14:33 +00:00
Anton Korobeynikov 68b101a0e1 Fix epic fail: full-width muls are not commutable. This unbreaks bunch of stuff from SingleSource/Benchmarks/Stanford
llvm-svn: 76002
2009-07-16 14:14:01 +00:00
Anton Korobeynikov 1de4295372 32 bit rotate is not twoaddr instruction
llvm-svn: 76001
2009-07-16 14:13:43 +00:00
Anton Korobeynikov 34ad780d0d 32 bit shifts have only 12 bit displacements
llvm-svn: 76000
2009-07-16 14:13:24 +00:00
Anton Korobeynikov 6759661c3f Add proper register aliases
llvm-svn: 75999
2009-07-16 14:12:54 +00:00
Anton Korobeynikov a3157b1c9c Properly generate stack frame
llvm-svn: 75998
2009-07-16 14:12:36 +00:00
Anton Korobeynikov 6f3d11cf0b Unbreak indirect branches
llvm-svn: 75997
2009-07-16 14:12:18 +00:00
Anton Korobeynikov 2300eaa828 Unbreak
llvm-svn: 75996
2009-07-16 14:12:00 +00:00
Anton Korobeynikov 20237e5071 Do not forget to save R15 when we allocate stack frame
llvm-svn: 75995
2009-07-16 14:11:40 +00:00
Anton Korobeynikov 427dce8678 All calls clobbers R14
llvm-svn: 75994
2009-07-16 14:11:22 +00:00
Anton Korobeynikov 2e574c156e Unbreak calls to vararg functions
llvm-svn: 75993
2009-07-16 14:11:03 +00:00
Anton Korobeynikov 466f2e4b00 Stupid typo
llvm-svn: 75992
2009-07-16 14:10:49 +00:00
Anton Korobeynikov d8458e6c09 Typos
llvm-svn: 75991
2009-07-16 14:10:35 +00:00
Anton Korobeynikov 1eb6262b4b Consolidate reg-imm / reg-reg-imm address mode selection logic in one place.
llvm-svn: 75990
2009-07-16 14:10:17 +00:00
Anton Korobeynikov 3db6283188 Fix fallout from 12-bit stuff landing: decide whether 20 bit displacements are needed during elimination of frame indexes.
llvm-svn: 75989
2009-07-16 14:09:56 +00:00
Anton Korobeynikov 62f8515b1c Add support for 12 bit displacements
llvm-svn: 75988
2009-07-16 14:09:35 +00:00
Anton Korobeynikov 432d4cd915 We already have reserved call frame regardless whether variable sized frame objects were present or not
llvm-svn: 75987
2009-07-16 14:09:04 +00:00
Anton Korobeynikov 43d33bd6d2 Emit proper lowering of load from arg stack slot
llvm-svn: 75986
2009-07-16 14:08:42 +00:00
Anton Korobeynikov a8197bb651 Implement dynamic allocas
llvm-svn: 75985
2009-07-16 14:08:15 +00:00
Anton Korobeynikov 7193e2670e Add jump tables
llvm-svn: 75984
2009-07-16 14:07:50 +00:00
Anton Korobeynikov 5dfac244a0 Exapnd br_jt into indirect branch. Provide pattern for indirect branches.
llvm-svn: 75983
2009-07-16 14:07:24 +00:00
Anton Korobeynikov d52a95f170 Implement 64 bit immediates
llvm-svn: 75982
2009-07-16 14:07:06 +00:00
Anton Korobeynikov 2ff298fad0 Add rotates
llvm-svn: 75981
2009-07-16 14:06:49 +00:00
Anton Korobeynikov 9362d9aa76 Add patterns for integer negate
llvm-svn: 75980
2009-07-16 14:06:27 +00:00
Anton Korobeynikov f07c7941f0 Provide proper patterns for and with imm instructions. Tune the tests accordingly.
llvm-svn: 75979
2009-07-16 14:06:00 +00:00
Anton Korobeynikov 59049d9176 Add 32 bit and reg-imm and disable invalid patterns for now
llvm-svn: 75978
2009-07-16 14:05:32 +00:00
Anton Korobeynikov 2d218394c6 Add z9 and z10 target processors. Mark z10-only instructions as such.
llvm-svn: 75977
2009-07-16 14:05:00 +00:00
Anton Korobeynikov 68b8486fde Fix MUL64rm instruction asmprinting
llvm-svn: 75976
2009-07-16 14:04:38 +00:00
Anton Korobeynikov edba6f3af7 Preliminary asmprinting of globals
llvm-svn: 75975
2009-07-16 14:04:22 +00:00
Anton Korobeynikov a2afc692f6 Implement asmprinting for odd-even regpairs
llvm-svn: 75974
2009-07-16 14:04:01 +00:00
Anton Korobeynikov ec66c122e0 32-bit ri addressing mode has only 12-bit displacement
llvm-svn: 75973
2009-07-16 14:03:41 +00:00
Anton Korobeynikov 7b2353595d Forgot to add
llvm-svn: 75972
2009-07-16 14:03:24 +00:00
Anton Korobeynikov 12b4b7c5f6 Do not put bunch of target-specific stuff into common namespace
llvm-svn: 75971
2009-07-16 14:03:08 +00:00
Anton Korobeynikov 59ef95bfc1 Print signed imms properly
llvm-svn: 75970
2009-07-16 14:02:45 +00:00
Anton Korobeynikov 5af8f0ebf1 Provide hooks for spilling / restoring stuff
llvm-svn: 75969
2009-07-16 14:01:27 +00:00
Anton Korobeynikov b284c9d876 Revert thinko
llvm-svn: 75968
2009-07-16 14:01:10 +00:00
Anton Korobeynikov abbae3bc5e Temporary workaround problem with signed 32-bit imm's
llvm-svn: 75967
2009-07-16 14:00:42 +00:00
Anton Korobeynikov ace2a02a84 Implement InsertBranch() hook
llvm-svn: 75966
2009-07-16 14:00:10 +00:00
Anton Korobeynikov 73bf01f236 Pipehole pattern for i32 imm's
llvm-svn: 75965
2009-07-16 13:59:49 +00:00
Anton Korobeynikov ff1edc23ac Bunch of sext_inreg patterns
llvm-svn: 75964
2009-07-16 13:59:18 +00:00
Anton Korobeynikov c3170f5236 Provide normal 32 bit load and store
llvm-svn: 75963
2009-07-16 13:58:43 +00:00
Anton Korobeynikov d568f6dce2 Proper lower 'small' results
llvm-svn: 75962
2009-07-16 13:58:24 +00:00
Anton Korobeynikov f1bf3176c6 Completel forgot about unconditional branches
llvm-svn: 75961
2009-07-16 13:57:52 +00:00
Anton Korobeynikov 15d6e8785b Lower addresses of globals
llvm-svn: 75960
2009-07-16 13:57:27 +00:00
Anton Korobeynikov a442cdfb04 Test (incomplete) for easy muls
llvm-svn: 75959
2009-07-16 13:57:03 +00:00
Anton Korobeynikov f0d7d6ce65 Provide "wide" muls and divs/rems
llvm-svn: 75958
2009-07-16 13:56:42 +00:00
Anton Korobeynikov d919010b6a Fix thinko
llvm-svn: 75957
2009-07-16 13:56:11 +00:00
Anton Korobeynikov 4ee0acd326 Fix epic bug with invalid regclass for R0D
llvm-svn: 75956
2009-07-16 13:55:51 +00:00
Anton Korobeynikov 12996eabbd Let RegisterInfo decide whether it can emit cross-class copy or not
llvm-svn: 75955
2009-07-16 13:55:26 +00:00
Anton Korobeynikov 590f99b18b More register pairs (now 32 bit ones)
llvm-svn: 75954
2009-07-16 13:55:04 +00:00
Anton Korobeynikov ccde90b83c Add even-odd register pairs
llvm-svn: 75953
2009-07-16 13:54:45 +00:00
Anton Korobeynikov 31e9a53d17 Unbreak due to mainline api change
llvm-svn: 75952
2009-07-16 13:54:20 +00:00
Anton Korobeynikov 071178ea15 Preliminary mul lowering
llvm-svn: 75951
2009-07-16 13:53:55 +00:00
Anton Korobeynikov 23e3c6657c More extloads
llvm-svn: 75950
2009-07-16 13:53:35 +00:00
Anton Korobeynikov b04a4fa5c1 Tests for cmp / br_cc / select_cc
llvm-svn: 75949
2009-07-16 13:53:15 +00:00
Anton Korobeynikov 0f59e1e874 SELECT_CC lowering
llvm-svn: 75948
2009-07-16 13:52:51 +00:00
Anton Korobeynikov ac4fb7f977 Conditional branches and comparisons
llvm-svn: 75947
2009-07-16 13:52:31 +00:00
Anton Korobeynikov 11665a64b0 Emit correct offset for PseudoSourceValue
llvm-svn: 75946
2009-07-16 13:52:10 +00:00
Anton Korobeynikov 29329a0695 Provide proper stack offsets for outgoing arguments
llvm-svn: 75945
2009-07-16 13:51:53 +00:00
Anton Korobeynikov 44483f9eb3 Change register allocation order to reduce amount of callee-saved regs to be spilled.
llvm-svn: 75944
2009-07-16 13:51:34 +00:00
Anton Korobeynikov 8695a30066 Emit callee-saved regs spills / restores
llvm-svn: 75943
2009-07-16 13:51:12 +00:00
Anton Korobeynikov b638a8fd73 Scan for presence of calls and determine max callframe size early. To allow ProcessFunctionBeforeCalleeSaveScan() use this information
llvm-svn: 75942
2009-07-16 13:50:40 +00:00
Anton Korobeynikov d694b9ff8b Some preliminary call lowering
llvm-svn: 75941
2009-07-16 13:50:21 +00:00
Anton Korobeynikov 018599fc0b Prologue / epilogue emission
llvm-svn: 75940
2009-07-16 13:49:49 +00:00
Anton Korobeynikov 09890bd434 Add simple frame index elimination
llvm-svn: 75939
2009-07-16 13:49:25 +00:00
Anton Korobeynikov 5dc5629100 Provide proper test :)
llvm-svn: 75938
2009-07-16 13:48:59 +00:00
Anton Korobeynikov 8a095bf56d Swap the order of imm and idx field for rri addrmode in order to make handling of rri and ri addrmodes common
llvm-svn: 75937
2009-07-16 13:48:42 +00:00
Anton Korobeynikov 19911b338a Do not truncate sign bits for negative imms
llvm-svn: 75936
2009-07-16 13:48:23 +00:00
Anton Korobeynikov 405833dfb6 Add address computation stuff
llvm-svn: 75935
2009-07-16 13:47:59 +00:00
Anton Korobeynikov b1e35b311c Cleanup
llvm-svn: 75934
2009-07-16 13:47:36 +00:00
Anton Korobeynikov df99232d27 Add mem-imm stores
llvm-svn: 75933
2009-07-16 13:47:14 +00:00
Anton Korobeynikov 98dfc8c2c4 [PATCH 023/155] Typo
llvm-svn: 75932
2009-07-16 13:45:22 +00:00
Anton Korobeynikov 44f8bbfb3f Add stores and truncstores
llvm-svn: 75931
2009-07-16 13:45:00 +00:00
Anton Korobeynikov 11b91b4e2e Add patterns for various extloads
llvm-svn: 75930
2009-07-16 13:44:30 +00:00
Anton Korobeynikov 0179364392 Do some heroic rri address matching (shamelessly stolen from x86 backend). Not tested though.
llvm-svn: 75929
2009-07-16 13:44:00 +00:00
Anton Korobeynikov 3709f49ee9 Change register allocation order, so R0 will be allocated the last among scratch. This will make address-calculation code much more happy.
llvm-svn: 75928
2009-07-16 13:43:40 +00:00
Anton Korobeynikov 04be818918 Add shifts and reg-imm address matching
llvm-svn: 75927
2009-07-16 13:43:18 +00:00
Anton Korobeynikov cf7ea6a94f Add bunch of 32-bit patterns... Uffff :)
llvm-svn: 75926
2009-07-16 13:42:31 +00:00
Anton Korobeynikov bbd751e410 Propagate return result extension type
llvm-svn: 75925
2009-07-16 13:35:48 +00:00
Rafael Espindola 5618d808e0 Add tests for fixes I committed earlier to the C++ FE.
llvm-svn: 75924
2009-07-16 13:35:42 +00:00
Anton Korobeynikov 293324104b Add 32 bit subregs
llvm-svn: 75923
2009-07-16 13:35:30 +00:00
Anton Korobeynikov de517f1e32 Add another bunch of reg-imm patterns for add/or/and/xor
llvm-svn: 75922
2009-07-16 13:35:08 +00:00
Anton Korobeynikov ebe2de0e14 Add bunch of reg-imm movs
llvm-svn: 75921
2009-07-16 13:34:50 +00:00
Anton Korobeynikov 168614f54f Proper match halfword-imm operands for mov and add
llvm-svn: 75920
2009-07-16 13:34:24 +00:00
Anton Korobeynikov 28234bcde2 Provide masked reg-imm 'or' and 'and'
llvm-svn: 75919
2009-07-16 13:33:57 +00:00
Anton Korobeynikov 1c4c7823ae Fix test running lines
llvm-svn: 75918
2009-07-16 13:33:21 +00:00
Anton Korobeynikov 0d76b17a78 Add reg-reg and pattern
llvm-svn: 75917
2009-07-16 13:32:49 +00:00
Anton Korobeynikov f9fe4036f2 Add sub reg-reg pattern
llvm-svn: 75916
2009-07-16 13:32:16 +00:00
Anton Korobeynikov a083d7af53 Add xor reg-reg pattern
llvm-svn: 75915
2009-07-16 13:31:28 +00:00
Anton Korobeynikov 65096d6a60 Add or reg-reg pattern.
llvm-svn: 75914
2009-07-16 13:30:53 +00:00
Anton Korobeynikov 18172d786f Add add reg-reg and reg-imm patterns
llvm-svn: 75913
2009-07-16 13:30:15 +00:00
Anton Korobeynikov 09082fa01a Add simple reg-reg and reg-imm moves
llvm-svn: 75912
2009-07-16 13:29:38 +00:00
Anton Korobeynikov cf4ba97dba Minimal lowering for formal_arguments / ret
llvm-svn: 75911
2009-07-16 13:28:59 +00:00
Anton Korobeynikov a3ceeaeda5 Add testsuite dir for systemz stuff
llvm-svn: 75910
2009-07-16 13:28:22 +00:00
Anton Korobeynikov c334c28b3b Let's start another backend :)
llvm-svn: 75909
2009-07-16 13:27:25 +00:00
Richard Osborne 0cceec520c Combine an unaligned store of unaligned load into a memmove.
llvm-svn: 75908
2009-07-16 12:50:48 +00:00
Richard Osborne efe3f9c9f4 Lower the threshold at which memcpy / memmove / memset stop being expanded
inline in the XCore.

llvm-svn: 75906
2009-07-16 12:41:34 +00:00
Richard Osborne 5092f7ee93 Fix typo in last commit on expansion of unaligned loads.
llvm-svn: 75903
2009-07-16 10:48:47 +00:00
Richard Osborne bfdc557c8a Expand unaligned 32 bit loads from an address which is a constant
offset from a 32 bit aligned base as follows:

  ldw low, base[offset >> 2]
  ldw high, base[(offset >> 2) + 1]
  shr low_shifted, low, (offset & 0x3) * 8
  shl high_shifted, high, 32 - (offset & 0x3) * 8
  or result, low_shifted, high_shifted

Expand 32 bit loads / stores with 16 bit alignment into two 16 bit
loads / stores.

llvm-svn: 75902
2009-07-16 10:42:35 +00:00
Richard Osborne 25b33cb035 Custom lower unaligned 32 bit stores and loads into libcalls. This is
a big code size win since before they were expanding to upto 16
instructions.

llvm-svn: 75901
2009-07-16 10:21:18 +00:00
Evan Cheng 84517443ca Let callers decide the sub-register index on the def operand of rematerialized instructions.
Avoid remat'ing instructions whose def have sub-register indices for now. It's just really really hard to get all the cases right.

llvm-svn: 75900
2009-07-16 09:20:10 +00:00
Chris Lattner d8fc886b1f use SUBREG_TO_REG instead of INSERT_SUBREG, this way the code
generator can know the top bits are zero, not undefined.
Thanks to Dan for pointing this out.

llvm-svn: 75899
2009-07-16 06:31:37 +00:00
Bruno Cardoso Lopes 5dd954b661 Fix coding style issues pointed by Bill.
llvm-svn: 75898
2009-07-16 06:26:41 +00:00
Chris Lattner 5d485f7893 add a knob to turn off PrettyStackTrace globally. Patch by Zoltan
Varga!

llvm-svn: 75897
2009-07-16 06:17:45 +00:00
Chris Lattner 693fbb8fee implement .include in the lexer/parser instead of passing it into the streamer.
llvm-svn: 75896
2009-07-16 06:14:39 +00:00
Chris Lattner efeba80e74 fix some casts that I improperly refactored, patch by Artur Pietrek!
llvm-svn: 75894
2009-07-16 04:34:33 +00:00
Daniel Dunbar b825dd3a31 Remove unused header.
llvm-svn: 75893
2009-07-16 04:01:35 +00:00
Daniel Dunbar 4580638808 Kill off last uses of TargetMachineRegistry class.
llvm-svn: 75892
2009-07-16 02:41:19 +00:00
Daniel Dunbar 8872591814 Fix gcc 4.0 build failure, can't rely on access inside nested friended class.
llvm-svn: 75891
2009-07-16 02:38:28 +00:00
Daniel Dunbar d3706458df Switch llc and createJIT to use simpler command line parsing for -march.
llvm-svn: 75890
2009-07-16 02:23:53 +00:00
Daniel Dunbar 78c8fb1056 Add registered target list to --version output.
llvm-svn: 75889
2009-07-16 02:06:09 +00:00
Daniel Dunbar 3d92d936b9 Make sure targets are initialized before we do anything, even command line
processing.

llvm-svn: 75888
2009-07-16 02:04:54 +00:00
Daniel Dunbar c151c51ea0 Kill off <TARGET>MachineModule variables, and <TARGETASMPRINTER>ForceLink
variables.
 - Module initialization functions supplanted the need for these.

llvm-svn: 75886
2009-07-16 01:55:13 +00:00
Dan Gohman 5a347d4bb7 formatted_raw_ostream both is-a raw_ostream and has-a raw_ostream. This
means that two separate raw_ostreams are doing buffering before data is
sent to the underlying stream. Besides the inefficiency of redundant
buffering, the second level of buffering doesn't recieve flush()
requests.

Fix this by having formatted_raw_ostream set the underlying raw_ostream
to be unbuffered. This eliminates inefficiency due to redundant buffering,
and it makes the flush() disconnect harmless.

This fixes PR4559.

llvm-svn: 75883
2009-07-16 01:32:46 +00:00
Chris Lattner 86085a57eb fix section switching to ensure that stubs are emitted to the right
section on ppc.

llvm-svn: 75881
2009-07-16 01:23:26 +00:00
Daniel Dunbar 9cfef38b25 Add explicit comment that clients can call target initialization functions
multiple times.

llvm-svn: 75880
2009-07-16 01:13:00 +00:00
Devang Patel f281bf803e Skip special LLVM prefix '1' while emitting linknage name.
This prefix is used by LLVM to inform the asm printer to not emit usual global symbol prefix before the symbol name.

llvm-svn: 75875
2009-07-16 01:01:22 +00:00
Daniel Dunbar 0b02da75d6 Regerate CMake library dependencies.
- Added a sed script to do this in the comments.

llvm-svn: 75872
2009-07-16 00:43:36 +00:00
Daniel Dunbar e0daf0ca9e Kill off cmake magic to force linking.
- This isn't needed anymore, we require clients to call the appropriate
   initialization routines using TargetSelect.h.

llvm-svn: 75871
2009-07-16 00:35:05 +00:00
Daniel Dunbar 3ce33b8640 Update llvm{do,grep} to also search cmake / .cmake files
llvm-svn: 75867
2009-07-16 00:06:36 +00:00
Owen Anderson d420fd4f75 Now that we have contexts on types, convert some more internals to use contexts.
llvm-svn: 75866
2009-07-16 00:03:07 +00:00
Daniel Dunbar 06941b3f7c We don't need to use llvm_report_error, this interface can deal with errors
(although we don't get a very good error message).

llvm-svn: 75864
2009-07-15 23:54:01 +00:00
Owen Anderson 4fdeba9706 Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst.
llvm-svn: 75863
2009-07-15 23:53:25 +00:00
Daniel Dunbar f060b4d977 Add missing includes.
llvm-svn: 75862
2009-07-15 23:48:37 +00:00
Jakob Stoklund Olesen a385d01cae Verify that there is no kill flag on tied operands on two-address instructions.
This extra check is not trigged when runnning "make check" on top-of-tree.

Change error message to better match llvm_unreachable() grammar.

Don't call llvm_unreachable() when writing error messages to a file, but keep going.

llvm-svn: 75860
2009-07-15 23:37:26 +00:00
Daniel Dunbar d97db682a3 Lift addAssemblyEmitter into LLVMTargetMachine.
- No functionality change.

llvm-svn: 75859
2009-07-15 23:34:19 +00:00
Dan Gohman 2b30e8be44 Fix this comment to mention outs() rather than cout.
llvm-svn: 75858
2009-07-15 23:33:14 +00:00
Dan Gohman 58fcef917c Change raw_ostream so that it doesn't call llvm_report_error
immediately on every output error. Instead, add a flag to
raw_ostream, and set the flag whenever an error is detected.

The flag can be queried and cleared from the public API. This
gives applications more flexibility to handling errors in
application-specific ways.

If the flag is not cleared when the raw_ostream is destructed,
llvm_report_error is called from the destructor. This ensures
that errors are not implicitly silenced, and provides
convenient default behavior for tools like llc and opt.
Clients wishing to avoid llvm_report_error calls from
raw_ostream should check for errors and clear the error flag.

llvm-svn: 75857
2009-07-15 23:25:33 +00:00
Daniel Dunbar 15c3e71e6f Register AsmPrinter for XCore, MSP430, and PIC16 targets.
- Switch to standard addAssemblyEmitter logic.

llvm-svn: 75854
2009-07-15 23:17:20 +00:00
Owen Anderson e3c21e6540 Add an LLVMContext to Type, hardwired to the global context until Type uniquing is moved on the contexts themselves.
llvm-svn: 75853
2009-07-15 22:50:23 +00:00
Eli Friedman 662da55c5f Switch invars away from using isTrapping when it really shouldn't be
using it.

llvm-svn: 75852
2009-07-15 22:48:29 +00:00
Bob Wilson 5854e5b179 Clean up some comments.
llvm-svn: 75851
2009-07-15 22:43:51 +00:00
Daniel Dunbar c901392ba4 Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine.
- No intended functionality change.

llvm-svn: 75848
2009-07-15 22:33:19 +00:00
Jakob Stoklund Olesen 41ed90f03e Fix bug in RegScavenger::scavengeRegister().
Reserved registers are not candidates for scavenging, and they were removed
from the candidate list like this:

CreateRegClassMask(RC, Candidates);
Candidates ^= ReservedRegs;

However, when there are reserved registers outside RC, this causes invalid
bits to be set in Candidates.

llvm-svn: 75847
2009-07-15 22:32:11 +00:00
Owen Anderson 19251ec836 To simplify the upcoming context-on-type change, switch all command line tools to using the default global context for now.
This will let us to hardwire stuff to the global context in the short term while the API is sorted out.

llvm-svn: 75846
2009-07-15 22:16:10 +00:00
Eli Friedman ebe66ab13b Don't restrict the set of instructions where we try to constant-fold the
operands; it's possible to end up with a constant-foldable operand to 
most instructions, even those which can't trap.

llvm-svn: 75845
2009-07-15 22:13:34 +00:00
Daniel Dunbar 5302288c90 Remove old style hacks to register AsmPrinter into TargetMachine.
- No intended functionality change.

llvm-svn: 75843
2009-07-15 22:01:32 +00:00
Chris Lattner dac44ec99b Update the C bindings to keep the LLVMTypeKind up to date between the C/C++
stuff.  Patch by Zoltan Varga!

llvm-svn: 75842
2009-07-15 22:00:31 +00:00
Daniel Dunbar 3a3e83c3e2 Remove mismatched and unnecessary declaration.
llvm-svn: 75841
2009-07-15 21:52:40 +00:00
Owen Anderson f945a9ed07 Move a few more convenience factory functions from Constant to LLVMContext.
llvm-svn: 75840
2009-07-15 21:51:10 +00:00
Chris Lattner d098c5a0fc move createAlphaLLRPPass out of addAssemblyEmitter to make Alpha
more like other targets.

llvm-svn: 75839
2009-07-15 21:40:24 +00:00
Evan Cheng 43229fb489 ShortenDeadCopySrcLiveRange needs to be more conservative in multi-kill situations.
llvm-svn: 75838
2009-07-15 21:39:50 +00:00
Ted Kremenek 722f6508a4 Add script 'UpdateCMakeLists.pl'. This script can be used (manually) to update
the list of files in the CMakeLists.txt files.

It works by scanning (starting from the working directory from which it is run)
all subdirectories containing CMakeLists.txt files. It then updates the list of
C and C++ files in the 'add_llvm_library' and 'add_clang_library' lists. Sources
file lists are emitted in lexical order.

llvm-svn: 75833
2009-07-15 21:10:57 +00:00
Ted Kremenek 39816d9157 Lexically order files in CMakeLists.txt files.
llvm-svn: 75831
2009-07-15 21:08:16 +00:00
Owen Anderson 8ee7e405dc Move the ConstantStruct factory methods over to LLVMContext.
llvm-svn: 75830
2009-07-15 21:00:46 +00:00
Daniel Dunbar 7b6993f3f2 Remove unused function.
llvm-svn: 75829
2009-07-15 20:59:20 +00:00
Bruno Cardoso Lopes 2717863900 use std::vector instead of std::list for both Section and Symbol lists because
we care more about random access than insertion/deletion of elements.

llvm-svn: 75828
2009-07-15 20:49:10 +00:00
Dale Johannesen 644e74abbe Fix test so it works on systems where wchar_t != int.
llvm-svn: 75827
2009-07-15 20:40:53 +00:00
Daniel Dunbar 4325dae645 Update CMakeLists for reapplication.
llvm-svn: 75825
2009-07-15 20:34:36 +00:00
Dale Johannesen 50267456a4 Test for llvm-gcc patch 75822.
llvm-svn: 75824
2009-07-15 20:27:44 +00:00
Daniel Dunbar e833810a5e Reapply TargetRegistry refactoring commits.
--- Reverse-merging r75799 into '.':
 U   test/Analysis/PointerTracking
U    include/llvm/Target/TargetMachineRegistry.h
U    include/llvm/Target/TargetMachine.h
U    include/llvm/Target/TargetRegistry.h
U    include/llvm/Target/TargetSelect.h
U    tools/lto/LTOCodeGenerator.cpp
U    tools/lto/LTOModule.cpp
U    tools/llc/llc.cpp
U    lib/Target/PowerPC/PPCTargetMachine.h
U    lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
U    lib/Target/PowerPC/PPCTargetMachine.cpp
U    lib/Target/PowerPC/PPC.h
U    lib/Target/ARM/ARMTargetMachine.cpp
U    lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U    lib/Target/ARM/ARMTargetMachine.h
U    lib/Target/ARM/ARM.h
U    lib/Target/XCore/XCoreTargetMachine.cpp
U    lib/Target/XCore/XCoreTargetMachine.h
U    lib/Target/PIC16/PIC16TargetMachine.cpp
U    lib/Target/PIC16/PIC16TargetMachine.h
U    lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
U    lib/Target/Alpha/AlphaTargetMachine.cpp
U    lib/Target/Alpha/AlphaTargetMachine.h
U    lib/Target/X86/X86TargetMachine.h
U    lib/Target/X86/X86.h
U    lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
U    lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
U    lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h
U    lib/Target/X86/X86TargetMachine.cpp
U    lib/Target/MSP430/MSP430TargetMachine.cpp
U    lib/Target/MSP430/MSP430TargetMachine.h
U    lib/Target/CppBackend/CPPTargetMachine.h
U    lib/Target/CppBackend/CPPBackend.cpp
U    lib/Target/CBackend/CTargetMachine.h
U    lib/Target/CBackend/CBackend.cpp
U    lib/Target/TargetMachine.cpp
U    lib/Target/IA64/IA64TargetMachine.cpp
U    lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
U    lib/Target/IA64/IA64TargetMachine.h
U    lib/Target/IA64/IA64.h
U    lib/Target/MSIL/MSILWriter.cpp
U    lib/Target/CellSPU/SPUTargetMachine.h
U    lib/Target/CellSPU/SPU.h
U    lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
U    lib/Target/CellSPU/SPUTargetMachine.cpp
U    lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp
U    lib/Target/Mips/MipsTargetMachine.cpp
U    lib/Target/Mips/MipsTargetMachine.h
U    lib/Target/Mips/Mips.h
U    lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
U    lib/Target/Sparc/SparcTargetMachine.cpp
U    lib/Target/Sparc/SparcTargetMachine.h
U    lib/ExecutionEngine/JIT/TargetSelect.cpp
U    lib/Support/TargetRegistry.cpp

llvm-svn: 75820
2009-07-15 20:24:03 +00:00
Dan Gohman b9ee3f8963 Add a note about the raw_fd_ostream API change.
llvm-svn: 75818
2009-07-15 19:59:19 +00:00
Xerxes Ranby 5e24aa6490 Fix cmake build, add TargetMachineRegistry.cpp that got restored in r75807
llvm-svn: 75817
2009-07-15 19:58:35 +00:00
Dan Gohman 98ef2852ab Apparently Darwin doesn't have /dev/full :-(.
llvm-svn: 75809
2009-07-15 18:41:11 +00:00
Stuart Hastings 850f8e4266 Restore file lost during reversion.
llvm-svn: 75807
2009-07-15 18:30:44 +00:00
David Greene 11817374de Get rid of postInstructionAction and call EmitComments directly.
llvm-svn: 75806
2009-07-15 18:24:03 +00:00
Rafael Espindola f5d53d46b9 Revert 75798 to fix llvm build.
llvm-svn: 75805
2009-07-15 17:40:42 +00:00
Dan Gohman 4833feb399 Fix a typo in a comment that Duncan noticed.
llvm-svn: 75804
2009-07-15 17:38:23 +00:00
Dan Gohman 46f574ac97 Fix a thinko in a comment that Duncan spotted.
llvm-svn: 75803
2009-07-15 17:34:43 +00:00
Dan Gohman 607818a2c1 Add a Force option to raw_fd_ostream to specify whether opening
an existing file is considered an error. Convert several tools
to use raw_fd_ostream instead of std::ostream, and to use this
new option instead of doing a manual check.

llvm-svn: 75801
2009-07-15 17:29:42 +00:00
Stuart Hastings 338191cd67 Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair broken LLVM-GCC build.
Will revert 75770 in the llvm-gcc trunk.

llvm-svn: 75799
2009-07-15 17:27:11 +00:00
Duncan Sands c5928d2fad The static function TypeToFloatSemantics is now
unused - remove it.

llvm-svn: 75798
2009-07-15 17:19:24 +00:00
Richard Osborne a8edd048c2 Fix pattern for LD16S_3r, add basic tests to check load / store instructions
are being properly selected.

llvm-svn: 75797
2009-07-15 17:06:59 +00:00
Dan Gohman 6935332d5f Add a raw_ostream version of CheckBitcodeOutputToConsole.
llvm-svn: 75796
2009-07-15 17:04:50 +00:00
Dan Gohman 56ba398889 Add a testcase for raw_ostream error checking.
llvm-svn: 75795
2009-07-15 16:47:02 +00:00
Dan Gohman 2d6b047463 Add a comment noting that raw_os_ostream does not check for errors.
llvm-svn: 75794
2009-07-15 16:45:52 +00:00
Dan Gohman 213e87b1fe Check for errors on close(2) too. And lseek(2).
llvm-svn: 75793
2009-07-15 16:43:01 +00:00
Dan Gohman 33fb640835 Use 0664 instead of 0644 for the default open mode. This is
consistent with common std::ostream implmentations, and it gives
the user the option of using the umask group write bit.

llvm-svn: 75792
2009-07-15 16:39:40 +00:00
Dan Gohman d8db376071 Use errs() instead of std::cerr.
llvm-svn: 75791
2009-07-15 16:35:29 +00:00
Dan Gohman c1dd25da31 Add a raw_ostream operator<< to sys::Path.
llvm-svn: 75790
2009-07-15 16:33:33 +00:00
David Goodwin f39120571b Thumb-2 only support [base_reg + offset_reg] addressing, not [base_reg - offset_reg].
llvm-svn: 75789
2009-07-15 15:50:19 +00:00
Richard Osborne 57489b0658 Fix XCoreTargetLowering::isLegalAddressingMode to handle non simple VTs.
llvm-svn: 75788
2009-07-15 15:46:56 +00:00
Richard Osborne c50a460296 Remove the xcore-file-directive option now that LLVM has proper support for
emitting file directives with one parameter.

llvm-svn: 75787
2009-07-15 15:36:37 +00:00
Kevin Enderby 09ea5709a2 Added llvm-mc support for parsing the .dump and .load directives.
llvm-svn: 75786
2009-07-15 15:30:11 +00:00
Duncan Sands 9ad1594fe0 Remove the v3i32 and v3f32 value types: they are not
native for any supported targets.

llvm-svn: 75785
2009-07-15 15:28:52 +00:00
Xerxes Ranby b871813cc9 Added myself to the blame list.
llvm-svn: 75783
2009-07-15 13:01:49 +00:00
Daniel Dunbar eb8c83b4c3 Replace large swaths of copy-n-paste code with obvious helper function...
- Which was already present in the module!

 - I skipped this xform for Alpha, since it runs an extra pass during assembly
   emission, but not when emitting assembly via the DumpAsm flag.

 - No functionality change.

--
ddunbar@giles:llvm$ svn diff | grep '^- ' | sort | uniq -c
  18 -      PM.add(AsmPrinterCtor(ferrs(), *this, true));
  18 -    assert(AsmPrinterCtor && "AsmPrinter was not linked in");
  18 -    if (AsmPrinterCtor)
  18 -  if (DumpAsm) {
  18 -  }
ddunbar@giles:llvm$ svn diff | grep '^+ ' | sort | uniq -c
  18 +    addAssemblyEmitter(PM, OptLevel, true, ferrs());
  18 +  if (DumpAsm)
--

llvm-svn: 75782
2009-07-15 12:49:15 +00:00
Duncan Sands cf5b0f4155 Remove StringConstantPrefix now that the only user
(llvm-gcc) has gone.

llvm-svn: 75781
2009-07-15 12:39:48 +00:00
Daniel Dunbar 863e587d27 Kill off old (TargetMachine level, not Target level) match quality functions.
llvm-svn: 75780
2009-07-15 12:26:05 +00:00
Xerxes Ranby 9dbdf228d0 Fix cmake build lib/Target/TargetMachineRegistry.cpp removed.
llvm-svn: 75779
2009-07-15 12:19:36 +00:00
Daniel Dunbar 6db8134e80 Provide TargetMachine implementations with reference to Target they were created
from.
 - This commit is almost entirely propogating the reference through the
   TargetMachine subclasses' constructor calls.

llvm-svn: 75778
2009-07-15 12:11:05 +00:00
Duncan Sands 2d8c9aeed7 String constants are now output with private linkage.
llvm-svn: 75777
2009-07-15 12:09:18 +00:00
Daniel Dunbar 88f8559261 Kill off unused TargetMachineRegistry methods and ivars.
llvm-svn: 75774
2009-07-15 11:48:36 +00:00
Daniel Dunbar 5eb9700578 Migrate llc and the JIT to using the TargetRegistry for lookups.
- They still use the TargetMachineRegistry to populate the contents of the
   -march option (via the listener interface). We can't just populate it in the
   option parser because we can't expect the TargetRegistry to be populated yet
   (we no longer rely on static constructors).

 - There are a couple ways to finish killing off TargetMachineRegistry, but I
   haven't figured out the cleanest one yet...

llvm-svn: 75773
2009-07-15 11:36:15 +00:00
Daniel Dunbar 95b534f80e Include the Target& in the TargetMachineRegisterEntry.
llvm-svn: 75772
2009-07-15 11:23:49 +00:00
Daniel Dunbar 50859c907a Allow multiple registrations of the same target.
- This doesn't necessarily seem like a good idea, but the JIT unittest
   currently relies on it.

llvm-svn: 75769
2009-07-15 10:32:44 +00:00
Daniel Dunbar 81fed34d80 Initialize the target info via the InitializeNativeTarget() hook.
llvm-svn: 75768
2009-07-15 10:29:55 +00:00
Daniel Dunbar a8d73996ce Switch some obvious clients to using the new TargetRegistry.
llvm-svn: 75767
2009-07-15 10:05:03 +00:00
Daniel Dunbar 776fe8db5f Reimplement TargetMachineRegistry in terms of TargetRegistry.
- This is a temporary hack to aid in incremental refactoring, for now we
   allocate a new TargetMachineRegistryEntry on every getClosest... call.

 - No intended functionality change, other than the leaked memory.

llvm-svn: 75766
2009-07-15 09:53:37 +00:00
Daniel Dunbar 7acc27f7c5 Mark Target's creation routines as const.
llvm-svn: 75763
2009-07-15 09:38:10 +00:00
Daniel Dunbar b22f50e4c4 Register Target's TargetMachine and AsmPrinter in the new registry.
- This abuses TargetMachineRegistry's constructor for now, this will get
   cleaned up in time.

llvm-svn: 75762
2009-07-15 09:22:31 +00:00
Daniel Dunbar f47d8300f8 Fix thinko
llvm-svn: 75760
2009-07-15 08:56:49 +00:00
Daniel Dunbar dcb50b9b54 Detect write failures on raw_fd_ostream.
llvm-svn: 75758
2009-07-15 08:11:46 +00:00
Daniel Dunbar b97d02fd96 Tweak CMake component lookup, I misunderstood what was happening here.though. :(
llvm-svn: 75757
2009-07-15 07:52:36 +00:00
Daniel Dunbar 7d18145708 Include Target specific Info initialization routine when initializing all
targets.

llvm-svn: 75756
2009-07-15 07:48:39 +00:00
Daniel Dunbar 2179d73133 Teach Makefiles & CMake to link in the <TARGET>Info library when linking the
TARGET component.
 - Also, updated some CMake library dependencies, it is still missing some
   though. :(

llvm-svn: 75755
2009-07-15 07:43:34 +00:00
Daniel Dunbar 54995de1d4 Fix stupid thinko
llvm-svn: 75754
2009-07-15 07:37:49 +00:00
Daniel Dunbar 1c6633221f Address some review comments on TargetRegistry.
llvm-svn: 75753
2009-07-15 07:09:29 +00:00
Daniel Dunbar b3ec48892d Add TargetInfo directories to CMake's list.
llvm-svn: 75752
2009-07-15 07:04:27 +00:00
Daniel Dunbar 56e2947a33 Add TargetInfo libraries for all targets.
- Intended to match current TargetMachine implementations.

 - No facilities for linking these in yet.

llvm-svn: 75751
2009-07-15 06:35:19 +00:00
Evan Cheng 9e0c7f2c5e Move load / store folding alignment require into the table(s).
llvm-svn: 75749
2009-07-15 06:10:07 +00:00
Ted Kremenek 1492e1781a Update CMake file.
llvm-svn: 75746
2009-07-15 05:39:55 +00:00
Chris Lattner e4a3f6fa3b rename decorateName -> DecorateCygMingName, make it assert if not
cygming, make the two callers only call it if cygming.  Other minor
cleanups.

llvm-svn: 75744
2009-07-15 04:55:56 +00:00
Chris Lattner c35b5bac32 eliminate the Mangler::PreserveAsmNames bit, the sole client of this
can do it perfectly well itself.

llvm-svn: 75743
2009-07-15 04:50:47 +00:00
Chris Lattner fe78558f95 remove printSuffixedName.
llvm-svn: 75742
2009-07-15 04:42:49 +00:00
Chris Lattner a2268c0b19 convert arm/darwin stubs to use the mangler to synthesize all the names instead of
doing it with printSuffixedName.

llvm-svn: 75741
2009-07-15 04:41:01 +00:00
Daniel Dunbar 078a71e4a9 Add new TargetRegistry.
Targets implement a single global Target structure which will live in a new
<Target>/TargetInfo library; this will be present in any image which the target
is usable in.
 - Optional target specific classes can then be registered and attached to the
   Target description.

 - Registration for normal Targets will be done via the initialization functions
   instead of using static constructors.

 - This allows clients to use a single interface to obtain target data, without
   requiring the code generator be linked in. It also provides a natural
   extension point for adding new optional target data (assembler parser,
   disassembler, etc.).

 - This also provides a new entry point for obtaining a target for a particular
   triple (without a module).

 - Not yet used, however this should eventually replace the TargetMachineRegistry.

llvm-svn: 75739
2009-07-15 04:24:58 +00:00
Chris Lattner 55452c2bea fix an arm codegen bug (the same as PR4482 on ppc) where available_externally
symbols were not getting stubs.  While I'm at it, add a big testcase for
stub generation to make sure I don't break anything.

llvm-svn: 75737
2009-07-15 04:12:33 +00:00
Chris Lattner 53fe736214 convert [Hidden]GVNonLazyPtrs to compute the global and stub names
with the mangler (like x86 and ppc), instead of going through 
printSuffixedName.

llvm-svn: 75736
2009-07-15 03:12:43 +00:00
Chris Lattner 52d0fec140 use makeNameProper to add the globalprefix instead of doing it manually.
llvm-svn: 75734
2009-07-15 03:01:23 +00:00
Chris Lattner 7d1f9542c2 get the PPC stub temporary label from the mangler instead of
using horrible string hacking.  This gives us a different label,
but it's just an assembler temporary, so the name doesn't matter.

llvm-svn: 75733
2009-07-15 02:56:53 +00:00
Chris Lattner d68df2a481 turn some if/then's into ?:
llvm-svn: 75732
2009-07-15 02:36:21 +00:00
Chris Lattner 9a066cacf5 eliminate a bunch of printSuffixedName's by using info computed from
Mangler in FnStubs.

llvm-svn: 75731
2009-07-15 02:33:19 +00:00
Chris Lattner e8382ac9b1 convert FnStubs to using a more structured form, eliminating
a couple instances of printSuffixedName (in favor of having
the mangler do stuff).

llvm-svn: 75729
2009-07-15 02:28:57 +00:00
Chris Lattner 1447bd2314 actually $stub labels *are* private, I just missed that
printSuffixedName automatically does this.

llvm-svn: 75727
2009-07-15 01:53:36 +00:00
Chris Lattner dab248ac95 convert this to filecheck style and make it a test of darwin/PPC's
extremely elaborate pic/nopic stubs.

llvm-svn: 75726
2009-07-15 01:43:31 +00:00
Chris Lattner 815337abd6 simplify this test to test the esentials.
llvm-svn: 75725
2009-07-15 01:32:33 +00:00
Ryan Flynn 6817040bed test commit; add self
llvm-svn: 75724
2009-07-15 01:32:31 +00:00
Dan Gohman b0f8e9960d Fix indentation.
llvm-svn: 75723
2009-07-15 01:26:32 +00:00
Dan Gohman c43e47938a Make makeLoopInvariant report whether it made any changes or not,
and use this to simplify more code.

llvm-svn: 75722
2009-07-15 01:25:43 +00:00
Chris Lattner 7f318128d0 $stub references should not be private ("L") labels.
llvm-svn: 75721
2009-07-15 01:23:13 +00:00
Chris Lattner 8da3ce3bfd simplify "EmitExternalGlobal": it is only used to output a
reference to the personality function for a module, and
those are all added to the GVStubs array by looping
over MMI->getPersonalities()

llvm-svn: 75720
2009-07-15 01:16:38 +00:00
Chris Lattner 9ffa4e2193 Convert GVStubs and HiddenGVStubs to work more like the X86 backend, this
eliminates a bunch of uses of "printSuffixedName" and "getGlobalLinkName".

llvm-svn: 75719
2009-07-15 01:14:44 +00:00
Chris Lattner 0b1ca0a303 minor cleanups: only switch sections once before all function stubs, instead of
before each one.

llvm-svn: 75718
2009-07-15 00:55:58 +00:00
Dan Gohman 00d4fb45e5 llvm-c/Core.h is no longer needed in lto.h, and it brings in
several unwanted dependencies.

llvm-svn: 75717
2009-07-15 00:47:00 +00:00
Chris Lattner c1bc3701b6 Fix a fixme, patch by Ryan Flynn!
llvm-svn: 75716
2009-07-15 00:36:04 +00:00
Evan Cheng d1c4705577 control reaches end of non-void function.
llvm-svn: 75714
2009-07-14 23:55:32 +00:00
Kevin Enderby d1ea5393c9 Added llvm-mc support for parsing the .include directive.
llvm-svn: 75711
2009-07-14 23:21:55 +00:00
Chris Lattner ca99c348ed minor syntax cleanup
llvm-svn: 75707
2009-07-14 23:14:10 +00:00
Owen Anderson b6b2530000 Move EVER MORE stuff over to LLVMContext.
llvm-svn: 75703
2009-07-14 23:09:55 +00:00
Daniel Dunbar 2c2c4af05e Fix path name.
llvm-svn: 75697
2009-07-14 22:58:03 +00:00
Bruno Cardoso Lopes ef130cfa95 Use the right relocation type for X86::MOV64ri64i32
llvm-svn: 75687
2009-07-14 21:46:40 +00:00
Bob Wilson a9111b9f97 Fix bad indentation and 80-col violation.
llvm-svn: 75686
2009-07-14 21:45:58 +00:00
Kevin Enderby cbe475dfe8 Added llvm-mc support for parsing the .lsym directive.
llvm-svn: 75685
2009-07-14 21:35:03 +00:00
David Goodwin 95bad85498 Check for PRE_INC and POST_INC.
llvm-svn: 75683
2009-07-14 21:29:29 +00:00
Dan Gohman 92b969ba80 Fix the expansion of umax and smax in the case where one or more of
the operands have pointer type, so that the resulting type matches
the original SCEV type, and so that unnecessary ptrtoints are
avoided in common cases.

llvm-svn: 75680
2009-07-14 20:57:04 +00:00
Chris Lattner 69ec557020 fix a bug in my previous patch.
llvm-svn: 75678
2009-07-14 20:45:41 +00:00
Ted Kremenek 57da3ed4ce Update CMake file.
llvm-svn: 75677
2009-07-14 20:44:17 +00:00
Chris Lattner 3fd68bef66 allow default construction of formatted_raw_ostream.
llvm-svn: 75674
2009-07-14 20:33:33 +00:00
Chris Lattner 5c5140c767 fix David's merge conflict
llvm-svn: 75673
2009-07-14 20:25:40 +00:00
Chris Lattner 79c136d473 reapply r75408, which eliminates MOV64r0 in favor of using
MOV32r0 + subregs to do the same thing.  This should work now
that PR4544 is fixed.  Thanks Evan!

llvm-svn: 75671
2009-07-14 20:19:57 +00:00
David Greene a31f96cf2b Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.

llvm-svn: 75670
2009-07-14 20:18:05 +00:00
Viktor Kutuzov f6a5ab9abd Helper script to use bugpoint with a remote target.
llvm-svn: 75669
2009-07-14 20:08:45 +00:00
Chris Lattner d7fec20cba convert to filecheck style, simplify RUN line, and add comment.
llvm-svn: 75667
2009-07-14 19:49:11 +00:00
Ted Kremenek cc46134838 Update CMake file.
llvm-svn: 75666
2009-07-14 19:46:07 +00:00
Viktor Kutuzov 1518de130e Fix for bugpoint -remote-client
llvm-svn: 75665
2009-07-14 19:10:55 +00:00
Chris Lattner fecff3661f Remove some dead functions, patch by Ryan Flynn!
llvm-svn: 75664
2009-07-14 18:58:35 +00:00
Chris Lattner 109866bf21 convert this test to filecheck style
llvm-svn: 75663
2009-07-14 18:57:40 +00:00
Dan Gohman 3d50c2cfb4 Fix a typo that Edwin spotted.
llvm-svn: 75661
2009-07-14 18:52:00 +00:00
David Goodwin 4ad7797e1c hasThumb2() does not mean we are compiling for thumb, must also check isThumb().
llvm-svn: 75660
2009-07-14 18:48:51 +00:00