Commit Graph

36024 Commits

Author SHA1 Message Date
Daniel Dunbar 255a8c8b13 MC/Mach-O: Set SOME_INSTRUCTIONS bit for sections.
llvm-svn: 95135
2010-02-02 21:44:01 +00:00
Chris Lattner c83cfb9dfa remove dead code.
llvm-svn: 95134
2010-02-02 21:38:59 +00:00
Chris Lattner 4578098b97 detemplatize alpha code emission, it is now JIT specific.
llvm-svn: 95133
2010-02-02 21:35:47 +00:00
Chris Lattner 0cd6c2a047 eliminate all the dead addSimpleCodeEmitter implementations.
eliminate random "code emitter" stuff in Alpha, except for
the JIT path.  Next up, remove the template cruft.

llvm-svn: 95131
2010-02-02 21:31:47 +00:00
Evan Cheng c1b0116ff1 Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.
llvm-svn: 95130
2010-02-02 21:29:10 +00:00
Chris Lattner f0cb12acf2 eliminate FileModel::Model, just use CodeGenFileType. The client
of the code generator shouldn't care what object format a target
uses.

llvm-svn: 95124
2010-02-02 21:06:45 +00:00
Chris Lattner 29e0702dc8 remove the remnants of TargetMachOWriterInfo.
llvm-svn: 95114
2010-02-02 19:41:23 +00:00
Chris Lattner 809ae81ff9 Add a new top-level MachO.h file for manifest constants, fixing
a layering violation from MC -> Target.

llvm-svn: 95113
2010-02-02 19:38:14 +00:00
Johnny Chen 8487d65ea2 Added t2BFI (Bitfield Insert) entry for disassembler, with blank pattern field.
llvm-svn: 95112
2010-02-02 19:31:58 +00:00
Chris Lattner d1e821f7eb remove PPCMachOWriterInfo.
llvm-svn: 95111
2010-02-02 19:23:55 +00:00
Chris Lattner 03dc0f7077 eliminate all forms of addPassesToEmitMachineCode except
the one used by the JIT.  Remove all forms of
addPassesToEmitFileFinish except the one used by the static
code generator.  Inline the remaining version of
addPassesToEmitFileFinish into its only caller.

llvm-svn: 95109
2010-02-02 19:14:27 +00:00
Dale Johannesen da431c76fb Test revert 95050; there's a good chance it's causing
buildbot failure.

llvm-svn: 95103
2010-02-02 18:52:56 +00:00
Chris Lattner 2fdf5b535e Inline addAssemblyEmitter into its one real caller and delete
the -print-emitted-asm option.  The JIT shouldn't have to pull
in the asmprinter.

llvm-svn: 95100
2010-02-02 18:44:12 +00:00
Duncan Sands fa5f5965de Adding missing methods for creating Add, Mul, Neg and Sub with NUW.
llvm-svn: 95086
2010-02-02 12:53:04 +00:00
Devang Patel 057c642486 Apparently gdb is not amused by empty lines in pubtypes section.
llvm-svn: 95064
2010-02-02 03:47:27 +00:00
Devang Patel 6d404adc1b NULL terminate name in pubtypes sections.
llvm-svn: 95062
2010-02-02 03:37:03 +00:00
Chris Lattner 8e2c471614 don't turn (A & (C0?-1:0)) | (B & ~(C0?-1:0)) -> C0 ? A : B
for vectors.  Codegen is generating awful code or segfaulting
in various cases (e.g. PR6204).

llvm-svn: 95058
2010-02-02 02:43:51 +00:00
Chris Lattner 302240d73e fix a crash in loop unswitch on a loop invariant vector condition.
llvm-svn: 95055
2010-02-02 02:26:54 +00:00
Evan Cheng 55afd2564c Perform sibcall in some cases when arguments are passes memory. Look for cases
where callee's arguments are already in the caller's own caller's stack and
they line up perfectly. e.g.

extern int foo(int a, int b, int c);

int bar(int a, int b, int c) {
  return foo(a, b, c);
}

llvm-svn: 95053
2010-02-02 02:22:50 +00:00
Dale Johannesen c84816a62e Make local RA smarter about reusing input register of a copy
as output.  Needed for (functional) correctness in inline asm,
and should be generally beneficial.  7361612.

llvm-svn: 95050
2010-02-02 02:08:02 +00:00
Dan Gohman 949458d014 LangRef.html says that inttoptr and ptrtoint always use zero-extension
when the cast is extending.

llvm-svn: 95046
2010-02-02 01:44:02 +00:00
Dan Gohman f644af8bbe Factor out alignof expression folding into a separate function and
generalize it to handle more cases.

llvm-svn: 95045
2010-02-02 01:41:39 +00:00
Dan Gohman 7e5f1b2773 Various code simplifications.
llvm-svn: 95044
2010-02-02 01:38:49 +00:00
Daniel Dunbar 13ad81bd70 Update CMake.
llvm-svn: 95041
2010-02-02 01:12:20 +00:00
Eric Christopher 14dfc3f6df Don't need to check the last argument since it'll always be bool. We also
don't use TargetData here.

llvm-svn: 95040
2010-02-02 00:51:45 +00:00
Eric Christopher 9afa973203 More indentation/tabification fixes.
llvm-svn: 95036
2010-02-02 00:13:06 +00:00
Eric Christopher 1408234753 Untabify previous commit.
llvm-svn: 95035
2010-02-02 00:06:55 +00:00
Nate Begeman 0b810279c8 Kill the Mach-O writer, and temporarily make filetype=obj an error.
The MCStreamer based assemblers will take over for this functionality.

llvm-svn: 95033
2010-02-01 23:56:58 +00:00
Eric Christopher 56e4182c49 Formatting.
llvm-svn: 95027
2010-02-01 23:25:03 +00:00
Johnny Chen 5b66b31774 MOVi16 should also be marked as a UnaryDP instruction, i.e., it doesn't have a
Rn operand.

llvm-svn: 95025
2010-02-01 23:06:04 +00:00
Bill Wendling c5829c4a50 Add "dump" method to IVUsersOneStride.
llvm-svn: 95022
2010-02-01 22:51:23 +00:00
Evan Cheng a49d8e6d38 Fix PR6196. GV callee may not be a function.
llvm-svn: 95017
2010-02-01 22:40:09 +00:00
Mon P Wang d74e0023c5 Improve EXTRACT_VECTOR_ELT patch based on comments from Duncan
llvm-svn: 95012
2010-02-01 22:15:09 +00:00
Bob Wilson d517b52012 Add an option to GVN to remove all partially redundant loads. This is currently
disabled by default.  This divides the existing load PRE code into 2 phases:
first it checks that it is safe to move the load to each of the predecessors
where it is unavailable, and then if it is safe, the code is changed to move
the load.  Radar 7571861.

llvm-svn: 95007
2010-02-01 21:17:14 +00:00
Chris Lattner f5edeebd8c eliminate a bunch of pointless LLVMContext arguments.
llvm-svn: 95001
2010-02-01 20:48:08 +00:00
Duncan Sands dddba06e9e Fix typo "of" -> "or" and change the way a line was formatted to fit
into 80 columns to match my artistic preferences.

llvm-svn: 95000
2010-02-01 20:42:02 +00:00
Chris Lattner 94eb4b285b fix PR6195, a bug constant folding scalar -> vector compares.
llvm-svn: 94997
2010-02-01 20:04:40 +00:00
Dale Johannesen 0b30cfc57e fix PR 6157. Testcase pending.
llvm-svn: 94996
2010-02-01 19:54:53 +00:00
Chris Lattner 9306ffa05a cleanups.
llvm-svn: 94995
2010-02-01 19:54:45 +00:00
Chris Lattner 3c46e14137 fix PR6197 - infinite recursion in ipsccp due to block addresses
evaluateICmpRelation wasn't handling blockaddress.

llvm-svn: 94993
2010-02-01 19:35:08 +00:00
Mon P Wang 72c60c73af Fixed a couple of optimization with EXTRACT_VECTOR_ELT that assumes the result
type is the same as the element type of the vector.  EXTRACT_VECTOR_ELT can
be used to extended the width of an integer type.  This fixes a bug for
Generic/vector-casts.ll on a ppc750.

llvm-svn: 94990
2010-02-01 19:03:18 +00:00
Dan Gohman e5e1b7b05a Generalize target-independent folding rules for sizeof to handle more
cases, and implement target-independent folding rules for alignof and
offsetof. Also, reassociate reassociative operators when it leads to
more folding.

