Commit Graph

29369 Commits

Author SHA1 Message Date
Evan Cheng 0dc101b897 Add a bit IsUndef to MachineOperand. This indicates the def / use register operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them.
The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing.

This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def.

llvm-svn: 74518
2009-06-30 08:49:04 +00:00
Bill Wendling 778a517725 Temporarily revert r74494. It was causing failures in the unit tests.
llvm-svn: 74515
2009-06-30 07:05:27 +00:00
Owen Anderson 00d07afe98 Fix the build on Cygwin. Patch by Aaron Gray.
llvm-svn: 74510
2009-06-30 05:33:46 +00:00
Chris Lattner b127c0684f remove a bogus note.
llvm-svn: 74509
2009-06-30 05:22:31 +00:00
Chris Lattner 5ed255e642 add a note
llvm-svn: 74508
2009-06-30 04:20:46 +00:00
Bill Wendling 855263371a #include <iostream> is forbidden. Remove it in favor of raw_ostream.
llvm-svn: 74507
2009-06-30 04:07:12 +00:00
Evan Cheng 57726817aa A few more load instructions.
llvm-svn: 74500
2009-06-30 02:15:48 +00:00
Andreas Bolka 9541801105 Array accesses are independent if the underlying arrays differ.
llvm-svn: 74499
2009-06-30 02:12:10 +00:00
Dan Gohman e95d409bdd Define an operator<< for APInt to be used with std::ostream.
This will allow it to be used in unittests that use gtest's
EXPECT_EQ.

llvm-svn: 74494
2009-06-30 01:28:08 +00:00
Dan Gohman e8eca73cdd Minor formatting, whitespace, and 80-column fixes.
llvm-svn: 74492
2009-06-30 01:25:30 +00:00
Dan Gohman 4dfc680059 Minor code simplification.
llvm-svn: 74491
2009-06-30 01:24:43 +00:00
Daniel Dunbar c9dc78ae40 Normalize SourceMgr messages.
- Don't print "Parsing" in front of every message.

 - Take additional "type" argument which is prepended to the message (with ": ")
   if given.

 - Update clients to print errors (warnings) as:
<filename>:<line number>: error(warning): ...

llvm-svn: 74489
2009-06-30 00:49:23 +00:00
Owen Anderson 8e66e0bab4 Add LLVMContext, which will eventually be used as a container for privatizing a lot of (currently) global state, including the
constant and type uniquing tables.  For now, just make it a wrapper around the existing APIs.

llvm-svn: 74488
2009-06-30 00:48:55 +00:00
Mikhail Glushenkov 3fcdada6b4 Add a way to access argv[0] in hooks.
llvm-svn: 74483
2009-06-30 00:16:00 +00:00
Mikhail Glushenkov f40b590721 Move the driver entry point out of Main.inc.
llvm-svn: 74482
2009-06-30 00:15:24 +00:00
Daniel Dunbar cc566a714b llvm-mc: Parse .{,b,p2}align{,w,l} directives.
llvm-svn: 74478
2009-06-29 23:46:59 +00:00
Devang Patel 0a9f9759a3 Struct types are described using field types only.
llvm-svn: 74477
2009-06-29 23:46:50 +00:00
Daniel Dunbar f71a0cca84 Fix install of libCompilerDriver dynamic library to not copy on every build.
llvm-svn: 74473
2009-06-29 22:59:36 +00:00
David Greene 8adf1fdc80 Add a 256-bit register class and YMM registers.
llvm-svn: 74469
2009-06-29 22:50:51 +00:00
David Goodwin 76b37950ca Add Thumb-2 support for TEQ amd TST.
llvm-svn: 74468
2009-06-29 22:49:42 +00:00
Dan Gohman 9d203c636b Use getSCEV instead of getUnknown to create a SCEV for a
Constant. This lets ConstantInts be handled as SCEVConstant instead
of SCEVUnknown, as getUnknown no longer has special-case code for
ConstantInt and friends. This usually doesn't affect the final
output, since the constants end up getting folded later, but it
does make intermediate expressions more obvious in many cases.

llvm-svn: 74459
2009-06-29 21:31:18 +00:00
Daniel Dunbar fdbbc52cfd Don't build LLVMC when configured with --disable-pic (it needs requires shared
module support to build).

llvm-svn: 74456
2009-06-29 21:12:26 +00:00
Torok Edwin 896556eec7 Set wasRun to false here on Dan's suggestion.
llvm-svn: 74455
2009-06-29 21:05:10 +00:00
Devang Patel 40d784180b s/MainCU/ModuleCU/g
llvm-svn: 74452
2009-06-29 20:45:18 +00:00
Devang Patel 8635345d8a Multiple DW_TAG_compile_unit is not used, afaict, on any target.
Update dwarf writer to only emit one DW_TAG_compile_unit per .o file. 

llvm-svn: 74449
2009-06-29 20:38:13 +00:00
Dan Gohman 19d2417c90 Don't cache PHI exit values from exhaustive evaluations, because
an individual exhaustive evaluation reflects only the exit value
implied by an individual exit, which may differ from the actual
exit value of the loop if there are other exits. This fixes PR4477.

