Commit Graph

61019 Commits

Author SHA1 Message Date
Dan Gohman 54d7aaa819 Teach lint how to look through simple store+load pairs and other
effective no-op constructs, to make it more effective on
unoptimized IR.

llvm-svn: 104950
2010-05-28 16:21:24 +00:00
Dan Gohman 826bdf8c10 Move FindAvailableLoadedValue isSafeToLoadUnconditionally out of
lib/Transforms/Utils and into lib/Analysis so that Analysis passes
can use them.

llvm-svn: 104949
2010-05-28 16:19:17 +00:00
Dan Gohman a3b6c4b529 ConstantFoldConstantExpression can theoretically return null.
llvm-svn: 104948
2010-05-28 16:12:08 +00:00
Dan Gohman 4412c9c551 Fix a comment.
llvm-svn: 104947
2010-05-28 16:06:09 +00:00
Dan Gohman df5d7dcef1 Teach instcombine to promote alloca array sizes.
llvm-svn: 104945
2010-05-28 15:09:00 +00:00
Dan Gohman 71505aa4de Add a testcase for getelementptr index promotion.
llvm-svn: 104944
2010-05-28 15:07:59 +00:00
Dan Gohman ddba4b725a Add a lint check for returning the address of stack memory.
llvm-svn: 104936
2010-05-28 04:33:42 +00:00
Dan Gohman 05a6555acb Fix instcombine's handling of alloca to accept non-i32 types.
llvm-svn: 104935
2010-05-28 04:33:04 +00:00
Nate Begeman 2c3a196d16 Comment out some code in prep for actual .td file checkpoint.
llvm-svn: 104927
2010-05-28 02:19:08 +00:00
Dan Gohman 9da5bb0756 Bitcode support for allocas with arbitrary array size types.
llvm-svn: 104915
2010-05-28 01:38:28 +00:00
Devang Patel 3e0fbafab2 Fix typo.
llvm-svn: 104914
2010-05-28 01:29:50 +00:00
Devang Patel e2099e8088 Fix typo.
llvm-svn: 104913
2010-05-28 01:17:51 +00:00
Eli Friedman 48be842592 Fix build breakage.
llvm-svn: 104912
2010-05-28 01:15:28 +00:00
Dan Gohman 2140a74979 Eliminate the restriction that the array size in an alloca must be i32.
This will help reduce the amount of casting required on 64-bit targets.

llvm-svn: 104911
2010-05-28 01:14:11 +00:00
Nate Begeman dd5904687f Add support to tablegen for auto-generating arm_neon.h from a tablegen description
of the intrinsics.  The goal is to auto-generate both support for GCC-style (vector)
and ARM-style (struct of vector) intrinsics.

This is work in progress, but will be completed soon.

llvm-svn: 104910
2010-05-28 01:08:32 +00:00
Bob Wilson b6112e8706 Add the cc_out operand for t2RSBrs instructions. I missed this when I changed
the instruction class for t2RSB to add that operand in svn r104582.
Radar 8033757.

llvm-svn: 104907
2010-05-28 00:27:15 +00:00
Jakob Stoklund Olesen b613ae2c89 Add a -regalloc=default option that chooses a register allocator based on the -O
optimization level.

This only really affects llc for now because both the llvm-gcc and clang front
ends override the default register allocator. I intend to remove that code later.

llvm-svn: 104904
2010-05-27 23:57:25 +00:00
Jakob Stoklund Olesen 775ec12b72 Remove ancient prototype.
llvm-svn: 104903
2010-05-27 23:57:19 +00:00
Jim Grosbach faa3abbe39 Update the saved stack pointer in the sjlj function context following either
an alloca() or an llvm.stackrestore(). rdar://8031573