Generalize ScalarEvolution's isOffsetOf to recognize offsetof on
arrays. Rename getAllocSizeExpr to getSizeOfExpr, and getFieldOffsetExpr
to getOffsetOfExpr, for consistency with analagous ConstantExpr routines.

Make the target-dependent folder promote GEP array indices to
pointer-sized integers, to make implicit casting explicit and exposed
to subsequent folding.

And add a bunch of testcases for this new functionality, and a bunch
of related existing functionality.

llvm-svn: 94987
2010-02-01 18:27:38 +00:00
Chris Lattner 846a52e228 fix rdar://7590304, a miscompilation of objc apps on arm. The caller
of objc message send was getting marked arm_apcscc, but the prototype
isn't.  This is fine at runtime because objcmsgsend is implemented in
assembly.  Only turn a mismatched caller and callee into 'unreachable'
if the callee is a definition.

llvm-svn: 94986
2010-02-01 18:11:34 +00:00
Chris Lattner 2cecedf081 fix rdar://7590304, an infinite loop in instcombine. In the invoke
case, instcombine can't zap the invoke for fear of changing the CFG.
However, we have to do something to prevent the next iteration of
instcombine from inserting another store -> undef before the invoke
thereby getting into infinite iteration between dead store elim and
store insertion.

Just zap the callee to null, which will prevent the next iteration
from doing anything.

llvm-svn: 94985
2010-02-01 18:04:58 +00:00
Bob Wilson f65ba356e1 Fix pr6198 by moving the isSized() check to an outer conditional.
The testcase from pr6198 does not crash for me -- I don't know what's up with
that -- so I'm not adding it to the tests.

llvm-svn: 94984
2010-02-01 17:41:44 +00:00
Dan Gohman de047f2051 Add a getNUWMul function.
llvm-svn: 94982
2010-02-01 16:38:14 +00:00
Dan Gohman ede94e6850 Add a generalized form of ConstantExpr::getOffsetOf which works for
array types as well as struct types, and which accepts arbitrary
Constant indicies.  

llvm-svn: 94981
2010-02-01 16:37:38 +00:00
Bruno Cardoso Lopes aa8c429a53 MulOp is actually a Mips specific node, so do the match using Opcode. This fixes PR6192
llvm-svn: 94977
2010-02-01 12:16:39 +00:00
Evan Cheng ed8ca56eeb Undo r94946 now all the tests are passing again.
llvm-svn: 94970
2010-02-01 02:13:39 +00:00
Bruno Cardoso Lopes 1cb8b33d61 Fix stack size bug while using o32 abi
llvm-svn: 94969
2010-02-01 02:03:24 +00:00
Johnny Chen b3562f7cf6 For MVNr and MVNs, we need to set Inst{25} = 0 so as not to confuse the decoder.
llvm-svn: 94955
2010-01-31 11:22:28 +00:00
Evan Cheng b33dbc5019 Change TAILJMP's to be varargs and transfer implicit uses over from TCRETURN's. Otherwise the missing uses can make post-regalloc scheduling do bad things. This fixes 403.gcc.
llvm-svn: 94950
2010-01-31 07:28:44 +00:00
Evan Cheng 9adc6f46cf Fix a missing check from my last commit.
llvm-svn: 94949
2010-01-31 07:27:31 +00:00
Evan Cheng 7f62def0f9 Avoid recursive sibcall's.
llvm-svn: 94946
2010-01-31 06:44:49 +00:00
Eli Friedman 0de0b3677a Remove a completed item, add a couple new ones.
llvm-svn: 94945
2010-01-31 04:55:32 +00:00
Eli Friedman a2cc2875fc Simplify/generalize the xor+add->sign-extend instcombine.
llvm-svn: 94943
2010-01-31 04:29:12 +00:00
Eli Friedman 37a8197b61 Add a small transform: transform -(X<<Y) to (-X<<Y) when the shift has a single
use and X is free to negate.

llvm-svn: 94941
2010-01-31 02:30:23 +00:00
Sean Callanan 9aeccadce4 Moved InstallLexer() from the X86-specific AsmLexer
to the TargetAsmLexer class so that clients can
actually use the TargetAsmLexer they get from a
Target.

llvm-svn: 94940
2010-01-31 02:28:18 +00:00
Evan Cheng d86d3fe0c3 Do not mark no-return calls tail calls. It'll screw up special calls like longjmp and it doesn't make much sense for performance reason. If my logic is faulty, please let me know.
llvm-svn: 94937
2010-01-31 00:59:31 +00:00
Bruno Cardoso Lopes 193e64c699 Fix PR6144. Reload GP before the emission of CALLSEQ_END to guarantee the right reload order
llvm-svn: 94915
2010-01-30 18:32:07 +00:00
Bruno Cardoso Lopes 7ee71912ed Fix mov.d out register by using the FFR register class directly
llvm-svn: 94914
2010-01-30 18:29:19 +00:00
Anton Korobeynikov 25df248382 Fix a gross typo: ARMv6+ may or may not support unaligned memory operations.
Even if they are suported by the core, they can be disabled
(this is just a configuration bit inside some register).

Allow unaligned memops on darwin and conservatively disallow them otherwise.

llvm-svn: 94889
2010-01-30 14:08:12 +00:00
Bob Wilson 56600a15ad Check alignment of loads when deciding whether it is safe to execute them
unconditionally.  Besides checking the offset, also check that the underlying
object is aligned as much as the load itself.

llvm-svn: 94875
2010-01-30 04:42:39 +00:00
Evan Cheng 70f714fdbe Allow more tailcall optimization: calls with inputs that are all passed in registers.
llvm-svn: 94873
2010-01-30 01:22:00 +00:00
Evan Cheng 2d5a75b42a Don't forget to transfer target flag when inserting a tailcall instruction.
llvm-svn: 94872
2010-01-30 01:16:15 +00:00
Devang Patel 160c92dd19 Emit declaration DIE for the class static variables.
llvm-svn: 94870
2010-01-30 01:08:30 +00:00
Daniel Dunbar 76e5d70c57 MC/X86 AsmParser: Handle absolute memory operands correctly. We were doing
something totally broken and parsing them as immediates, but the .td file also
had the wrong match class so things sortof worked. Except, that is, that we
would parse
  movl $0, %eax
as
  movl 0, %eax
Feel free to guess how well that worked.

llvm-svn: 94869
2010-01-30 01:02:48 +00:00
Dale Johannesen e057403835 Fix a case where debug_value could affect codegen.
llvm-svn: 94866
2010-01-30 00:57:47 +00:00
Bob Wilson 4b71b6c179 Use more specific types to avoid casts. No functionality change.
llvm-svn: 94863
2010-01-30 00:41:10 +00:00
Daniel Dunbar f05d00787a X86.td: Refactor to bring operands that use print_pcrel_imm together.
llvm-svn: 94861
2010-01-30 00:24:12 +00:00
Daniel Dunbar a97adee959 AsmMatcher/X86: Separate out sublass for memory operands that have no segment
register, and use to cleanup a FIXME in X86AsmParser.cpp.

llvm-svn: 94859
2010-01-30 00:24:00 +00:00
Jakob Stoklund Olesen e27dc727e2 Keep iterating over all uses when meeting a phi node in AllUsesOfValueWillTrapIfNull().
This bug was exposed by my inliner cost changes in r94615, and caused failures
of lencod on most architectures when building with LTO.

This patch fixes lencod and 464.h264ref on x86-64 (and likely others).

llvm-svn: 94858
2010-01-29 23:54:14 +00:00
Johnny Chen 34a6afc68d Modified encoding bits specification for VFP instructions. In particular, the D
bit (Inst{22}) and the M bit (Inst{5}) should be left unspecified.  For binary
format instructions, Inst{6} and Inst{4} need to specified for proper decodings.

llvm-svn: 94855
2010-01-29 23:21:10 +00:00
Dan Gohman 5ded1424b0 Print a comment next to "materializable" global values, to distinguish
them from values that are not actually defined in the module.

llvm-svn: 94854
2010-01-29 23:12:36 +00:00
Evan Cheng 25217ffaed PPC is not ready for sibcall optimization.
llvm-svn: 94853
2010-01-29 23:05:56 +00:00
Bob Wilson 1b8453067b Preserve load alignment in instcombine transformations. I've been unable to
create a testcase where this matters.  The select+load transformation only
occurs when isSafeToLoadUnconditionally is true, and in those situations,
instcombine also changes the underlying objects to be aligned.  This seems
like a good idea regardless, and I've verified that it doesn't pessimize
the subsequent realignment.