llvm-svn: 74447
2009-06-29 20:34:13 +00:00
Rafael Espindola 538064d6b1 FIX PR 4459.
Not sure I understand how the temp register gets used,
but this fixes a bug and introduces no regressions.

llvm-svn: 74446
2009-06-29 20:29:59 +00:00
Torok Edwin 6fb3e98eed Initialize CurSection in constructor.
Not doing so causes some unittests to fail, because CurSection is uninitialized.

llvm-svn: 74442
2009-06-29 19:59:10 +00:00
Daniel Dunbar a97615adf8 Rename MCValue::getCst to getConstant and add MCValue::isConstant.
llvm-svn: 74440
2009-06-29 19:51:00 +00:00
Andreas Bolka 6037bc9e60 Relax LDA memory instruction checks.
llvm-svn: 74439
2009-06-29 18:51:11 +00:00
Torok Edwin 24c7835d19 Call doInitialization(), releaseMemory(), and doFinalization() for on-the-fly passes as well.
Also don't call finalizers for LoopPass if initialization was not called.
Add a unittest that tests that these methods are called, in the proper
order, and the correct number of times.

llvm-svn: 74438
2009-06-29 18:49:09 +00:00
Dan Gohman e00beaaee8 Simplify this code, and avoid using APInt(). This fixes
(otherwise harmless) uninitialized value warnings that
Duncan found with gcc-4.4.

llvm-svn: 74437
2009-06-29 18:25:52 +00:00
Owen Anderson 45c299ef65 Add a target-specific DAG combine on X86 to fold the common pattern of
fence-atomic-fence down to just the atomic op.  This is possible thanks to
X86's relatively strong memory model, which guarantees that locked instructions
(which are used to implement atomics) are implicit fences.

llvm-svn: 74435
2009-06-29 18:04:45 +00:00
David Greene 46b56ffae3 Add processor descriptions for Istanbul and Shanghai.
llvm-svn: 74429
2009-06-29 16:54:06 +00:00
David Greene a4b8998fbb Fix a subtarget feature bug.
llvm-svn: 74428
2009-06-29 16:51:01 +00:00
David Greene f92ba97cda Add more vector ValueTypes for AVX and other extended vector instruction
sets.

llvm-svn: 74427
2009-06-29 16:47:10 +00:00
David Goodwin dbf11ba800 Rename ARMcmpNZ to ARMcmpZ and use it to represent comparisons that set only the Z flag (i.e. eq and ne). Make ARMcmpZ commutative.
llvm-svn: 74423
2009-06-29 15:33:01 +00:00
Duncan Sands 14814d4477 Add triple for OpenBSD.
llvm-svn: 74422
2009-06-29 13:36:13 +00:00
Duncan Sands 24a3724b04 Include the new file ThumbRegisterInfo.cpp to CMakeLists.txt
to make sure ThumbRegisterInfo.cpp are compiled and linked in.
Patch by Xerxes.

llvm-svn: 74421
2009-06-29 13:11:32 +00:00
Evan Cheng b23b50d54d Implement Thumb2 ldr.
After much back and forth, I decided to deviate from ARM design and split LDR into 4 instructions (r + imm12, r + imm8, r + r << imm12, constantpool). The advantage of this is 1) it follows the latest ARM technical manual, and 2) makes it easier to reduce the width of the instruction later. The down side is this creates more inconsistency between the two sub-targets. We should split ARM LDR instruction in a similar fashion later. I've added a README entry for this.

llvm-svn: 74420
2009-06-29 07:51:04 +00:00
Mikhail Glushenkov 72f3f7eb56 Make dynamic LLVMC plugins work on Windows (finally!).
Implemented by making lib/CompilerDriver a shared library that holds all the
global static data (CommandLine options, plugin registry) that we unfortunately
have to live with.

llvm-svn: 74417
2009-06-29 03:09:15 +00:00
Andreas Bolka 3a09c8bd5e Missed one.
llvm-svn: 74416
2009-06-29 00:53:49 +00:00
Andreas Bolka c5558a83f4 Fix case in LDA util function names.
llvm-svn: 74415
2009-06-29 00:50:26 +00:00
Andreas Bolka 9d09e20142 Print pairwise dependence results, add testcases.
llvm-svn: 74402
2009-06-28 00:35:22 +00:00
Andreas Bolka 9fee7f86ad Minimal LDA interface, maximally conservative tester.
llvm-svn: 74401
2009-06-28 00:21:21 +00:00
Andreas Bolka 8976d3bc7e LDA analysis output scaffolding.
llvm-svn: 74400
2009-06-28 00:16:08 +00:00
Dan Gohman 317f054531 Don't try to split a loop when the controlling icmp instruction
doesn't have an IV-based operand. This fixes PR4471.

llvm-svn: 74399
2009-06-27 22:58:27 +00:00
Dan Gohman ffdcba3dbd Remove the block from the LoopInfo, rather than just the Loop.
LoopInfo will handle removing it from the Loop, as well as updating
its own tables.

llvm-svn: 74398
2009-06-27 22:32:36 +00:00
Dan Gohman c8ca49659a Teach LoopSimplify how to merge multiple loop exits into a single exit,
when one of them can be converted to a trivial icmp and conditional
branch.