llvm-svn: 104900
2010-05-27 23:49:24 +00:00
Evan Cheng c2ebe0334a Use report_fatal_error, not llvm_unreachable.
llvm-svn: 104899
2010-05-27 23:45:31 +00:00
Jim Grosbach c9f532dddc back out 104862/104869. Can reuse stacksave after all. Very cool.
llvm-svn: 104897
2010-05-27 23:11:57 +00:00
Dan Gohman 288999b829 Factor out the handler work from SignalHandler into a helper function,
and change llvm::sys::RunInterruptHandlers to call that function directly
instead of calling SignalHandler, because the rest of SignalHandler
invokes side effects which aren't appropriate, including raising the
signal.

llvm-svn: 104896
2010-05-27 23:11:55 +00:00
Evan Cheng 3d3ee87d4e llvm can't correctly support 'H', 'Q' and 'R' modifiers. Just mark it an error.
llvm-svn: 104891
2010-05-27 22:08:38 +00:00
Kevin Enderby 9738f64bd9 MC/X86: Add aliases for Jcc variants.
llvm-svn: 104890
2010-05-27 21:33:19 +00:00
Dan Gohman 6debf89587 Eliminate some unnessary Path::exists() calls.
llvm-svn: 104888
2010-05-27 20:51:54 +00:00
Dan Gohman caf0ab658d Make ParseIRFile and getLazyIRFileModule incoporate the underlying
error message string into their own error message string, so that
the information isn't lost.

llvm-svn: 104887
2010-05-27 20:47:38 +00:00
Dan Gohman a880546c65 Don't flush the raw_ostream in llvm::WriteBitcodeToFile; it's at
the wrong level. Clients which need to leave the stream open but
which still require the bitcode bits to be on disk should call
flush themselves.

llvm-svn: 104885
2010-05-27 20:26:51 +00:00
Devang Patel 7a9dedf0ab Do not drop location info for inlined function args.
llvm-svn: 104884
2010-05-27 20:25:04 +00:00
Bob Wilson 40e62dfdc0 Fix some bad fall-throughs in a switch statement. Both the 'Q' and 'R' cases
should fall through to the 'H' case, but instead 'Q' was falling through to 'R'
so that it would do the wrong thing for a big-endian ARM target.

llvm-svn: 104883
2010-05-27 20:23:42 +00:00
Dan Gohman ab366f055a When handling raw_ostream errors manually, use clear_error() so that
raw_ostream doesn't try to do its own error handling.

Also, close the raw_ostream before checking for errors so that any
errors that occur during closing are caught by the manual check.

llvm-svn: 104882
2010-05-27 20:19:47 +00:00
Dan Gohman 7559394270 When handling raw_ostream errors manually, use clear_error() so that
raw_ostream doesn't try to do its own error handling.

llvm-svn: 104881
2010-05-27 20:17:28 +00:00
Dale Johannesen 9e43c07bc5 Mark some math lib intrinsic nodes Legal on SSE4.1.
No functional effect as these nodes are not generated yet.

llvm-svn: 104879
2010-05-27 20:12:41 +00:00
Dan Gohman d9225cee20 Don't special-case stdout in llvm::WriteBitcodeToFile; just consider
it to be the caller's responsibility to provide a stream in binary
mode. This fixes a layering violation and avoids an outs() call.

llvm-svn: 104878
2010-05-27 20:06:51 +00:00
Stuart Hastings bf132360a8 Adjust test case for lexical block pruning. Follow-on to r104842 and Radar 7424645.
llvm-svn: 104876
2010-05-27 19:57:51 +00:00
Dan Gohman 93b2f9e97b Don't create an output stream when output is disabled.
llvm-svn: 104875
2010-05-27 19:52:20 +00:00
Dan Gohman c6e5a4c68f Simplify raw_ostream usage.
llvm-svn: 104874
2010-05-27 19:48:08 +00:00
Dan Gohman 174f57668f Avoid calling outs() and fouts() when the stream isn't really needed.
llvm-svn: 104873
2010-05-27 19:47:36 +00:00
Devang Patel 91ad65e8b7 Let's try one more time to match patterns.
The goal is to match following 3 lines. In otherwords, a temp. label between to DEBUG_VALUE comments.
        ;DEBUG_VALUE: bar:x <- undef   ## 2010-01-18-Inlined-Debug.c:7