llvm-svn: 94850
2010-01-29 22:39:21 +00:00
Dale Johannesen ad00f03e86 Add assertion to humor the paranoid.
llvm-svn: 94843
2010-01-29 21:21:28 +00:00
Victor Hernandez 6b7f4216b6 We were not writing bitcode for function-local metadata whose operands have been erased (making it not have any more function-local operands)
llvm-svn: 94842
2010-01-29 21:19:19 +00:00
Eric Christopher 5a0e174863 Revert my last couple of patches. They appear to have broken bison.
llvm-svn: 94841
2010-01-29 21:16:24 +00:00
Bob Wilson 34e10c2218 Use uint64_t instead of unsigned for offsets and sizes.
llvm-svn: 94835
2010-01-29 20:34:28 +00:00
Bob Wilson 7c42b9d51e Improve isSafeToLoadUnconditionally to recognize that GEPs with constant
indices are safe if the result is known to be within the bounds of the
underlying object.

llvm-svn: 94829
2010-01-29 19:19:08 +00:00
Devang Patel aedd6f5b33 Add size and location info in DW_TAG_class_type descriptor.
llvm-svn: 94822
2010-01-29 18:34:58 +00:00
Devang Patel 7f8be9ba95 Before inserting llvm.dbg.declare intrinsic at the end of a basic block, check whether the basic block has a terminator or not.
This API is used by clang and the test case is test/CodeGen/debug-info-crash.c in clang module.

llvm-svn: 94820
2010-01-29 18:30:57 +00:00
Benjamin Kramer ef14f80e95 Fix MSVC build.
llvm-svn: 94809
2010-01-29 15:19:06 +00:00
Benjamin Kramer b17c58674e Convert some users of ftostr to raw_ostream.
llvm-svn: 94808
2010-01-29 14:42:22 +00:00
Benjamin Kramer 6bee24ae9a Use llvm::format instead of ftostr (which just calls sprintf).
llvm-svn: 94807
2010-01-29 14:40:33 +00:00
Duncan Sands 3327498095 Change the SREM case to match the logic in the IR version ComputeMaskedBits.
llvm-svn: 94805
2010-01-29 09:45:26 +00:00
Evan Cheng 297a494f55 Catch more trivial tail call opportunities: no inputs and output types match.
llvm-svn: 94804
2010-01-29 06:45:59 +00:00
Duncan Sands c8a3e56870 Having RHSKnownZero and RHSKnownOne be alternative names for KnownZero and KnownOne
(via APInt &RHSKnownZero = KnownZero, etc) seems dangerous and confusing to me: it
is easy not to notice this, and then wonder why KnownZero/RHSKnownZero changed
underneath you when you modified RHSKnownZero/KnownZero etc.  So get rid of this.
No intended functionality change (tested with "make check" + llvm-gcc bootstrap).

llvm-svn: 94802
2010-01-29 06:18:46 +00:00
Duncan Sands 26cd6bd0b0 It looks like the changes to the SRem logic of SimplifyDemandedUseBits
(fix for PR6165) are needed here too.

llvm-svn: 94801
2010-01-29 06:18:37 +00:00
Eric Christopher 9b3c02b7da Make strcpy_chk lower to strcpy if we have a safe size.
llvm-svn: 94783
2010-01-29 01:37:11 +00:00
Eric Christopher 997f7ca8c5 Add constant support to object size handling and remove default
lowering. We'll either figure it out, or not and be lowered by
SelectionDAGBuild.

Add test.

llvm-svn: 94775
2010-01-29 01:09:57 +00:00
Bill Wendling 48816a0b3f Generic reformatting and comment fixing. No functionality change.
llvm-svn: 94771
2010-01-29 00:52:43 +00:00
Bill Wendling 8277838cf8 Add newline to debugging output, and fix some grammar-os in comment.
llvm-svn: 94765
2010-01-29 00:27:39 +00:00
Sean Callanan 82436d1666 Added a custom TableGen backend to support the
enhanced disassembler, and the necessary makefile
rules to build the table for X86.

llvm-svn: 94764
2010-01-29 00:21:04 +00:00
Victor Hernandez 006b53f199 mem2reg erases the dbg.declare intrinsics that it converts to dbg.val intrinsics
llvm-svn: 94763
2010-01-29 00:01:35 +00:00
Bill Wendling 954cb187e0 Assign the ordering of SDNodes in a much less intrusive fashion. After the
"visit*" method is called, take the newly created nodes, walk them in a DFS
fashion, and if they don't have an ordering set, then give it one.

llvm-svn: 94757
2010-01-28 21:51:40 +00:00
Dan Gohman a424b9fbd1 Remove the folding rule
getelementptr (i8* inttoptr (i64 1 to i8*), i32 -1) 
  to
  inttoptr (i64 0 to i8*)
from the VMCore constant folder. It didn't handle sign-extension properly
in the case where the source integer is smaller than a pointer size. And,
it relied on an assumption about sizeof(i8).

The Analysis constant folder still folds these kinds of things; it has
access to TargetData, so it can do them right.

Add a testcase which tests that the VMCore constant folder doesn't
miscompile this, and that the Analysis folder does fold it.

llvm-svn: 94750
2010-01-28 18:08:26 +00:00
Benjamin Kramer 29063eac23 Replace strcpy with memcpy when we have the length around anyway.
llvm-svn: 94746
2010-01-28 18:04:38 +00:00
Duncan Sands 3a48b87c54 Fix PR6165. The bug was that LHSKnownZero was being and'd with DemandedMask
when it should have been and'd with LowBits.  Fix that and while there beef
up the logic in the case of a negative LHS.

llvm-svn: 94745
2010-01-28 17:22:42 +00:00
Douglas Gregor 1051937c21 Add llvm::Program::ChangeStderrToBinary().
llvm-svn: 94743
2010-01-28 06:42:08 +00:00
Dan Gohman 9f4ea22c88 Check Type::isSized before calling ScalarEvolution::getAllocSizeExpr,
rather than after.

llvm-svn: 94742
2010-01-28 06:32:46 +00:00
Chris Lattner cc9a6f0580 convert the last 3 targets to use EmitFunctionBody() now that
it has before/end body hooks.

 lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp |   49 ++-----------
 lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp   |   87 ++++++------------------
 lib/Target/XCore/AsmPrinter/XCoreAsmPrinter.cpp |   56 +++------------
 test/CodeGen/XCore/ashr.ll                      |    2 
 4 files changed, 48 insertions(+), 146 deletions(-)

llvm-svn: 94741
2010-01-28 06:22:43 +00:00
Dan Gohman a9be73929f Make getAlignOf return an i64, for consistency with getSizeOf and
getOffsetOf, and remove the comment about assuming i8 is byte-aligned,
which is no longer applicable.

llvm-svn: 94738
2010-01-28 02:43:22 +00:00
Dan Gohman cf9138307d Remove SCEVAllocSizeExpr and SCEVFieldOffsetExpr, and in their place
use plain SCEVUnknowns with ConstantExpr::getSizeOf and
ConstantExpr::getOffsetOf constants. This eliminates a bunch of
special-case code.

Also add code for pattern-matching these expressions, for clients that
want to recognize them.

Move ScalarEvolution's logic for expanding array and vector sizeof
expressions into an element count times the element size, to expose
the multiplication to subsequent folding, into the regular constant
folder.

llvm-svn: 94737
2010-01-28 02:15:55 +00:00
Chris Lattner c968f4475e add target hooks for emitting random gunk before and after the function body.
llvm-svn: 94732
2010-01-28 01:58:58 +00:00
Evan Cheng 346af88396 Fix a bug introduced by r94490 where it created a X86ISD::CMP whose output type is different from its inputs.
This fixes PR6146.

llvm-svn: 94731
2010-01-28 01:57:22 +00:00
Chris Lattner 125c118cd8 switch blackfin to the default runOnMachineFunction
llvm-svn: 94729
2010-01-28 01:54:33 +00:00
Chris Lattner b662b7c801 eliminate a now-useless class.
llvm-svn: 94728
2010-01-28 01:50:22 +00:00
Chris Lattner fd97a3369e Switch MSP430, SPU, Sparc, and SystemZ to use EmitFunctionBody().
Diffstat:
 6 files changed, 30 insertions(+), 284 deletions(-)