This addresses what is essentially a phase ordering problem.
SimplifyCFG knows how to do this transformation, but it doesn't do so
if the primary block has any instructions in it other than an icmp and
a branch. In the given testcase, the block contains other instructions,
however they are loop-invariant and can be hoisted. SimplifyCFG doesn't
have LoopInfo though, so it can't hoist them. And, it's important that
the blocks be merged before LoopRotation, as it doesn't support
multiple-exit loops.

llvm-svn: 74396
2009-06-27 21:30:38 +00:00
Dan Gohman 8918b481bf More minor code simplifications.
llvm-svn: 74395
2009-06-27 21:23:40 +00:00
Dan Gohman 4f16a2923c Eliminate a layer of indirection in LoopInfo and MachineLoopInfo.
llvm-svn: 74394
2009-06-27 21:22:48 +00:00
Dan Gohman c5c85c0fec Convert ScalarEvolution to use BumpPtrAllocator and FoldingSet, instead
of a team of individual allocations and a team of std::maps.

llvm-svn: 74393
2009-06-27 21:21:31 +00:00
Dan Gohman 830fd38d9b Change SCEVExpander to use an IRBuilder to emit instructions.
llvm-svn: 74391
2009-06-27 21:18:18 +00:00
Anton Korobeynikov 0f2158b35f Simplify a bit
llvm-svn: 74385
2009-06-27 12:59:03 +00:00
Anton Korobeynikov a1b5b18bd0 ARM refactoring. Step 2: split RegisterInfo
llvm-svn: 74384
2009-06-27 12:16:40 +00:00
Douglas Gregor 33400e3670 Add ThumbInstrInfo.cpp to the CMake makefiles
llvm-svn: 74382
2009-06-27 07:44:59 +00:00
Chris Lattner 1ec3afdc66 remove a bunch of fixmes (old checking code) and commonize all the
target-specific operand printing functionality.  Yay.

llvm-svn: 74379
2009-06-27 05:46:24 +00:00
Chris Lattner ae0acfcef0 pull @GOT, @GOTOFF, @GOTPCREL handling into isel from the asmprinter.
llvm-svn: 74378
2009-06-27 05:39:56 +00:00
Chris Lattner cce1589e4e simplify some code and eliminate the symbolicAddressesAreRIPRel() predicate.
llvm-svn: 74377
2009-06-27 05:24:12 +00:00
Dan Gohman fe174b6952 When a value is used multiple times within a single PHI, instructions
inserted to replace that value must dominate all of of the basic
blocks associated with the uses of the value in the PHI, not just
one of them.

llvm-svn: 74376
2009-06-27 05:16:57 +00:00
Chris Lattner d17366ae72 fix clang/test/CodeGenObjC/try.m, a basereg doesn't mean no global anymore.
llvm-svn: 74375
2009-06-27 04:50:14 +00:00
Chris Lattner 014e83d40d fix a bunch of failures in the X86-64 JIT by tolerating RIP as
a base register.  We just ignore it for now.

llvm-svn: 74374
2009-06-27 04:46:33 +00:00
Chris Lattner 9876bd8257 factor some logic out into a helper function, allow remat of loads from constant
globals.  This implements remat-constant.ll even without aggressive-remat.

llvm-svn: 74373
2009-06-27 04:38:55 +00:00
Chris Lattner fea81da433 Reimplement rip-relative addressing in the X86-64 backend. The new
implementation primarily differs from the former in that the asmprinter
doesn't make a zillion decisions about whether or not something will be
RIP relative or not.  Instead, those decisions are made by isel lowering
and propagated through to the asm printer.  To achieve this, we:

1. Represent RIP relative addresses by setting the base of the X86 addr
   mode to X86::RIP.
2. When ISel Lowering decides that it is safe to use RIP, it lowers to
   X86ISD::WrapperRIP.  When it is unsafe to use RIP, it lowers to
   X86ISD::Wrapper as before.
3. This removes isRIPRel from X86ISelAddressMode, representing it with
   a basereg of RIP instead.
4. The addressing mode matching logic in isel is greatly simplified.
5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate
   passed through various printoperand routines is gone now.
6. The various symbol printing routines in asmprinter now no longer infer
   when to emit (%rip), they just print the symbol.

I think this is a big improvement over the previous situation.  It does have
two small caveats though: 1. I implemented a horrible "no-rip" modifier for
the inline asm "P" constraint modifier.  This is a short term hack, there is
a much better, but more involved, solution.  2. I had to xfail an 
-aggressive-remat testcase because it isn't handling the use of RIP in the
constant-pool reading instruction.  This specific test is easy to fix without
-aggressive-remat, which I intend to do next.

llvm-svn: 74372
2009-06-27 04:16:01 +00:00
Chris Lattner c91e8c7464 When doing remat, don't consider uses of non-allocatable physregs. Patch
by Evan.