Ltmp1:
        ;DEBUG_VALUE: foo:__x <- undef ## 2010-01-18-Inlined-Debug.c:5

llvm-svn: 104872
2010-05-27 19:46:38 +00:00
Duncan Sands f162eace49 Teach instCombine to remove malloc+free if malloc's only uses are comparisons
to null.  Patch by Matti Niemenmaa.

llvm-svn: 104871
2010-05-27 19:09:06 +00:00
Jim Grosbach b68dfb45f5 hook ISD::STACKADDR to an intrinsic
llvm-svn: 104869
2010-05-27 18:52:11 +00:00
Dan Gohman dc53f1cb5c FastISel doesn't yet handle callee-pop functions.
To support this, move IsCalleePop from X86ISelLowering to X86Subtarget.

llvm-svn: 104866
2010-05-27 18:43:40 +00:00
Jim Grosbach 5cde219fb1 add ISD::STACKADDR to get the current stack pointer. Will be used by sjlj EH
to update the jmpbuf in the presence of VLAs.

llvm-svn: 104862
2010-05-27 18:23:48 +00:00
Bruno Cardoso Lopes 54b07ad2cd Merge basic binops SSE 1 & 2 instruction classes. This is a step towards refactoring
common code between SSE versions.

llvm-svn: 104860
2010-05-27 18:17:40 +00:00
Devang Patel da01e5e907 Temp. labels number may not match for all configurations.
llvm-svn: 104858
2010-05-27 17:51:08 +00:00
Dan Gohman c36b1f35f0 Add basic error checking to MemoryBuffer::getSTDIN.
llvm-svn: 104855
2010-05-27 17:31:51 +00:00
Dan Gohman ece4bf5148 Use the return value of getMagicNumber instead of using a
separate canRead() call.

llvm-svn: 104853
2010-05-27 17:18:38 +00:00
Dan Gohman 78d1e84521 Don't bother clearing the Magic string when the magic number
can't be read, since it isn't cleared on other error paths.

llvm-svn: 104852
2010-05-27 17:14:10 +00:00
Dan Gohman 16f4bd8140 Don't bother checking canRead() before calling getMagicNumber();
getMagicNumber() does its own error checking.

llvm-svn: 104851
2010-05-27 17:12:23 +00:00
Devang Patel 5e6b71ce34 inlined function's arguments need a label to mark the start point because they are not directly attached to current function.
llvm-svn: 104848
2010-05-27 16:47:30 +00:00
Dan Gohman 388fa73f03 Minor code simplification.
llvm-svn: 104845
2010-05-27 16:25:05 +00:00
Stuart Hastings 8e99e50d08 Support for nested functions/classes in debug output. Radar 7424645.
llvm-svn: 104841
2010-05-27 16:16:54 +00:00
Jim Grosbach 9b253e6518 remove incorrect GCCBuiltin<> usage
llvm-svn: 104833
2010-05-27 15:04:02 +00:00
Gabor Greif b50c58a792 typo
llvm-svn: 104832
2010-05-27 09:48:47 +00:00
Gabor Greif 38303d7e3b rename test to represent meaningful date
llvm-svn: 104831
2010-05-27 09:32:38 +00:00
Daniel Dunbar 97ac3afac2 AsmMatcher: Ensure classes are totally ordered, so we can std::sort them reliably.
llvm-svn: 104806
2010-05-27 05:31:32 +00:00
Bob Wilson ebdc772457 Add a test for llvm-gcc svn r104726.
llvm-svn: 104805
2010-05-27 05:30:36 +00:00
Eric Christopher 8ae57895f5 Add a quick test of relocations.
llvm-svn: 104794
2010-05-27 00:53:40 +00:00
Eric Christopher eaddfac539 Rearrange conditionals so we don't get caught with the correct type as wrong.
llvm-svn: 104793
2010-05-27 00:52:31 +00:00
Devang Patel 6b9a9fe207 Simplify. Eliminate unneeded debug_loc entry.
llvm-svn: 104785
2010-05-26 23:55:23 +00:00
Jakob Stoklund Olesen d67defdfe2 Avoid counting InlineAsm as a call - it prevents loop unrolling.
PR7026
Patch by Pekka Jääskeläinen!