llvm-svn: 94727
2010-01-28 01:48:52 +00:00
Jim Grosbach 54c0530834 Update of 94055 to track the IR level call site information via an intrinsic.
This allows code gen and the exception table writer to cooperate to make sure
landing pads are associated with the correct invoke locations.

llvm-svn: 94726
2010-01-28 01:45:32 +00:00
Chris Lattner 73de5fbfc3 Give AsmPrinter the most common expected implementation of
runOnMachineFunction, and switch PPC to use EmitFunctionBody.
The two ppc asmprinters now don't heave to define 
runOnMachineFunction.

llvm-svn: 94722
2010-01-28 01:28:58 +00:00
Chris Lattner fa1f67ea38 switch ARM to EmitFunctionBody().
llvm-svn: 94719
2010-01-28 01:10:34 +00:00
Chris Lattner 565896b9eb emit a 0 byte instead of a noop if a function is empty on darwin.
"0" is nice and target independent.

llvm-svn: 94718
2010-01-28 01:06:32 +00:00
Chris Lattner 94a946cac4 Remove the argument from EmitJumpTableInfo, because it doesn't need it.
Move the X86 implementation of function body emission up to 
AsmPrinter::EmitFunctionBody, which works by calling the virtual
EmitInstruction method.

llvm-svn: 94716
2010-01-28 01:02:27 +00:00
Chris Lattner 2b796241a7 Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.
Overload it in the ARM backend to do nothing, since is does insane
constant pool emission.

llvm-svn: 94708
2010-01-28 00:19:24 +00:00
Chris Lattner 80108921be don't emit constant pools twice.
llvm-svn: 94706
2010-01-28 00:15:18 +00:00
Chris Lattner cd99546b03 rename printVisibility to EmitVisibility and make it private,
constify EmitLinkage.

llvm-svn: 94705
2010-01-28 00:05:10 +00:00
Chris Lattner 56db8c3008 switch ARM to use EmitFunctionHeader.
llvm-svn: 94703
2010-01-27 23:58:11 +00:00
Chris Lattner feba1e2495 eliminate the ARMFunctionInfo::Align member, using
MachineFunction::Alignment instead.

llvm-svn: 94701
2010-01-27 23:37:36 +00:00
Chris Lattner 1aef3717bd switch blackfin to use EmitFunctionHeader. BlackfinAsmPrinter.cpp
is now less than 200 LOC!

llvm-svn: 94699
2010-01-27 23:26:37 +00:00
Chris Lattner 5d9fb4b746 switch mips to use the shared EmitFunctionHeader() function
llvm-svn: 94698
2010-01-27 23:23:58 +00:00
Dale Johannesen 6eb8e13236 If the only use of something is a DEBUG_VALUE, don't
let that stop it from being deleted, and change the
DEBUG_VALUE value to undef.

llvm-svn: 94694
2010-01-27 22:12:36 +00:00
Dale Johannesen 77b108e17b Treat MO_REG 0 location as undefined in DEBUG_VALUE,
per document.

llvm-svn: 94693
2010-01-27 22:11:16 +00:00
Victor Hernandez 7fb0c1b88e Need to recurse for all operands of function-local metadata; and handle Instructions (which map to themselves)
llvm-svn: 94691
2010-01-27 22:03:03 +00:00
Bob Wilson 7577e948e4 Avoid creating redundant PHIs in SSAUpdater::GetValueInMiddleOfBlock.
This was already being done in SSAUpdater::GetValueAtEndOfBlock so I've
just changed SSAUpdater to check for existing PHIs in both places.

llvm-svn: 94690
2010-01-27 22:01:02 +00:00
Ted Kremenek 8fafa93092 Update CMake build.
llvm-svn: 94687
2010-01-27 20:44:12 +00:00
Jeffrey Yasskin 091217be6f Kill ModuleProvider and ghost linkage by inverting the relationship between
Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
GlobalValues now, and doesn't provide modules, it's renamed to
"GVMaterializer". Code that used to need a ModuleProvider to materialize
Functions can now materialize the Functions directly. Functions no longer use a
magic linkage to record that they're materializable; they simply ask the
GVMaterializer.

Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
the functions that refer to it. Instead, because Module now exposes the same
functionality ModuleProvider used to, we store a Module* in any
LLVMModuleProviderRef and translate in the wrapper methods.  The bindings to
other languages still use the ModuleProvider concept.  It would probably be
worth some time to update them to follow the C++ more closely, but I don't
intend to do it.

Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735.

llvm-svn: 94686
2010-01-27 20:34:15 +00:00
Benjamin Kramer 1266d46d32 Don't bother with sprintf, just pass the Twine through.
llvm-svn: 94684
2010-01-27 19:58:47 +00:00
Benjamin Kramer 40582a891c Use the less expensive getName function instead of getNameStr.
llvm-svn: 94683
2010-01-27 19:46:52 +00:00
Chandler Carruth c07bd40b3e Silence GCC warnings with asserts turned off. No functionality change.
llvm-svn: 94673
2010-01-27 10:27:10 +00:00
Mikhail Glushenkov 76be2d1cca Make SMDiagnostic::Print a const method.
llvm-svn: 94672
2010-01-27 10:13:28 +00:00
Mikhail Glushenkov 84afae33a9 Trailing whitespace.
llvm-svn: 94671
2010-01-27 10:13:11 +00:00
Chris Lattner bc1e6f0873 add a new AsmPrinter::EmitFunctionEntryLabel virtual function,
which allows targets to override function entry label emission.
Use it to convert linux/ppc to use EmitFunctionHeader().

llvm-svn: 94667
2010-01-27 07:21:55 +00:00
Evan Cheng 85476f304c Perform trivial tail call optimization for callees with "C" ABI. These are done
even when -tailcallopt is not specified and it does not require changing ABI.
First case is the most trivial one. Perform tail call optimization when both
the caller and callee do not return values and when the callee does not take
any input arguments.

llvm-svn: 94664
2010-01-27 06:25:16 +00:00
Chris Lattner 318b489d5b merge two ifs
llvm-svn: 94650
2010-01-27 02:18:21 +00:00
Chris Lattner 65f4733b77 some cleanups.
llvm-svn: 94649
2010-01-27 02:12:20 +00:00
Chris Lattner 711e701f1c no need to check for null
llvm-svn: 94648
2010-01-27 02:04:20 +00:00
Chris Lattner 57f064722a ppc/linux isn't ready for this and it was an accident that it was included.
This should fix a bunch of linux buildbot failures.

llvm-svn: 94643
2010-01-27 01:02:43 +00:00
Victor Hernandez 477d9274bb When converting dbg.declare to dbg.value, attach promoted store's debug metadata to dbg.value
llvm-svn: 94634
2010-01-27 00:44:36 +00:00
Victor Hernandez 38e810d870 Linker needs to do deep-copy of function-local metadata to update references to function arguments
llvm-svn: 94632
2010-01-27 00:30:42 +00:00
Chris Lattner 2ab11001cc use existing basic block numbers instead of recomputing
a new set of them.

llvm-svn: 94631
2010-01-27 00:20:02 +00:00
Chris Lattner 9da5e1f650 Switch MSP430, CellSPU, SystemZ, Darwin/PPC, Alpha, and Sparc to
EmitFunctionHeader:

7 files changed, 16 insertions(+), 210 deletions(-)

llvm-svn: 94630
2010-01-27 00:17:20 +00:00
Evan Cheng 640b58b8d7 Clarify what -tailcallopt option actually do.
llvm-svn: 94628
2010-01-27 00:10:09 +00:00
Jim Grosbach a3575ca846 Adjust setjmp instruction sequence to not need 32-bit alignment padding
llvm-svn: 94627
2010-01-27 00:07:20 +00:00
Evan Cheng 67a69dd2ed Eliminate target hook IsEligibleForTailCallOptimization.
Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.

llvm-svn: 94626
2010-01-27 00:07:07 +00:00
Evan Cheng d10089a5b4 Restore to pre-94570 state.
llvm-svn: 94625
2010-01-27 00:00:57 +00:00
Chris Lattner bac7498f8e mcize label emission for functions.
llvm-svn: 94624
2010-01-26 23:53:39 +00:00
Chris Lattner fc2e376a15 use EmitLinkage for functions as well as globals. One output
change is that we now use ".linkonce discard" for global variables
instead of ".linkonce samesize".  These should be the same, just less
strict.  If anyone is interested in mcizing MCSection for COFF targets,
this should be easy to fix.