llvm-svn: 74370
2009-06-27 04:06:41 +00:00
Evan Cheng eab9ca7ea6 Renaming for consistency.
llvm-svn: 74368
2009-06-27 02:26:13 +00:00
Chris Lattner a3260c0b1b Fix PR4466 by making fastisel set operand flags correctly.
llvm-svn: 74366
2009-06-27 01:31:51 +00:00
Chris Lattner a4775f2b13 fix a typo that GCC should have caught that causes crashes with -view-*-dags
llvm-svn: 74364
2009-06-27 00:57:02 +00:00
David Goodwin 5d8b6eef5a Remove outdated comment.
llvm-svn: 74357
2009-06-26 23:39:02 +00:00
David Goodwin 5285817490 When possible, use "mvn ra, rb" instead of "eor ra, rb, -1" because mvn has a narrow version and eor(i) does not.
llvm-svn: 74355
2009-06-26 23:13:13 +00:00
Dan Gohman daafbe6168 Incorporate the insertion point into the key of SCEVExpander's CSE map.
This helps it avoid reusing an instruction that doesn't dominate all
of the users, in cases where the original instruction was inserted
before all of the users were known.  This may result in redundant
expansions of sub-expressions that depend on loop-unpredictable values
in some cases, however this isn't very common, and it primarily impacts
IndVarSimplify, so GVN can be expected to clean these up.

This eliminates the need for IndVarSimplify's FixUsesBeforeDefs,
which fixes several bugs.

llvm-svn: 74352
2009-06-26 22:53:46 +00:00
Devang Patel 0f2eb5b9f7 Remove unused routines.
llvm-svn: 74351
2009-06-26 22:53:22 +00:00
David Greene 8f6f72cc99 Add feature flags for AVX and FMA and fix some SSE4A feature flag
initialization problems.

llvm-svn: 74350
2009-06-26 22:46:54 +00:00
Dan Gohman cc030b7e51 Fix ScalarEvolution::getAddRecExpr's code which canonicalized the
nesting order of nested AddRec expressions to skip the transformation
if it would introduce an AddRec with operands not loop-invariant
with respect to its loop.

llvm-svn: 74343
2009-06-26 22:36:20 +00:00
Dan Gohman 06a4e273be Fix SCEVAddRecExpr::isLoopInvariant to test if all of its operands
are loop invariant, not just the start operand.

llvm-svn: 74338
2009-06-26 22:17:21 +00:00
Evan Cheng 07b016856d Add x86 support for 'n' inline asm modifier. This will be handled target independently as part of MC work.
llvm-svn: 74336
2009-06-26 22:00:19 +00:00
Chris Lattner 3ef702e974 simplify printing of MO_ExternalSymbol in a non-pcrel context.
llvm-svn: 74334
2009-06-26 21:47:27 +00:00
Owen Anderson c043d13aeb Privatize some data.
llvm-svn: 74332
2009-06-26 21:45:04 +00:00
Owen Anderson 01ad6605c0 Constify this value.
llvm-svn: 74330
2009-06-26 21:39:56 +00:00
Anton Korobeynikov 99152f3a2c Split thumb-related stuff into separate classes.
Step 1: ARMInstructionInfo => {ARM,Thumb}InstructionInfo

llvm-svn: 74329
2009-06-26 21:28:53 +00:00
Chris Lattner 40bc649ce9 add %rip to the GR64 register class. Lets avoid allocating it to anything though! :)
llvm-svn: 74328
2009-06-26 21:25:00 +00:00
Chris Lattner 49ed726e46 Move all the TLS processing logic into isel, don't do it in asmprinter at all.
llvm-svn: 74327
2009-06-26 21:20:29 +00:00
Chris Lattner 899abc4655 make sure to propagate operand flags in SelectTLSADDRAddr properly.
llvm-svn: 74326
2009-06-26 21:18:37 +00:00
Chris Lattner bc60c14c97 fix a really subtle bug in the cross section of aliases and TLS:
the SelectionDAG::getGlobalAddress function properly looks through
aliases to determine thread-localness, but then passes the GV* down
to GlobalAddressSDNode::GlobalAddressSDNode which does not.  Instead
of passing down isTarget, just pass down the predetermined node
opcode.  This fixes some assertions with out of tree changes I'm 
working on.

llvm-svn: 74325
2009-06-26 21:14:05 +00:00
David Goodwin aa294c5593 Thumb-2 has CLZ.
llvm-svn: 74322
2009-06-26 20:47:43 +00:00
David Goodwin 35ee722d42 Use "adcs/sbcs" only when the carry-out is live, otherwise use "adc/sbc".
llvm-svn: 74321
2009-06-26 20:45:56 +00:00
Owen Anderson 4c472e1cfa Get rid of these cache variables, which are a holdover from the days when
we had multiple type planes and these lookups were expensive.

llvm-svn: 74319
2009-06-26 20:33:47 +00:00
Owen Anderson f92b432385 Make this const.
llvm-svn: 74317
2009-06-26 20:21:18 +00:00
Chris Lattner 76b3c06793 minor cleanup/framework changes.
llvm-svn: 74316
2009-06-26 20:00:05 +00:00
Owen Anderson 304d85be8c Privatize some variables.
llvm-svn: 74315
2009-06-26 19:48:37 +00:00
Chris Lattner 2ed6a9d7bd move magic for PIC constantpool references from asmprinter to isel.
llvm-svn: 74313
2009-06-26 19:22:52 +00:00
Chris Lattner 7f82a19fbf implement DOTGraphTraits<SelectionDAG*>::getNodeLabel in terms of
SDNode::print_details to eliminate a ton of near-duplicate code.