llvm-svn: 104780
2010-05-26 22:40:28 +00:00
Dan Gohman 084bcb1322 Fix Lint printing warnings multiple times. Remove the ErrorStr
option from lintModule, which was an artifact from being
based on Verifier code.

llvm-svn: 104765
2010-05-26 22:28:53 +00:00
Daniel Dunbar c0b69020cd AsmMatcher/X86: Mark _REV instructions as "code gen only", they aren't expected
to be matched.

llvm-svn: 104757
2010-05-26 22:21:28 +00:00
Dan Gohman a20a5cd24f Reinstate checking of stackrestore, with checking for both Read
and Write, and add a comment explaining this.

llvm-svn: 104756
2010-05-26 22:21:25 +00:00
Jakob Stoklund Olesen 731440b62b Check that inherited subregisters all have a direct SubRegIndex.
llvm-svn: 104755
2010-05-26 22:15:07 +00:00
Jakob Stoklund Olesen 4f6da9e3a8 Give SubRegIndex names to all ARM subregisters. This will be required by
TableGen shortly.

llvm-svn: 104754
2010-05-26 22:15:03 +00:00
Dan Gohman 996bc42a26 Stackrestore is not a load.
llvm-svn: 104752
2010-05-26 22:00:10 +00:00
Dan Gohman e58f7b3c76 Fix a missing quote.
llvm-svn: 104750
2010-05-26 21:56:15 +00:00
Bill Wendling ddee3cb163 Add FIXME comment to remove this.
llvm-svn: 104749
2010-05-26 21:53:50 +00:00
Dan Gohman c96c6db59d Remove a TODO which isn't practical.
llvm-svn: 104748
2010-05-26 21:50:41 +00:00
Daniel Dunbar b33dfbcba4 MC: Add TargetMachine support for setting the value of MCRelaxAll with
-filetype=obj.

llvm-svn: 104747
2010-05-26 21:48:55 +00:00
Jakob Stoklund Olesen d1d7ed63ff Add StringRef::compare_numeric and use it to sort TableGen register records.
This means that our Registers are now ordered R7, R8, R9, R10, R12, ...
Not R1, R10, R11, R12, R2, R3, ...

llvm-svn: 104745
2010-05-26 21:47:28 +00:00
Dan Gohman 1249adf160 Implement checking of the tail keyword.
llvm-svn: 104744
2010-05-26 21:46:36 +00:00
Jakob Stoklund Olesen 3113970675 Suppress emmission of empty subreg/superreg/alias sets.
llvm-svn: 104741
2010-05-26 21:35:55 +00:00
Devang Patel acc32a5c19 There is no need to force an line number entry (using previous location) for a temp label at unknown location.
llvm-svn: 104740
2010-05-26 21:23:46 +00:00
Bill Wendling 27311269cb Add "setjmp_syscall", "savectx", "qsetjmp", "vfork", "getcontext" to the list of
usual suspects that could "return twice".

llvm-svn: 104737
2010-05-26 20:39:00 +00:00
Daniel Dunbar b889fc987e MC: When running with -mc-relax-all, we can eagerly relax instructions and avoid creating unnecessary MCInstFragments.
llvm-svn: 104736
2010-05-26 20:37:03 +00:00
Daniel Dunbar 9d40ef162b MC/Mach-O: Factor out EmitInstTo{Fragment,Data} for emitting MCInst's as MCInstFragments or appending onto an MCDataFragment.
llvm-svn: 104735
2010-05-26 20:37:00 +00:00
Jim Grosbach c98892fdaa Adjust eh.sjlj.setjmp to properly have a chain and to have an opcode entry in
ISD::. No functional change.