llvm-svn: 94623
2010-01-26 23:51:52 +00:00
Chris Lattner dbf5a7617d pull linkage emission code out to a new EmitLinkage function.
llvm-svn: 94621
2010-01-26 23:47:12 +00:00
Chris Lattner 22fc38dd4f rearrange some directives, no functionality change.
llvm-svn: 94620
2010-01-26 23:41:48 +00:00
Victor Hernandez 2b17e2a452 Avoid extra calls to MD->getNumOperands()
llvm-svn: 94618
2010-01-26 23:29:09 +00:00
Evan Cheng 75766332f9 Ignore 'forced' tailcall opt in fastisel mode.
llvm-svn: 94617
2010-01-26 23:28:40 +00:00
Chris Lattner 56e9b5975d remove a noop function.
llvm-svn: 94616
2010-01-26 23:26:29 +00:00
Jakob Stoklund Olesen 0234628284 Fix inline cost predictions with SCIENCE.
After running a batch of measurements, it is clear that the inliner metrics
need some adjustments:

Own argument bonus:       20 -> 5
Outgoing argument penalty: 0 -> 5
Alloca bonus:             10 -> 5
Constant instr bonus:      7 -> 5
Dead successor bonus:     40 -> 5*(avg instrs/block)

The new cost metrics are generaly 25 points higher than before, so we may need
to move thresholds.

With this change, InlineConstants::CallPenalty becomes a political correction:

if (!isa<IntrinsicInst>(II) && !callIsSmall(CS.getCalledFunction()))
  NumInsts += InlineConstants::CallPenalty + CS.arg_size();

The code size is accurately modelled by CS.arg_size(). CallPenalty is added
because calls tend to take a long time, so it may not be worth it to inline a
function with lots of calls.

All of the political corrections are in the InlineConstants namespace:
IndirectCallBonus, CallPenalty, LastCallToStaticBonus, ColdccPenalty,
NoreturnPenalty.

llvm-svn: 94615
2010-01-26 23:21:56 +00:00
Chris Lattner c7b91156e4 now that enough stuff is constified, move function header printing
logic up from X86 into the common code.  The other targets will 
hopefully start using this soon.

llvm-svn: 94614
2010-01-26 23:18:44 +00:00
Chris Lattner 76555b513c constify a bunch of dwarf stuff now that the registerinfo method
is constified.

llvm-svn: 94613
2010-01-26 23:18:02 +00:00
Chris Lattner f13e5f7323 constify a method argument.
llvm-svn: 94612
2010-01-26 23:15:09 +00:00
Evan Cheng c35b5a123b Allow some automatic tailcall optimization without changing ABI.
llvm-svn: 94611
2010-01-26 23:13:04 +00:00
Evan Cheng 1b7b9e852c Delete blank lines that bug me.
llvm-svn: 94610
2010-01-26 23:07:57 +00:00
Chris Lattner 3ba6da49f5 call emitconstantpool and emitjumptable like other targets.
llvm-svn: 94601
2010-01-26 22:06:58 +00:00
Chris Lattner b657c4cdc3 emit jump table an alias ".set" directives through MCStreamer as
assignments.

.set x, a-b

is the same as:

x = a-b

llvm-svn: 94596
2010-01-26 21:53:08 +00:00
Chris Lattner 37bc78a5e2 fix CastInst::castIsValid to reject aggregate types, fixing PR6153:
llvm-as: t.ll:1:25: error: invalid cast opcode for cast from '[4 x i8]' to '[1 x i32]'
@x = constant [1 x i32] bitcast ([4 x i8] c"abcd" to [1 x i32])
                        ^

llvm-svn: 94595
2010-01-26 21:51:43 +00:00
Devang Patel 1973df2e3f Use AssertingVH, just to be paranoid.
llvm-svn: 94593
2010-01-26 21:39:14 +00:00
Jakob Stoklund Olesen 87256d8fe1 Revert test polarity to match comment and desired outcome. Remove undeserved bonus.
A GEP with all constant indices is already considered free by
analyzeBasicBlock(), so don't give it an extra bonus in
CountCodeReductionForAlloca().

This patch should remove a small positive bias toward inlining functions with
variable-index GEPs, and remove a smaller negative bias from functions with
all-constant index GEPs.

llvm-svn: 94591
2010-01-26 21:31:35 +00:00
Jakob Stoklund Olesen 832e79ca32 Remove dead code.
Functions containing indirectbr are marked NeverInline by analyzeBasicBlock(),
so there is no point in giving indirectbr special treatment in
CountCodeReductionForConstant. It is never called.

No functional change intended.

llvm-svn: 94590
2010-01-26 21:31:30 +00:00
Jakob Stoklund Olesen cab470b17a Skip calculation of ArgumentWeights if it will never be used.
Save a few bytes by allocating the correct size vector.

No functional change intended.

llvm-svn: 94589
2010-01-26 21:31:24 +00:00
Devang Patel 303a1beea6 Emit DW_AT_containing_type attribute for a class if containing type is known.
llvm-svn: 94587
2010-01-26 21:16:06 +00:00
Devang Patel f4b25d6d7b Add extra element to composite type. This new element will be used to record c++ class that holds current class's vtable.
llvm-svn: 94586
2010-01-26 21:14:59 +00:00
Chris Lattner ff234e09b9 Eliminate SetDirective, and replace it with HasSetDirective.
Default HasSetDirective to true, since most targets have it.

The targets that claim to not have it probably do, or it is
spelled differently. These include Blackfin, Mips, Alpha, and
PIC16.  All of these except pic16 are normal ELF targets, so
they almost certainly have it.

llvm-svn: 94585
2010-01-26 20:40:54 +00:00
Evan Cheng 345ec3166e Delete dead code.
llvm-svn: 94583
2010-01-26 20:36:21 +00:00
Rafael Espindola dcb03f0f6b Emit .comm alignment in bytes but .align in powers of 2 for ARM ELF.
Original patch by Sandeep Patel and updated by me.

llvm-svn: 94582
2010-01-26 20:21:43 +00:00
Chris Lattner 3dd38a8112 eliminate MCAsmInfo::NeedsSet: we now just use .set on any platform
that has it.

llvm-svn: 94581
2010-01-26 20:20:43 +00:00
Chris Lattner 526f560424 don't set to the default value.
llvm-svn: 94580
2010-01-26 20:17:34 +00:00
Dan Gohman 85be4333ad Make the unsigned-range code more consistent with the signed-range code,
and clean up some loose ends.

llvm-svn: 94572
2010-01-26 19:19:05 +00:00
Evan Cheng 8703c412f4 Code refactoring, no functionality change.
llvm-svn: 94570
2010-01-26 19:04:47 +00:00
Victor Hernandez 9ecd2f039f Switch AllocaDbgDeclares to SmallVector and don't leak DIFactory
llvm-svn: 94567
2010-01-26 18:57:53 +00:00
Dan Gohman a01418d75a Fix a typo in a comment that Duncan noticed.
llvm-svn: 94562
2010-01-26 18:32:54 +00:00
Dan Gohman 1c7e3837fb Remove SIL, DIL, and BPL from the GR8_NOREX allocation order also.
llvm-svn: 94560
2010-01-26 18:30:24 +00:00
Dan Gohman ed71d8d70b SIL, DIL, BPL, and SPL require a REX prefix.
llvm-svn: 94558
2010-01-26 18:14:22 +00:00
Dan Gohman fdb744b203 Rename ItCount to BECount, since it holds a backedge-taken count rather
than an iteration count.

llvm-svn: 94549
2010-01-26 16:46:18 +00:00
Dan Gohman d86e295f8e Fix ICmpInst::makeConstantRange to use ConstantRange's API properly
in the case of empty and full ranges.

llvm-svn: 94548
2010-01-26 16:04:20 +00:00
Dan Gohman 3f8ed9e1ae Fix a typo that several people pointed out. Also, address the case of
wrapping that Duncan pointed out.

llvm-svn: 94547
2010-01-26 15:56:18 +00:00
Mikhail Glushenkov d115cb60fe Better error message.
llvm-svn: 94544
2010-01-26 14:55:16 +00:00
Chris Lattner 547c761dd6 eliminate the TargetLowering::UsesGlobalOffsetTable bool, which is
subsumed by TargetLowering::getJumpTableEncoding().  Change uses of
it to be more specific.