llvm-svn: 74311
2009-06-26 19:06:10 +00:00
Chris Lattner 08d734448e use jump table operand flags in asm printer instead of "magic predicates"
llvm-svn: 74310
2009-06-26 18:55:01 +00:00
Owen Anderson 4a03279231 Use atomic operations for accessing this global counter.
llvm-svn: 74294
2009-06-26 18:09:03 +00:00
David Goodwin 5960e6d974 ADC used to implement adde should use "adcs" opcode instead of "adc".
llvm-svn: 74293
2009-06-26 18:07:25 +00:00
Owen Anderson 455df54003 Get rid of unnecessary global variables.
llvm-svn: 74291
2009-06-26 16:46:15 +00:00
David Goodwin 0377f737ff Currently there is a pattern for the thumb-2 MOV 16-bit immediate instruction. That instruction cannot write the flags so it should use T2I instead of T2sI.
Also, added a pattern for the thumb-2 MOV of shifted immediate since that can encode immediates not encodable by the 16-bit immediate.

llvm-svn: 74288
2009-06-26 16:10:07 +00:00
Douglas Gregor 6d94e6a5f3 Fix linking of llvm-ld and lli with CMake, from Xerxes Rånby
llvm-svn: 74285
2009-06-26 15:37:00 +00:00
Owen Anderson 331c8ab96f Fix compilation without pthreads.
Patch by Xerxes Ranby.

llvm-svn: 74283
2009-06-26 08:48:03 +00:00
Evan Cheng 1eda63715f Simplify predicate CarryDefIsUsed.
llvm-svn: 74277
2009-06-26 06:10:18 +00:00
Chris Lattner 1d3b65a6ae fix a pasto.
llvm-svn: 74275
2009-06-26 05:56:49 +00:00
Chris Lattner 68bb4e0e01 dot graph viewing is apparently not using SDNode::print_details, this is bad,
but in the meantime lets print targetflags on node labels.

llvm-svn: 74274
2009-06-26 05:55:43 +00:00
Chris Lattner 17dcba9da4 propagate target operand flags from dag nodes into MachineOperands.
llvm-svn: 74273
2009-06-26 05:52:14 +00:00
Chris Lattner bd7e26db16 propagate target operand flags through addressing mode selection.
llvm-svn: 74272
2009-06-26 05:51:45 +00:00
Chris Lattner 54b8ebced6 fit in 80 cols
llvm-svn: 74270
2009-06-26 05:39:02 +00:00
Nick Lewycky 2dbc6476cb Escape the name of the module since it comes from the file name and may include
invalid characters like backslashes on Windows. Patch by James Abbatiello!

llvm-svn: 74265
2009-06-26 04:33:37 +00:00
Devang Patel 2cc6d183b2 Let's ignore MDStrings also!
llvm-svn: 74255
2009-06-26 02:26:12 +00:00
Daniel Dunbar e7d42501c2 Fix may-be-used-uninitialized warning.
llvm-svn: 74253
2009-06-26 02:03:52 +00:00
Devang Patel 0751a28888 Remove debug info anchors - llvm.dbg.compile_units, llvm.dbg.subprograms
and llvm.dbg.global_variables.

llvm-svn: 74251
2009-06-26 01:49:18 +00:00
Daniel Dunbar aa311ca000 Fix unused variable warnings.
llvm-svn: 74250
2009-06-26 01:34:35 +00:00
Owen Anderson 276fc52b72 Fix error in the Win32 implementation pointed out by Howard Su.
llvm-svn: 74248
2009-06-26 00:51:20 +00:00
Chris Lattner 2aaad91bbe start adding logic in isel to determine asm printer semantics, step N of M.
llvm-svn: 74246
2009-06-26 00:43:52 +00:00
Dan Gohman ac3b5382b8 Change this code to a form about which VC++ reportedly isn't unhappy.
llvm-svn: 74243
2009-06-26 00:35:12 +00:00
Dan Gohman 7eaf50ecac Fix LCSSA to avoid emitting a PHI node for the unwind destination of
an invoke instruction, since the value isn't really live across that
edge.