llvm-svn: 104734
2010-05-26 20:22:18 +00:00
Devang Patel 1b08572a66 Update debug info when live-in reg is copied into a vreg.
llvm-svn: 104732
2010-05-26 20:18:50 +00:00
Kevin Enderby 70e34983e8 Fix the x86 move to/from segment register instructions.
llvm-svn: 104731
2010-05-26 20:10:45 +00:00
Bill Wendling 0c3bfd3fb0 Move the check for "calls setjmp" to SelectionDAGISel so that it can be used by
more than just the stack slot coloring algorithm.

llvm-svn: 104722
2010-05-26 19:46:12 +00:00
Devang Patel 002d54ddc9 Identify instructions, that needs a label to mark debug info entity, in advance. This simplifies beginScope().
llvm-svn: 104720
2010-05-26 19:37:24 +00:00
Dan Gohman 52c2738324 Eliminate the use of PriorityQueue and just use a std::vector,
implementing pop with a linear search for a "best" element. The priority
queue was a neat idea, but in practice the comparison functions depend
on dynamic information.

llvm-svn: 104718
2010-05-26 18:52:00 +00:00
Dan Gohman b3807452fe Fix indentation.
llvm-svn: 104717
2010-05-26 18:37:48 +00:00
Dan Gohman 1e5d0b0456 Delete an unused function.
llvm-svn: 104716
2010-05-26 18:34:12 +00:00
Daniel Dunbar 7c8bd0fc98 MC: Change RelaxInstruction to only take the input and output instructions.
llvm-svn: 104713
2010-05-26 18:15:06 +00:00
Dan Gohman 338674a323 Fix a typo in a comment that Gabor noticed.
llvm-svn: 104711
2010-05-26 18:03:53 +00:00
Dale Johannesen 053dd21c84 Testcase for 104624/104619/PR7191/8023512.
Reduced from one provided by Duncan Sands, thanks!

llvm-svn: 104710
2010-05-26 17:55:45 +00:00
Daniel Dunbar 388ff9b1a2 MC: Eliminate an unnecessary copy.
llvm-svn: 104709
2010-05-26 17:50:16 +00:00
Daniel Dunbar a19838e107 MC: Simplify MayNeedRelaxation to not provide the fixups, so we can query it
before encoding.

llvm-svn: 104707
2010-05-26 17:45:29 +00:00
Devang Patel 95fcc96752 Remove dead code.
llvm-svn: 104706
2010-05-26 17:42:50 +00:00
Devang Patel 5a5e0bc3b5 Do not construct location list backword!
llvm-svn: 104705
2010-05-26 17:29:32 +00:00
Jakob Stoklund Olesen 7de379467e Replace the SubRegSet tablegen class with a less error-prone mechanism.
A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.

CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.

It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.

llvm-svn: 104704
2010-05-26 17:27:12 +00:00
Jim Grosbach 172aaadd20 Add entry for llvm.eh.sjlj.longjmp. PR4999.
llvm-svn: 104703
2010-05-26 16:21:41 +00:00
Daniel Dunbar b34440a6a8 MC: Eliminate MCAsmFixup, replace with MCFixup.
llvm-svn: 104699
2010-05-26 15:18:56 +00:00
Daniel Dunbar 4f2bae4f7d MC: Simplify MCFixup and increase the available offset size.
llvm-svn: 104698
2010-05-26 15:18:40 +00:00
Daniel Dunbar 353a91ff76 MC: Use accessors for access to MCAsmFixup.
llvm-svn: 104697
2010-05-26 15:18:31 +00:00
Daniel Dunbar 3627af5da4 MC: Change MCInst::dump_pretty to not include a trailing newline.
llvm-svn: 104696
2010-05-26 15:18:13 +00:00
Benjamin Kramer 6877119ef3 Kill unneeded SExt.
llvm-svn: 104692
2010-05-26 09:45:04 +00:00
Zhongxing Xu 730a977e02 SRetReturnReg was set in LowerFormalArguments(). So only assert it here.
llvm-svn: 104691
2010-05-26 08:10:02 +00:00