llvm-svn: 94529
2010-01-26 06:53:37 +00:00
Chris Lattner 4db603f93b Now that printPICJumpTableSetLabel is not overloaded,
inline it into its only caller, allowing us to simplify it
and hoist bits out of the loop.

llvm-svn: 94528
2010-01-26 06:42:44 +00:00
Chris Lattner 8a785d7a67 Move getJTISymbol from MachineJumpTableInfo to MachineFunction,
which is more convenient, and change getPICJumpTableRelocBaseExpr
to take a MachineFunction to match.

Next, move the X86 code that create a PICBase symbol to
X86TargetLowering::getPICBaseSymbol from 
X86MCInstLower::GetPICBaseSymbol, which was an asmprinter specific 
library.  This eliminates a 'gross hack', and allows us to
implement X86ISelLowering::getPICJumpTableRelocBaseExpr which now
calls it.

This in turn allows us to eliminate the 
X86AsmPrinter::printPICJumpTableSetLabel method, which was the
only overload of printPICJumpTableSetLabel.

llvm-svn: 94526
2010-01-26 06:28:43 +00:00
Chris Lattner 273735bc5a add a new MachineJumpTableInfo::getJTISymbol method,
use it to implement the default TargetLowering::getPICJumpTableRelocBaseExpr

llvm-svn: 94523
2010-01-26 05:58:28 +00:00
Chris Lattner 8a6c1eaabb stub out a new target hook, need some refactoring before I can
implement it.

llvm-svn: 94521
2010-01-26 05:30:30 +00:00
Chris Lattner cc0f734cd0 simplify asmprinter: only emit .set directives when entries have
EK_LabelDifference32 kind and the target has .set support.  Simplify
X86AsmPrinter::printPICJumpTableSetLabel to make use of recent helpers.

llvm-svn: 94518
2010-01-26 05:15:20 +00:00
Chris Lattner 279de3ef64 rename printPICJumpTableEntry -> EmitJumpTableEntry,
make it private and non-virtual.  It handles the non-pic
case too, so just use it, simplifying EmitJumpTableInfo.

llvm-svn: 94517
2010-01-26 05:10:10 +00:00
Chris Lattner 4bfbe93437 implement X86 @GOTOFF jump table entries with the new EK_Custom32
jump table entry kind, instead of overloading 
AsmPrinter::printPICJumpTableEntry.

This has a pretty horrible and inefficient FIXME around how @GOTOFF
is currently smashed into the mcsymbol name, but otherwise this is
much cleaner.

llvm-svn: 94516
2010-01-26 05:02:42 +00:00
Chris Lattner d051af7551 add a new MachineBasicBlock::getSymbol method, replacing
the AsmPrinter::GetMBBSymbol.

llvm-svn: 94515
2010-01-26 04:55:51 +00:00
Lang Hames 090c7e82dd New PBQP solver.
* Fixed a reduction bug which occasionally led to infinite-cost (invalid)
  register allocation solutions despite the existence finite-cost solutions.
* Significantly reduced memory usage (>50% reduction).
* Simplified a lot of the solver code.

llvm-svn: 94514
2010-01-26 04:49:58 +00:00
Dan Gohman 51aaf02821 Fix the the ceiling-division used in computing the MaxBECount so that it doesn't
have trouble with an intermediate add overflowing. Also, be more conservative
about the case where the induction variable in an SLT loop exit can step past
the RHS of the SLT and overflow in a single step.

Make getSignedRange more aggressive, to recover for some common cases which
the above fixes pessimized.

This addresses rdar://7561161.

llvm-svn: 94512
2010-01-26 04:40:18 +00:00
Chris Lattner 170442fa12 don't bother setting the AsmPrinter::MF ivar, now that
AsmPrinter::SetupMachineFunction sets it.  Note that systemz
and msp430 didn't.  Yay for reduced inconsistency! :)

llvm-svn: 94510
2010-01-26 04:38:11 +00:00
Chris Lattner 6715952c25 make MachineFunction keep track of its ID and make
MachineFunctionAnalysis dole them out, instead of having
AsmPrinter do both.  Have the AsmPrinter::SetupMachineFunction
method set the 'AsmPrinter::MF' variable.

llvm-svn: 94509
2010-01-26 04:35:26 +00:00
Dan Gohman 5325efc5af Add a comment about a missed opportunity.
llvm-svn: 94507
2010-01-26 04:13:15 +00:00
Dan Gohman 837ada7692 Print empty and full sets specially.
llvm-svn: 94506
2010-01-26 04:12:55 +00:00
Chris Lattner 5fc4160ea3 Add support for target-specific 32-bit custom-lowered
jump table entries.

llvm-svn: 94505
2010-01-26 04:05:28 +00:00
Daniel Dunbar a8d7385d99 Unbreak MSVC/CMake build.
llvm-svn: 94502
2010-01-26 03:56:22 +00:00
Chris Lattner 7a2607026b make jit jump table emission be based on the EntryKind instead of magic variables.
JITInfo::getPICJumpTableEntry can probably be removed now, but I don't plan to do 
this.

llvm-svn: 94501
2010-01-26 03:47:15 +00:00
Chris Lattner a7c116016e switch jump table entry emission to be based on EntryKind
instead of magic variables.