llvm-svn: 74242
2009-06-26 00:31:13 +00:00
Evan Cheng e2c4d35f3e Add a note about commuting conditional move.
llvm-svn: 74241
2009-06-26 00:28:48 +00:00
Dan Gohman 31167c61d5 Minor code simplification.
llvm-svn: 74240
2009-06-26 00:26:03 +00:00
Evan Cheng cf661fc12a These are done / no longer applicable.
llvm-svn: 74239
2009-06-26 00:25:27 +00:00
Evan Cheng 5bf9011c2d Mark a bunch of instructions commutable.
llvm-svn: 74237
2009-06-26 00:19:44 +00:00
Evan Cheng 9643ba8123 tst is also commutable.
llvm-svn: 74236
2009-06-26 00:19:07 +00:00
Owen Anderson b99db00b64 Committed the wrong version in my last commit.
llvm-svn: 74235
2009-06-26 00:17:05 +00:00
Owen Anderson 1efcb40c0f Privatize a static variable.
llvm-svn: 74234
2009-06-26 00:15:27 +00:00
Owen Anderson b74e84793d Guards for the compiler driver plugin list.
llvm-svn: 74230
2009-06-26 00:06:28 +00:00
Evan Cheng 97727a61f9 Select ADC, SBC, and RSC instead of the ADCS, SBCS, and RSCS when the carry bit def is not used.
llvm-svn: 74228
2009-06-25 23:34:10 +00:00
Owen Anderson 76cfd205ff Support thread-local pretty stack traces.
llvm-svn: 74227
2009-06-25 23:31:33 +00:00
Owen Anderson eba6e65291 Add support for const thread locals.
llvm-svn: 74226
2009-06-25 23:31:18 +00:00
Owen Anderson eb51111851 Fix typo in assertion.
llvm-svn: 74225
2009-06-25 23:28:28 +00:00
David Goodwin 16f357cccf Use MVN for ~t2_so_imm immediates.
llvm-svn: 74223
2009-06-25 23:11:21 +00:00
Owen Anderson 1154983b9c Add a configure test for pthread_getspecific, and use it when building ThreadLocal.
llvm-svn: 74222
2009-06-25 23:10:26 +00:00
David Goodwin e85169cd1b Add Def/Use of CPSR for Thumb-1 instructions.
llvm-svn: 74219
2009-06-25 22:49:55 +00:00
Devang Patel 0c044ecdb0 Simplify.
llvm-svn: 74215
2009-06-25 22:36:02 +00:00
Evan Cheng 7e687191fd Unbreak mingw build. Patch by Viktor Kutuzov.
llvm-svn: 74212
2009-06-25 22:04:44 +00:00
Owen Anderson bc17dc6ed4 Update cmake build files.
llvm-svn: 74210
2009-06-25 21:58:34 +00:00
Owen Anderson f17f6f06fa Add a class for supporting platform independent thread-local storage.
Windows people, please double-check/patch this.

llvm-svn: 74209
2009-06-25 21:58:01 +00:00
Chris Lattner b3586b6e73 add targetflags to jump tables and constant pool entries.
llvm-svn: 74204
2009-06-25 21:35:31 +00:00
Chris Lattner 8e34f98d72 allow setting target operand flags on TargetGlobalAddress nodes.
llvm-svn: 74203
2009-06-25 21:21:14 +00:00
Daniel Dunbar 188e87fa21 MC: Truncate values when printing, to keep 'as' happy.
llvm-svn: 74201
2009-06-25 21:03:18 +00:00
Evan Cheng c7ea8df67e ISD::ADDE / ISD::SUBE updates the carry bit so they should isle to ADCS and SBCS / RSCS.
llvm-svn: 74200
2009-06-25 20:59:23 +00:00
Chris Lattner af5dbfc6f8 start bringing targetoperand flags into isel, first up, ExternalSymbol.
llvm-svn: 74199
2009-06-25 18:45:50 +00:00
Mikhail Glushenkov 674207eed2 Make -save-temps behave like in GCC 4.5.
The -save-temps option now behaves like described in GCC 4.5 release notes
(you can specify output directory for temporary files with -save-temps=obj
-o $DIRNAME). I do not have GCC 4.5 installed, so if there are any
inconsistencies between llvmc and GCC in the implementation of this
feature, please let me know.

llvm-svn: 74190
2009-06-25 18:20:10 +00:00
Owen Anderson 3f76e6f835 Privatize this map.
llvm-svn: 74189
2009-06-25 18:13:04 +00:00
Owen Anderson 021c3b0756 Guard dynamic library loading.
I did my best at implementing this for Win32, but I don't have a way to test it.
Can someone with access to a Win32 machine test/fix this?

llvm-svn: 74188
2009-06-25 18:12:44 +00:00
Sanjiv Gupta 78bd40ee89 Added floating point conditional operations support via libcalls.
llvm-svn: 74187
2009-06-25 18:12:06 +00:00
Chris Lattner 83992b19e4 simplify shouldPrintPLT
llvm-svn: 74186
2009-06-25 17:58:52 +00:00
David Goodwin e892e8bfaf Test commit
llvm-svn: 74185
2009-06-25 17:52:32 +00:00
Chris Lattner 852739b46f Use target-specific machine operand flags to eliminate a gross hack
from the asmprinter.

llvm-svn: 74184
2009-06-25 17:38:33 +00:00
Chris Lattner 1927844ebf just eliminate the code entirely!
llvm-svn: 74183
2009-06-25 17:28:07 +00:00
Owen Anderson 5defd5655e Provide guards for this shared structure. I'm not sure this actually needs
to be shared, but how/where to privatize it is not immediately clear to me.

If any SelectionDAG experts see a better solution, please share!

llvm-svn: 74180
2009-06-25 17:09:00 +00:00
Owen Anderson e384952e47 Privatize some more debug-related static data.
llvm-svn: 74179
2009-06-25 16:55:32 +00:00
Owen Anderson 52d70e2d05 Use a more correct atomic increment style. This isn't really necessary in
this case, but it should help avoid issues in the future.

