summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix for PR3447: use padded sizes for computations on struct/union Eli Friedman2009-02-011-5/+5
| | | | | | constants. llvm-svn: 63491
* Fix an issue in PHI construction that was exposed by GCC 4.2 producing a ↵Owen Anderson2009-02-011-40/+27
| | | | | | different set iteration order for the reg_iterator. llvm-svn: 63490
* Fix PR3423: Link llvm on ARM EABI machines. Patch by Robert Schuster.Evan Cheng2009-02-011-3/+3
| | | | llvm-svn: 63489
* DebugLoc propagation.Dale Johannesen2009-01-312-179/+233
| | | | llvm-svn: 63488
* Reinstate this optimization to fold icmp of xor when possible. Don't try toNick Lewycky2009-01-313-6/+72
| | | | | | | turn icmp eq a+x, b+x into icmp eq a, b if a+x or b+x has other uses. This may have been increasing register pressure leading to the bzip2 slowdown. llvm-svn: 63487
* DebugLoc propagation. Done with file.Dale Johannesen2009-01-311-45/+61
| | | | llvm-svn: 63486
* DebugLoc propagation. Done with file.Dale Johannesen2009-01-311-15/+23
| | | | llvm-svn: 63485
* Forgot to add this test.Anders Carlsson2009-01-311-0/+31
| | | | llvm-svn: 63484
* Fix PR3452 (an infinite loop bootstrapping) by disabling the recentChris Lattner2009-01-313-10/+497
| | | | | | | | | | | improvements to the EvaluateInDifferentType code. This code works by just inserted a bunch of new code and then seeing if it is useful. Instcombine is not allowed to do this: it can only insert new code if it is useful, and only when it is converging to a more canonical fixed point. Now that we iterate when DCE makes progress, this causes an infinite loop when the code ends up not being used. llvm-svn: 63483
* Fix PR3401: when using large integers, the typeDuncan Sands2009-01-3112-101/+155
| | | | | | | | | | | | | returned by getShiftAmountTy may be too small to hold shift values (it is an i8 on x86-32). Before and during type legalization, use a large but legal type for shift amounts: getPointerTy; afterwards use getShiftAmountTy, fixing up any shift amounts with a big type during operation legalization. Thanks to Dan for writing the original patch (which I shamelessly pillaged). llvm-svn: 63482
* now that all the pieces are in place, teach instcombine'sChris Lattner2009-01-312-2/+82
| | | | | | | | | | | | | | simplifydemandedbits to simplify instructions with *multiple uses* in contexts where it can get away with it. This allows it to simplify the code in multi-use-or.ll into a single 'add double'. This change is particularly interesting because it will cover up for some common codegen bugs with large integers created due to the recent SROA patch. When working on fixing those bugs, this should be disabled. llvm-svn: 63481
* simplify/clarify control flow and improve comments, no functionality change.Chris Lattner2009-01-311-13/+21
| | | | llvm-svn: 63480
* make some fairly meaty internal changes to how SimplifyDemandedBits works.Chris Lattner2009-01-311-206/+172
| | | | | | | | | | | | | Now, if it detects that "V" is the same as some other value, SimplifyDemandedBits returns the new value instead of RAUW'ing it immediately. This has two benefits: 1) simpler code in the recursive SimplifyDemandedBits routine. 2) it allows future fun stuff in instcombine where an operation has multiple uses and can be simplified in one context, but not all. #2 isn't implemented yet, this patch should have no functionality change. llvm-svn: 63479
* add accessorsChris Lattner2009-01-311-0/+9
| | | | llvm-svn: 63478
* minor cleanupsChris Lattner2009-01-311-3/+3
| | | | llvm-svn: 63477
* make sure to set Changed=true when instcombine hacks on the code,Chris Lattner2009-01-312-5/+33
| | | | | | | not doing so prevents it from properly iterating and prevents it from deleting the entire body of dce-iterate.ll llvm-svn: 63476
* Used "-enable-unsafe-fp-math" to allow this transformation - (a * b -c) = c ↵Mon P Wang2009-01-311-1/+1
| | | | | | - a *b. llvm-svn: 63475
* If unsafe FP optimization is not set, don't allow -(A-B) => B-A becauseMon P Wang2009-01-312-1/+14
| | | | | | when A==B, -0.0 != +0.0. llvm-svn: 63474
* Don't use DebugLoc::getUnknownLoc(). Default to something hopefully sensible.Bill Wendling2009-01-311-58/+55
| | | | llvm-svn: 63473
* Remove unused overload of GetFunctionType.Daniel Dunbar2009-01-312-16/+3
| | | | llvm-svn: 63472
* Initialize CGFunctionInfo isVariadic bit correctly.Daniel Dunbar2009-01-311-2/+4
| | | | llvm-svn: 63471
* Use target alignment API to set objc2's meta-dataFariborz Jahanian2009-01-311-13/+20
| | | | | | alignment. llvm-svn: 63470
* Simplify and generalize the SROA "convert to scalar" transformation toChris Lattner2009-01-315-325/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | be able to handle *ANY* alloca that is poked by loads and stores of bitcasts and GEPs with constant offsets. Before the code had a number of annoying limitations and caused it to miss cases such as storing into holes in structs and complex casts (as in bitfield-sroa) where we had unions of bitfields etc. This also handles a number of important cases that are exposed due to the ABI lowering stuff we do to pass stuff by value. One case that is pretty great is that we compile 2006-11-07-InvalidArrayPromote.ll into: define i32 @func(<4 x float> %v0, <4 x float> %v1) nounwind { %tmp10 = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %v1) %tmp105 = bitcast <4 x i32> %tmp10 to i128 %tmp1056 = zext i128 %tmp105 to i256 %tmp.upgrd.43 = lshr i256 %tmp1056, 96 %tmp.upgrd.44 = trunc i256 %tmp.upgrd.43 to i32 ret i32 %tmp.upgrd.44 } which turns into: _func: subl $28, %esp cvttps2dq %xmm1, %xmm0 movaps %xmm0, (%esp) movl 12(%esp), %eax addl $28, %esp ret Which is pretty good code all things considering :). One effect of this is that SROA will start generating arbitrary bitwidth integers that are a multiple of 8 bits. In the case above, we got a 256 bit integer, but the codegen guys assure me that it can handle the simple and/or/shift/zext stuff that we're doing on these operations. This addresses rdar://6532315 llvm-svn: 63469
* Move CurDebugLoc into SelectionDAGLowering.Dale Johannesen2009-01-313-228/+233
| | | | llvm-svn: 63468
* Err, unbreak my previous "no functionality change commit", will fix properly ↵Daniel Dunbar2009-01-311-1/+1
| | | | | | later. llvm-svn: 63467
* Kill off CGCallInfo, always use CGFunctionInfo for encapsulatingDaniel Dunbar2009-01-316-53/+26
| | | | | | function/call info. llvm-svn: 63466
* Update checker build.Ted Kremenek2009-01-311-1/+1
| | | | llvm-svn: 63464
* back out my previous change, it exposes a latent bug. investigatingGabor Greif2009-01-311-5/+4
| | | | llvm-svn: 63463
* Add sema support for the cleanup attribute.Anders Carlsson2009-01-315-2/+73
| | | | llvm-svn: 63462
* class meta-data belong to __objc_data section (in objc2Fariborz Jahanian2009-01-311-1/+1
| | | | | | nonfragile abi). llvm-svn: 63461
* Recognize class's visibility attribute and set its linkageFariborz Jahanian2009-01-311-6/+18
| | | | | | to private extern (in objc2 nonfragile abi). llvm-svn: 63460
* use precise accessorsGabor Greif2009-01-311-4/+5
| | | | llvm-svn: 63459
* Propagate debug info in LegalizeFloatTypes.Dale Johannesen2009-01-312-62/+74
| | | | | | Complete (modulo bugs). llvm-svn: 63458
* Propagate debug info. This file completeDale Johannesen2009-01-311-201/+255
| | | | | | (modulo bugs) llvm-svn: 63457
* Propagate debug info through MakeLibCall and aDale Johannesen2009-01-314-64/+81
| | | | | | couple of things that use it. llvm-svn: 63456
* x86_64 ABI: Retool classification to compute lo & hi classificationsDaniel Dunbar2009-01-311-79/+86
| | | | | | | | in terms of where the type resides in the containing object. This is a more clear embodiement of the spec & fixes a merging issue with unions. Down to 3/1000 failures. llvm-svn: 63455
* More DebugLoc propagation.Bill Wendling2009-01-301-87/+120
| | | | llvm-svn: 63454
* Missed another mis-alignment of an objc2 meta-data.Fariborz Jahanian2009-01-301-1/+1
| | | | llvm-svn: 63453
* More DebugLoc propagation.Bill Wendling2009-01-301-43/+62
| | | | llvm-svn: 63452
* More DebugLoc propagation in LOAD etc. methods.Bill Wendling2009-01-301-26/+42
| | | | llvm-svn: 63451
* Improve our handling of the second step in a user-defined conversionDouglas Gregor2009-01-305-17/+83
| | | | | | | | | | | | | | sequence. Previously, we weren't permitting the second step to call copy constructors, which left user-defined conversion sequences surprisingly broken. Now, we perform overload resolution among all of the constructors, but only accept the result if it makes the conversion a standard conversion. Note that this behavior is different from both GCC and EDG (which don't agree with each other, either); I've submitted a core issue on the matter. llvm-svn: 63450
* Fix typo noticed by Chris.Anders Carlsson2009-01-302-2/+2
| | | | llvm-svn: 63449
* Fix build on case-sensitive filesystems (i.e. everybody else)Dale Johannesen2009-01-301-1/+1
| | | | llvm-svn: 63448
* Turn on -flax-vector-conversions by default, issue a warning whenever one is ↵Anders Carlsson2009-01-307-25/+40
| | | | | | done. Add a -fnolax-vector-conversions option. Fixes PR2862. llvm-svn: 63447
* More DebugLoc propagation in floating-point methods.Bill Wendling2009-01-301-27/+40
| | | | llvm-svn: 63446
* Setting correct alignent for objc2 meta-data.Fariborz Jahanian2009-01-301-0/+12
| | | | llvm-svn: 63445
* Make LowerCallTo and LowerArguments take a DebugLocDale Johannesen2009-01-3017-53/+83
| | | | | | argument. Adjust all callers and overloaded versions. llvm-svn: 63444
* Standardize comments about folding xforms.Bill Wendling2009-01-301-10/+10
| | | | llvm-svn: 63443
* Get rid of the non-DebugLoc-ified getNOT() method.Bill Wendling2009-01-306-29/+15
| | | | llvm-svn: 63442
* Propagate debug loc info for some FP arithmetic methods.Bill Wendling2009-01-301-13/+13
| | | | llvm-svn: 63441
OpenPOWER on IntegriCloud