llvm-svn: 94500
2010-01-26 03:43:22 +00:00
Victor Hernandez cd94410152 In mem2reg, for all alloca/stores that get promoted where the alloca has an associated llvm.dbg.declare instrinsic, insert an llvm.dbg.var intrinsic before each store.
llvm-svn: 94493
2010-01-26 02:42:15 +00:00
Victor Hernandez 7e8ce9afbc Add MDNode::getIfExists(), an efficient way to determine if a value is used by metadata (since metadata does not appear in a value's use list)
llvm-svn: 94492
2010-01-26 02:36:35 +00:00
Victor Hernandez 907bdbb6be Assert when debug intrinsic insert functions are passed empty arguments
llvm-svn: 94491
2010-01-26 02:07:38 +00:00
Evan Cheng 555f61bf58 Implement cond ? -1 : 0 with sbb.
llvm-svn: 94490
2010-01-26 02:00:44 +00:00
Dale Johannesen 0563fe3445 Accept immediate as value of a dbg_value.
llvm-svn: 94489
2010-01-26 01:54:26 +00:00
Sean Callanan eb182e9c88 Added the implementation of the Intel-specific
TargetAsmLexer.

llvm-svn: 94482
2010-01-26 01:00:10 +00:00
Dale Johannesen d5575f29f1 Generate DEBUG_VALUE comments on x86. The (limited)
dbg.declare's we currently generate go through both
register allocators without perturbing the results.

llvm-svn: 94480
2010-01-26 00:09:58 +00:00
Sean Callanan ad857fc070 Added the TargetAsmLexer implementation for AT&T syntax.
llvm-svn: 94479
2010-01-26 00:08:25 +00:00
Dale Johannesen e5a4134d11 use findDebugLoc in more places.
llvm-svn: 94477
2010-01-26 00:03:12 +00:00
Jim Grosbach db67493f76 Minor jump table cleanup.
llvm-svn: 94475
2010-01-25 23:50:13 +00:00
Chris Lattner 9c1efcd4f6 in 32-bit pic mode for targets with a GOT, x86 emits jump table
entries with @GOTOFF whih is EK_GPRel32BlockAddress.

llvm-svn: 94474
2010-01-25 23:38:14 +00:00
Chris Lattner 8186eecf0f fix quoting problem jim noticed!
llvm-svn: 94472
2010-01-25 23:28:03 +00:00
Chris Lattner b6db2c6b31 Rearrange handling of jump tables. Highlights:
1. MachineJumpTableInfo is now created lazily for a function the first time
   it actually makes a jump table instead of for every function.
2. The encoding of jump table entries is now described by the
   MachineJumpTableInfo::JTEntryKind enum.  This enum is determined by the
   TLI::getJumpTableEncoding() hook, instead of by lots of code scattered
   throughout the compiler that "knows" that jump table entries are always
   32-bits in pic mode (for example).
3. The size and alignment of jump table entries is now calculated based on
   their kind, instead of at machinefunction creation time.

Future work includes using the EntryKind in more places in the compiler,
eliminating other logic that "knows" the layout of jump tables in various
situations.

llvm-svn: 94470
2010-01-25 23:26:13 +00:00
Chris Lattner a14ac3fd80 prep work to support a future where getJumpTableInfo will return
a null pointer for functions with no jump tables.  No functionality
change.

llvm-svn: 94469
2010-01-25 23:22:00 +00:00
Chris Lattner 3072add73c add a method to get the alignment of an integer type even
when we don't have one laying around.  Useful if you don't
have an llvmcontext handy.

llvm-svn: 94468
2010-01-25 23:18:11 +00:00
Johnny Chen 5542c1edf9 Make it SP, LR, PC for GPR Register Class instead of LR, SP, PC.
llvm-svn: 94465
2010-01-25 22:54:29 +00:00
Chris Lattner a4074257ab eliminate redundant argument to EmitJumpTableInfo
llvm-svn: 94464
2010-01-25 22:41:33 +00:00
Johnny Chen ab2b1a7aeb Implemented ARMInstPrinter::printThumbS4ImmOperand().
llvm-svn: 94457
2010-01-25 22:13:10 +00:00
Sean Callanan 665493102e Implemented the dialect decision logic for the X86
TargetAsmLexer.  Dialect-specific lexing code will
be placed in the functions LexTokenATT() and
LexTokenIntel().

llvm-svn: 94456
2010-01-25 21:59:20 +00:00
Johnny Chen 495ac50b4e Fixed the order of GPR RegisterClass regs to be: ..., R10, R11, R12, ...
llvm-svn: 94455
2010-01-25 21:56:35 +00:00
Dan Gohman 00f4747bad Fix the bitcode reader to deserialize nuw/nsw/etc. bits properly in the case
of a forward-reference, which doesn't use an "abbrev" encoding.

llvm-svn: 94454
2010-01-25 21:55:39 +00:00
Chris Lattner 3cde760023 mcstreamerize gprel32 emission.
llvm-svn: 94452
2010-01-25 21:28:50 +00:00
Bob Wilson 70c8fe5e4e Remove check for an impossible condition: the condition of the while loop has
already checked that TmpBB->getSinglePredecessor() is non-null.

llvm-svn: 94451
2010-01-25 21:28:05 +00:00
Chris Lattner 822742fef9 mcize the non-gprel cases of AsmPrinter::printPICJumpTableEntry
llvm-svn: 94450
2010-01-25 21:22:22 +00:00
Chris Lattner 00d188f379 handle the _set_ symbol with an MCSymbol.
llvm-svn: 94449
2010-01-25 21:17:10 +00:00
Chris Lattner 19bd039896 rename MAI::PICJumpTableDirective to MAI::GPRel32Directive to
make it clear what it is, instead of how it is used.

llvm-svn: 94448
2010-01-25 21:10:10 +00:00
Chris Lattner 360aeb76a2 pull the non-pic jump table case out of printPICJumpTableEntry
and MCize the non-pic case.  Now printPICJumpTableEntry really
is just about printing PIC entries.

llvm-svn: 94446
2010-01-25 21:01:58 +00:00
Chris Lattner ccabcd7f85 remove JumpTableDirective, it is always null.
llvm-svn: 94445
2010-01-25 20:52:54 +00:00
Chris Lattner 68d64aa28b mcize jump table symbol manipulation.
llvm-svn: 94441
2010-01-25 19:51:38 +00:00
Chris Lattner 6330d5330e sink an arm specific method out of asmprinter into the ARMAsmPrinter and
rename it to avoid shadowing.

llvm-svn: 94440
2010-01-25 19:39:52 +00:00
Chris Lattner a9ee93ef42 remove dead code: the x86 target never sets usesGlobalOffsetTable,
even on x86-32/elf which uses a GOT.

llvm-svn: 94439
2010-01-25 19:23:04 +00:00
Chris Lattner d45adf28de wirte up .file and .file to the mc asmparser.
llvm-svn: 94438
2010-01-25 19:02:58 +00:00
Chris Lattner 601ef33c77 mcstreamerize .file and .file. This also fixes an issue where the
normal form of .file would fail if the filename had a weird character
in it.

llvm-svn: 94437
2010-01-25 18:58:59 +00:00
Chris Lattner bc696445e1 emit ELF .type directives through MCStreamer instead of doing it textually.
llvm-svn: 94436
2010-01-25 18:33:40 +00:00
Chris Lattner bc8f638531 add symbol attribute support for the ELF .type directive.
llvm-svn: 94435
2010-01-25 18:30:45 +00:00
Bob Wilson fc060e4337 Change Value::getUnderlyingObject to have the MaxLookup value specified as a
parameter with a default value, instead of just hardcoding it in the
implementation.  The limit of MaxLookup = 6 was introduced in r69151 to fix
a performance problem with O(n^2) behavior in instcombine, but the scalarrepl
pass is relying on getUnderlyingObject to go all the way back to an AllocaInst.
Making the limit part of the method signature makes it clear that by default
the result is limited and should help avoid similar problems in the future.
This fixes pr6126.

llvm-svn: 94433
2010-01-25 18:26:54 +00:00
Victor Hernandez 8a588e1444 Revert r94260 until findDbgDeclare() is made more efficient
llvm-svn: 94432
2010-01-25 17:52:13 +00:00
Chris Lattner 866a539f5f add a comment
llvm-svn: 94417
2010-01-25 07:53:05 +00:00
Chris Lattner 91dac6d570 emit the .size directive for global variables on ELF through
mcstreamer.

llvm-svn: 94416
2010-01-25 07:52:13 +00:00
Chris Lattner 0375d2fbe7 all supported target now have aligned common support.
llvm-svn: 94413
2010-01-25 07:29:13 +00:00
Chris Lattner 48536010fb Remove support for i386 tiger tools for aligned common symbols.
Previously we would just silently miscompile code that used aligned
common's, now at least you'll get a build error.  tiger-ppc already
triggered the build error because it didn't have a version of this
logic.

llvm-svn: 94412
2010-01-25 07:26:17 +00:00
Chris Lattner 1588f18453 don't set value to its default.
llvm-svn: 94411
2010-01-25 07:23:14 +00:00
Chris Lattner 9f7667e4ad coff targets support alignment on .comm
llvm-svn: 94410
2010-01-25 07:20:44 +00:00
Jim Grosbach fa9ae6739a ARM does accept the .comm directive alignment.
llvm-svn: 94408
2010-01-25 04:59:07 +00:00
Rafael Espindola a1141dd6ab Fix PR6134.
We are not emitting alignments on Darwin for "bar". Not sure what is the
correct way to do it.

llvm-svn: 94400
2010-01-25 02:27:39 +00:00
Chris Lattner ecb457c4e2 linux/ppc does use alignment in bytes, not pow-2. This fixes PR6129.
It looks like linux/arm and linux/mips have the same setting, which 
are probably wrong.  Someone who cares about ARM and MIPS should 
investigate with the testcase in PR6129.

llvm-svn: 94381
2010-01-24 20:54:45 +00:00
Chris Lattner d96bcb5f22 don't reset the default.
llvm-svn: 94380
2010-01-24 20:53:12 +00:00
Chris Lattner 823aed16f9 make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.
llvm-svn: 94378
2010-01-24 20:43:08 +00:00
Chris Lattner dec86d7337 mark some libraries that currently require RTTI.
llvm-svn: 94377
2010-01-24 20:22:08 +00:00
Chris Lattner e3a68d1063 reassociate should do this.
llvm-svn: 94374
2010-01-24 20:17:09 +00:00
Chris Lattner 7e3f8b60d6 add a note.
llvm-svn: 94373
2010-01-24 20:01:41 +00:00
Chris Lattner 62f2840572 fix some issues where we weren't emitting enough newlines.
llvm-svn: 94370
2010-01-24 19:01:06 +00:00
Chris Lattner 5adf987417 when emitting DIEs, emit the comment on the same line as the directive.
This fixes FrontendObjC/2009-11-30-Objc-ID.m

llvm-svn: 94369
2010-01-24 18:54:17 +00:00
Chris Lattner e0359b4fe7 move PR5945 here.
llvm-svn: 94350
2010-01-24 02:27:03 +00:00
Chris Lattner 807a3bcbbb fix a parsing problem on instructions like:
movw	$8, (_cost_table_-L97$pb)+66(%eax)

After the parens, we could still have a binop.

llvm-svn: 94345
2010-01-24 01:07:33 +00:00
Mon P Wang 4f45512c23 It seems better to scalarize vectors of size 1 instead of widening them.
Add support to widen SETCC.

llvm-svn: 94342
2010-01-24 00:24:43 +00:00
Chris Lattner 1b35bbe813 change the canonical form of "cond ? -1 : 0" to be
"sext cond" instead of a select.  This simplifies some instcombine
code, matches the policy for zext (cond ? 1 : 0 -> zext), and allows
us to generate better code for a testcase on ppc.

llvm-svn: 94339
2010-01-24 00:09:49 +00:00
Mon P Wang 586d997e98 Improved widening loads by adding support for wider loads if
the alignment allows.  Fixed a bug where we didn't use a
vector load/store for PR5626.

llvm-svn: 94338
2010-01-24 00:05:03 +00:00
Chris Lattner e112ff64c5 fix a potential overflow issue Eli pointed out.
llvm-svn: 94336
2010-01-23 23:31:46 +00:00
Nick Lewycky 7e7ed8b9e5 Speculatively revert r94322 to see if it fixes darwin selfhost buildbot.
llvm-svn: 94331
2010-01-23 20:32:12 +00:00
Chris Lattner 29b15c5cfd third bug from PR6119: the xor dupe extension allows
for arbitrary terminators in predecessors, don't assume
it is a conditional or uncond branch.  The testcase shows
an example where they can happen with switches.

llvm-svn: 94323
2010-01-23 19:21:31 +00:00
Nick Lewycky 32966aed9d Teach DAE that even though it can't modify the function signature of an
externally visible function, it can still find all callers of it and replace
the parameters to a dead argument with undef.

llvm-svn: 94322
2010-01-23 19:19:34 +00:00
Chris Lattner ba2d0b89ff add an early out to ProcessBranchOnXOR to speed it up,
handle the case when we can infer an input to the xor
from all inputs that agree, instead of going into an
infinite loop.  Another part of PR6199

llvm-svn: 94321
2010-01-23 19:16:25 +00:00
Chris Lattner de5ab4860f fix a crash in jump threading, PR6119
llvm-svn: 94319
2010-01-23 18:56:07 +00:00
Chris Lattner 249da5cb73 implement a simple instcombine xform that has been in the
readme forever.

llvm-svn: 94318
2010-01-23 18:49:30 +00:00
Chris Lattner 97331ae668 add a note
llvm-svn: 94317
2010-01-23 18:42:37 +00:00
Chris Lattner 082da53f9a add some notes, making posix-memalign be nocapture would be an easy improvement.
llvm-svn: 94312
2010-01-23 17:59:23 +00:00
Bill Wendling 8cbc25d945 Remove the '-disable-scheduling' flag and replace it with the 'source' option of
the '-pre-RA-sched' flag. It actually makes more sense to do it this way. Also,
keep track of the SDNode ordering by default. Eventually, we would like to make
this ordering a way to break a "tie" in the scheduler. However, doing that now
breaks the "CodeGen/X86/abi-isel.ll" test for 32-bit Linux.

llvm-svn: 94308
2010-01-23 10:26:57 +00:00
Benjamin Kramer 14bb114c92 Respect operator precedence (and silence a gcc 4.3 warning).
llvm-svn: 94304
2010-01-23 09:54:23 +00:00
Chris Lattner b1301f7bce mcize lcomm, simplify .comm, extend both to support 64-bit sizes.
llvm-svn: 94299
2010-01-23 07:47:02 +00:00
Chris Lattner 76bdea3290 resolve a fixme: the "nonexecutable stack directive" is actually
a .section.  Switch to it with SwitchSection.

However, I think that this directive should be safe on any ELF target.
If so, we should hoist it up out of the X86 and SystemZ targets.

llvm-svn: 94298
2010-01-23 07:21:06 +00:00
Chris Lattner e244ff35d8 remove a dead call.
llvm-svn: 94297
2010-01-23 07:17:54 +00:00
Chris Lattner c55ea3fbcc use helpers.
llvm-svn: 94296
2010-01-23 07:00:21 +00:00
Chris Lattner 0bfd279b37 mcize visibility directives.
llvm-svn: 94295
2010-01-23 06:53:23 +00:00
Chris Lattner 685508cf49 move the various directive enums out of the MCStreamer class
into a new MCDirectives.h file.

llvm-svn: 94294
2010-01-23 06:39:22 +00:00
Chris Lattner d1acffc845 Change constantexpr global variable initializers to convert the constants
to MCExpr then emit them through MCStreamer with EmitValue.  I think all
global variable initializers are now going through mcstreamer.

llvm-svn: 94293
2010-01-23 06:17:14 +00:00
Eric Christopher c1451d764f Don't lower splat vector load to relative to the esp if the
stack may be misaligned.

Update test accordingly.

Patch by Evan Cheng!

llvm-svn: 94291
2010-01-23 06:02:43 +00:00
Chris Lattner 1deb09c28d mcstreamerize .no_dead_strip and .reference for static ctors/dtors.
llvm-svn: 94290
2010-01-23 05:51:36 +00:00
Eric Christopher ba7cd4c393 Reapply 94059 while fixing the calling convention setup
for strcpy.

llvm-svn: 94287
2010-01-23 05:29:06 +00:00
Chris Lattner b065f1bc31 remove unneeded directive set.
llvm-svn: 94286
2010-01-23 05:28:25 +00:00
Chris Lattner 5241cde324 use some helpers instead of duplicating logic.
llvm-svn: 94285
2010-01-23 05:26:25 +00:00
Chris Lattner 4225a7b987 mcize jump table and constant pool entry labels, .local on elf,
and some .weak directives.

llvm-svn: 94284
2010-01-23 05:19:23 +00:00
Chris Lattner 68eeb5ec9c emit .ascii and .asciz through MCStreamer.
llvm-svn: 94282
2010-01-23 04:54:10 +00:00
Chris Lattner 531732b23c simplify code a bit.
llvm-svn: 94281
2010-01-23 04:42:42 +00:00
Mon P Wang e04b4567f8 InstCombine should not fold sext/zext of a vector and a bitcast to a scalar to a sext/zext
llvm-svn: 94280
2010-01-23 04:35:57 +00:00
Ted Kremenek 4a1aa119a3 Update CMake build.
llvm-svn: 94278
2010-01-23 04:01:37 +00:00
Chris Lattner c3f23b84ea remove one form of EmitString, just use EmitBytes instead. We must
be careful to add a \0 at the end though, because EmitString didn't
do this.

llvm-svn: 94277
2010-01-23 03:11:46 +00:00
Sean Callanan 5051cb8010 Added the skeleton for the implementation of the X86
target-specific AsmLexer, and added the appropriate
registration calls.

llvm-svn: 94275
2010-01-23 02:43:15 +00:00
Sean Callanan 86c1181c3d Modified the register matcher function in AsmMatcher to
be static.  Also made it possible for clients to get it
and no other functions from ...GenAsmMatcher.inc by
defining REGISTERS_ONLY before including GenAsmMatcher.inc.
This sets the stage for target-specific lexers that can
identify registers and return AsmToken::Register as
appropriate.

llvm-svn: 94266
2010-01-23 00:40:33 +00:00
Devang Patel 0e44c51a3e Avoid using "Type" as the variable name.
llvm-svn: 94262
2010-01-23 00:26:28 +00:00
Victor Hernandez 5006e43faf In mem2reg, for all alloca/stores that get promoted where the alloca has an associated llvm.dbg.declare instrinsic, insert an llvm.dbg.var intrinsic before each store
llvm-svn: 94260
2010-01-23 00:17:34 +00:00
Chris Lattner ded9af63bb teach MCAsmStreamer::EmitBytes to use .ascii and .asciz
llvm-svn: 94259
2010-01-23 00:15:00 +00:00
Victor Hernandez 73b0f99f17 Make sure ValueFn starts off empty
llvm-svn: 94256
2010-01-23 00:03:28 +00:00
Evan Cheng c22893a3b7 Enable pre-regalloc scheduling load clustering by default.
llvm-svn: 94255
2010-01-22 23:49:45 +00:00
Evan Cheng 16cf934381 Be more conservative with clustering f32 / f64 loads.
llvm-svn: 94254
2010-01-22 23:49:11 +00:00
Chris Lattner 6f2d99df03 move "EOL" from asmprinter to dwarfprinter. It should eventually
be completely eliminated, but today is not that day.

llvm-svn: 94253
2010-01-22 23:47:11 +00:00
Chris Lattner 56940ab899 remove uses of EOL.
llvm-svn: 94252
2010-01-22 23:43:14 +00:00