llvm-svn: 74178
2009-06-25 16:32:45 +00:00
Bob Wilson 8f74c88cb6 Revert 74164. We'll want to use this method later.
llvm-svn: 74176
2009-06-25 16:03:07 +00:00
Sanjiv Gupta 1a20d2ab98 Identify unconditional gotos and generate a page sel instructions before them.
llvm-svn: 74172
2009-06-25 11:03:14 +00:00
Bruno Cardoso Lopes e364a233c0 Support Constant Pool Sections
Add section symbols to the symbol table

llvm-svn: 74170
2009-06-25 07:36:24 +00:00
Bob Wilson 350abb9799 Remove unused hasV6T2Ops method. We already have a separate feature to
identify Thumb2.

llvm-svn: 74164
2009-06-25 05:20:31 +00:00
Douglas Gregor 2042c3519d Add missing dependencies to the CMake build system.
llvm-svn: 74161
2009-06-25 05:03:06 +00:00
Chris Lattner a0117b65a2 add file to cmake
llvm-svn: 74159
2009-06-25 04:29:08 +00:00
Evan Cheng d76f0be844 Change thumb2 instruction definitions so if-converter so add predicate operands and / or flip the 's' bit to set the condition flag.
llvm-svn: 74158
2009-06-25 02:08:06 +00:00
Jeffrey Yasskin 0b08f3d7cc Add a JITEventListener interface that gets called back when a new function is
emitted or the machine code for a function is freed.  Chris mentioned that we
may also want a notification when a stub is emitted, but that'll be a future
change.  I intend to use this to tell oprofile where functions are emitted and
what lines correspond to what addresses.

llvm-svn: 74157
2009-06-25 02:04:04 +00:00
Evan Cheng 6ea7ad0351 Add thumb2 add sp.
llvm-svn: 74156
2009-06-25 01:21:30 +00:00
Chris Lattner ea7422e7bf fix comments to be correct.
llvm-svn: 74154
2009-06-25 01:15:47 +00:00
Evan Cheng b566ab7b97 Some reorg and additional comments.
llvm-svn: 74152
2009-06-25 01:05:06 +00:00
Devang Patel 9d68302e48 No need to code gen MDNodes
llvm-svn: 74150
2009-06-25 00:47:42 +00:00
Bill Wendling 7f7eb8ac13 My guess is that RegInfo should only call the Allocator.Deallocator if it's not
null.

llvm-svn: 74147
2009-06-25 00:32:48 +00:00
Dan Gohman 091e440568 Reword a few comments.
llvm-svn: 74146
2009-06-25 00:22:44 +00:00
Owen Anderson b5042f20e7 Now with EVEN FEWER statics!
llvm-svn: 74143
2009-06-25 00:04:15 +00:00
Evan Cheng 83f979a48b Add Thumb2 pc relative add.
llvm-svn: 74141
2009-06-24 23:47:58 +00:00
Owen Anderson 816e2833c4 Fewer static variables, part 3 of many.
llvm-svn: 74140
2009-06-24 23:41:44 +00:00
Evan Cheng 4c048fe5ad 80 col violation.
llvm-svn: 74138
2009-06-24 23:14:45 +00:00
Owen Anderson 19c4b66830 Down with _even more_ statics!
llvm-svn: 74137
2009-06-24 23:13:56 +00:00
Owen Anderson 9becc183e1 Down with statics!
llvm-svn: 74134
2009-06-24 22:53:20 +00:00
Devang Patel 4c563168d5 Add constructor to create MDString using std::string
llvm-svn: 74133
2009-06-24 22:42:39 +00:00
Owen Anderson ae471cf3a9 Move local statics to per-instance variables.
llvm-svn: 74132
2009-06-24 22:28:12 +00:00
Owen Anderson 8e62b5f339 Make this thread-safe.
llvm-svn: 74129
2009-06-24 22:16:52 +00:00
Owen Anderson 4830e08613 Get rid of a static boolean.
llvm-svn: 74125
2009-06-24 22:08:59 +00:00
Andreas Bolka 8c7e299270 Scaffolding for LDA pass.
llvm-svn: 74120
2009-06-24 21:29:13 +00:00
Bob Wilson a1d3e660ae Fix the Ocaml bindings for the ExecutionEngine: with the change to build
libraries instead of relinked objects, the interpreter, JIT, and native
target libraries were not being linked in to an ocaml program using the
ExecutionEngine.

llvm-svn: 74117
2009-06-24 21:09:18 +00:00
Lang Hames 6858b7d06a Completed basic intra block split implementation.
llvm-svn: 74114
2009-06-24 20:46:24 +00:00
Chris Lattner 6544289af3 move some functions, add a FIXME, use PrintPICBaseSymbol to print the
picbase instead of inlining it.

llvm-svn: 74111
2009-06-24 19:44:36 +00:00
David Greene 30048bdb63 This increases the maximum for MVT::LAST_VALUETYPE
This change doubles the allowable value for MVT::LAST_VALUETYPE. It does
this by doing several things.

1. Introduces MVT::MAX_ALLOWED_LAST_VALUETYPE which in this change has a
value of 64.  This value contains the current maximum for the
MVT::LAST_VALUETYPE.

2. Instead of checking "MVT::LAST_VALUETYPE <= 32", all of those uses
now become "MVT::LAST_VALUETYPE <= MVT::MAX_ALLOWED_LAST_VALUETYPE"

3. Changes the dimension of the ValueTypeActions from 2 elements to four
elements and adds comments ahead of the declaration indicating the it is
"(MVT::MAX_ALLOWED_LAST_VALUETYPE/32) * 2".  This at least lets us find
what is affected if and when MVT::MAX_ALLOWED_LAST_VALUETYPE gets
changed.

4. Adds initializers for the new elements of ValueTypeActions.

This does NOT add any types in MVT. That would be done separately.

This doubles the size of ValueTypeActions from 64 bits to 128 bits and
gives us the freedom to add more types for AVX.

llvm-svn: 74110
2009-06-24 19:41:55 +00:00
Daniel Dunbar 71ea89dd86 Sketch streamer support for .align, .org functionality.
llvm-svn: 74109
2009-06-24 19:25:34 +00:00
Chris Lattner 9b4aaef9d4 reimplement getPICLabelString as PrintPICBaseSymbol to eliminate std::string heap thrashing.
llvm-svn: 74105
2009-06-24 19:19:16 +00:00
Chris Lattner 1fd5888294 sink management of DwarfWriter & MachineModuleInfo into the AsmPrinter base class.
llvm-svn: 74101
2009-06-24 19:09:55 +00:00
Chris Lattner 70413126b6 sink dwarf finalization out of each target into AsmPrinter::doFinalization
llvm-svn: 74097
2009-06-24 18:54:37 +00:00
Chris Lattner 2981dc1742 eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.

llvm-svn: 74096
2009-06-24 18:52:01 +00:00
Chris Lattner a297e0c9b1 only emit one .align for all the hidden gv stubs instead of one for each.
llvm-svn: 74094
2009-06-24 18:24:42 +00:00
Chris Lattner f094f09b76 inline print*Stub and rearrange function stub printing to more closely match
gv and hiddengv stub printing.

llvm-svn: 74093
2009-06-24 18:24:09 +00:00
Chris Lattner 13fb0bef1c remove dead code now that personality functions don't print stubs directly.
llvm-svn: 74092
2009-06-24 18:19:01 +00:00
Chris Lattner e8ad3f13fa remove now-dead argument.
llvm-svn: 74091
2009-06-24 18:17:56 +00:00
Chris Lattner cc5104dcc4 simplify personality function stub printing to use the mangler and
decorateName like other stuff instead of special casing _.  Also, stick
it into GVStubs and let the normal stub printer print the stub instead 
of doing it manually.

llvm-svn: 74090
2009-06-24 18:17:00 +00:00
Chris Lattner 63aab8a84c remove dead argument
llvm-svn: 74089
2009-06-24 18:00:11 +00:00
Chris Lattner fd682802e3 Rearrange some stuff in MachineOperand and add a new TargetFlags field.
llvm-svn: 74087
2009-06-24 17:54:48 +00:00
Owen Anderson b70adf2b92 Get rid of the global CFGOnly flag by threading a ShortNames parameters through the GraphViz rendering code.
Update other uses in the codebase for this change.

llvm-svn: 74084
2009-06-24 17:37:09 +00:00
Dale Johannesen 92c11e90c8 Rewrite 73900 per Duncan's suggestion.
llvm-svn: 74082
2009-06-24 17:11:31 +00:00
Daniel Dunbar f782ebc0cb We decided to not worry about Atoms for now, it should be straightforward to
reintroduce them later.

Also, don't require MCSection* when creating a symbol.

llvm-svn: 74081
2009-06-24 17:00:42 +00:00
Daniel Dunbar 59ff06e83c MCStreamer: Add a few more "symbol attributes".
llvm-svn: 74077
2009-06-24 16:36:52 +00:00
Daniel Dunbar de5777022c MCStreamer: Test printing values.
llvm-svn: 74076
2009-06-24 16:05:35 +00:00
Dan Gohman abd1709678 Minor whitespace cleanups.
llvm-svn: 74074
2009-06-24 14:49:00 +00:00
Dan Gohman f57bdb75d4 Simplify [su]max(MAX, n) to MAX. This comes up in loop tripcount
computations in loops with multiple exits.

Adjust the testcase for PR4436 so that the relevant portion isn't
optimized away.

llvm-svn: 74073
2009-06-24 14:46:22 +00:00
Dan Gohman 929fa7b0f4 When inserting code into a loop preheader, insert it before the
terminator, instead of after the last phi. This fixes a bug
exposed by ScalarEvolution analyzing more kinds of loops.
This fixes PR4436.

llvm-svn: 74072
2009-06-24 14:31:06 +00:00
Duncan Sands cfe7626413 Add new files to cmake list.
llvm-svn: 74071
2009-06-24 10:03:44 +00:00
Chris Lattner 9db5fbac05 factor some code better.
llvm-svn: 74067
2009-06-24 05:47:59 +00:00