Torok Edwin
49b1d3e3cc
If user explicitly asks not to use SSE, don't force it. This fixes LLVM part of PR3402.
...
llvm-svn: 62967
2009-01-25 17:58:56 +00:00
Dan Gohman
15770b411b
Eliminate the loop that searches through each of the operands
...
of each use in the SelectionDAG ReplaceAllUses* functions. Thanks
to Chris for spotting this opportunity.
Also, factor out code from all 5 of the ReplaceAllUses* functions
into AddNonLeafNodeToCSEMaps, which is now renamed
AddModifiedNodeToCSEMaps to more accurately reflect its purpose.
llvm-svn: 62964
2009-01-25 16:29:12 +00:00
Dan Gohman
1302160ad4
Whitespace tidiments.
...
llvm-svn: 62963
2009-01-25 16:21:38 +00:00
Dan Gohman
1de7d569cf
Move the N->use_empty() assert from DeleteNode to
...
DeleteNodeNotInCSEMaps, since DeleteNode just calls
DeleteNodeNotInCSEMaps.
llvm-svn: 62962
2009-01-25 16:20:37 +00:00
Nick Lewycky
4b9d56801b
Start generating arbitrary precision integer SCEVs. This removes the temporary
...
code that rounded up and capped the size.
llvm-svn: 62958
2009-01-25 08:16:27 +00:00
Nick Lewycky
459667b48d
The function that does nothing but call malloc is noalias return.
...
llvm-svn: 62956
2009-01-25 07:59:57 +00:00
Evan Cheng
71ca3e2bdb
Private linkage support for PPC / Darwin.
...
llvm-svn: 62955
2009-01-25 06:32:01 +00:00
Evan Cheng
4ebe9b79fa
Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
...
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1028
%reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>
In this case, it might not be possible to coalesce the second MOV8rr
instruction if the first one is coalesced. So it would be profitable to
commute it:
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1029
%reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>
llvm-svn: 62954
2009-01-25 03:53:59 +00:00
Nate Begeman
48f3fe9199
Fix an indent and a typo.
...
llvm-svn: 62940
2009-01-24 22:12:48 +00:00
Dale Johannesen
b818fa1bd3
Revert previous change; even this mild and clearly
...
more accurate change loses more than it gains on
benchmarks.
llvm-svn: 62938
2009-01-24 21:49:34 +00:00
Torok Edwin
6dd79be128
add note about possible GEP improvement with fields of size 0.
...
llvm-svn: 62925
2009-01-24 19:30:25 +00:00
Torok Edwin
2a7e7066b3
testcase for PR3381.
...
Also it was an empty struct, not a void after all.
llvm-svn: 62920
2009-01-24 17:16:04 +00:00
Torok Edwin
726354d4ce
void* is represented as pointer to empty struct {}.
...
Thus we need to check whether the struct is empty before trying to index into
it. This fixes PR3381.
llvm-svn: 62918
2009-01-24 11:30:49 +00:00
Owen Anderson
78b6a961bb
Some cleanups. No functional changes.
...
llvm-svn: 62917
2009-01-24 10:07:43 +00:00
Dale Johannesen
1867040e00
Improve the inlining cost function a bit.
...
Little practical effect.
llvm-svn: 62908
2009-01-24 01:27:33 +00:00
Chris Lattner
d386e82ec9
Make InstCombineStoreToCast handle aggregates more aggressively,
...
handling the case in Transforms/InstCombine/cast-store-gep.ll, which
is a heavily reduced testcase from Clang on x86-64.
llvm-svn: 62904
2009-01-24 01:00:13 +00:00
Evan Cheng
93b798e690
Refactor code. No functionality change.
...
llvm-svn: 62893
2009-01-23 23:27:33 +00:00
Devang Patel
d980abaae2
Introduce two DWARF attribute extentions DW_AT_APPLE_optimized, DW_AT_APPLE_flags.
...
DW_AT_APPLE_optimized flag is set when a compile_unit is optimized. The debugger takes advantage of this information some way.
DW_AT_APPLE_flags encodes command line options when certain env. variable is set. This is used by build engineers to track various gcc command lines used by by a project, irrespective of whether the project used makefile, Xcode or something else.
llvm-gcc patch is next.
llvm-svn: 62888
2009-01-23 22:33:47 +00:00
Chris Lattner
97b6f6a674
hopefully address PR3379 by making the P modifier work in x86 inline asm.
...
llvm-svn: 62887
2009-01-23 22:33:40 +00:00
Gabor Greif
2d7bf2a76c
use CallSite::isCalle instead of slow getOperandNo
...
llvm-svn: 62877
2009-01-23 21:17:04 +00:00
Gabor Greif
fbd40904c1
Simplify the logic of getting hold of a PHI predecessor block.
...
There is now a direct way from value-use-iterator to incoming block in PHINode's API.
This way we avoid the iterator->index->iterator trip, and especially the costly
getOperandNo() invocation. Additionally there is now an assertion that the iterator
really refers to one of the PHI's Uses.
llvm-svn: 62869
2009-01-23 19:40:15 +00:00
Nate Begeman
4de6ffb743
Add support for deleting a module provider from a JIT in such a way that it does not cause the owned module to be fully materialized.
...
llvm-svn: 62864
2009-01-23 19:27:28 +00:00
Devang Patel
37b2017172
Empty DIType represents void. In this case no need to construct any type DIE.
...
llvm-svn: 62861
2009-01-23 19:13:31 +00:00
Dan Gohman
c971f3cf5b
Fold x-0 to x in unsafe-fp-math mode. This comes up in the
...
testcase from PR3376, and in fact is sufficient to completely
avoid the problem in that testcase.
There's an underlying problem though; TLI.isOperationLegal
considers Custom to be Legal, which might be ok in some
cases, but that's what DAGCombiner is using in many places
to test if something is legal when LegalOperations is true.
When DAGCombiner is running after legalize, this isn't
sufficient. I'll address this in a separate commit.
llvm-svn: 62860
2009-01-23 19:10:37 +00:00
Chris Lattner
b36503c31b
fix two more cases where we could let the NLPDI cache get unsorted.
...
With this, sqlite3 now passes.
llvm-svn: 62839
2009-01-23 07:12:16 +00:00
Chris Lattner
1dc435cdc7
Unconditionally reset 'cache' to zero, even if we don't need to resort it.
...
This avoids using a dangling pointer.
Reset NumSortedEntries after restoring Cache to avoid extraneous sorts.
This fixes the reduced sqlite3 testcase, but apparently not the whole app.
llvm-svn: 62838
2009-01-23 06:48:41 +00:00
Evan Cheng
8ef6b2d75e
Only check if coalescing is worthwhile when the result is targeting a more restrictive register class.
...
llvm-svn: 62837
2009-01-23 05:48:59 +00:00
Owen Anderson
8c41157459
Stage two of fixing pre-alloc-splitting's code size issues: filter out restores that are just
...
going to be re-spilled again.
This also helps performance. Pre-alloc-splitting now seems to be an overall win on SPEC.
llvm-svn: 62834
2009-01-23 03:28:53 +00:00
Evan Cheng
7cdc6e4f8c
Cross register class coalescing. Not yet enabled.
...
llvm-svn: 62832
2009-01-23 02:15:19 +00:00
Devang Patel
86e54f5636
Code did not follow associated comment. not a good idea.
...
llvm-svn: 62828
2009-01-23 01:25:58 +00:00
Devang Patel
b638679d9d
Set appropriate tag for the composite type.
...
llvm-svn: 62827
2009-01-23 01:19:09 +00:00
Chris Lattner
f2adaaa0fc
a minor tweak to my previous patch, handle the invalidation case
...
when there are multiple iterations of the loop. This fixes PR3375.
llvm-svn: 62822
2009-01-23 00:27:03 +00:00
Owen Anderson
b9426381f3
Add an initial pass at dead spill/restore removal for pre alloc splitting.
...
llvm-svn: 62821
2009-01-23 00:23:32 +00:00
Chris Lattner
c843f0f484
do not sign extend characters input to isprint. This improves
...
compatibility with VC++. Patch by Max Burke!
llvm-svn: 62813
2009-01-22 23:38:45 +00:00
Bob Wilson
d79e684d1e
Fix a minor bug in DAGCombiner's folding of SELECT. Folding "select C, 0, 1"
...
to "C ^ 1" is only valid when C is known to be either 0 or 1. Most of the
similar foldings in this function only handle "i1" types, but this one appears
intentionally written to handle larger integer types. If C has an integer
type larger than "i1", this needs to check if the high bits of a boolean
are known to be zero. I also changed the comment to describe this folding as
"C ^ 1" instead of "~C", since that is what the code does and since the latter
would only be valid for "i1" types. The good news is that most LLVM targets
use TargetLowering::ZeroOrOneBooleanContent so this change will not disable
the optimization; the bad news is that I've been unable to come up with a
testcase to demonstrate the problem.
I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X",
since the code looks correct to me. It could be made more aggressive by not
limiting the type to "i1", but that would then require checking for
TargetLowering::ZeroOrNegativeOneBooleanContent. Similar changes could be
done for the other SELECT foldings, but it was decided to be not worth the
trouble and complexity (see e.g., r44663).
llvm-svn: 62790
2009-01-22 22:05:48 +00:00
Dan Gohman
a6e5948fce
Don't create ISD::FNEG nodes after legalize if they aren't legal.
...
Simplify x+0 to x in unsafe-fp-math mode. This avoids a bunch of
redundant work in many cases, because in unsafe-fp-math mode,
ISD::FADD with a constant is considered free to negate, so the
DAGCombiner often negates x+0 to -0-x thinking it's free, when
in reality the end result is -x, which is more expensive than x.
Also, combine x*0 to 0.
This fixes PR3374.
llvm-svn: 62789
2009-01-22 21:58:43 +00:00
Gabor Greif
d56b0a8c03
introduce a useful abstraction to find out if a Use is in the call position of an instruction
...
llvm-svn: 62788
2009-01-22 21:35:57 +00:00
Tanya Lattner
33f3303401
Revert r62553 and r62616 due to issues with portability.
...
llvm-svn: 62777
2009-01-22 20:09:20 +00:00
Chris Lattner
da545d3918
rename methods in System/Host to be more consistent.
...
llvm-svn: 62776
2009-01-22 19:53:00 +00:00
Bob Wilson
186046e657
Add SelectionDAG::getNOT method to construct bitwise NOT operations,
...
corresponding to the "not" and "vnot" PatFrags. Use the new method
in some places where it seems appropriate.
llvm-svn: 62768
2009-01-22 17:39:32 +00:00
Sanjiv Gupta
7173c05b38
Few targets like the tiny little PIC16 have only 16-bit pointers.
...
llvm-svn: 62763
2009-01-22 10:14:21 +00:00
Evan Cheng
c971801ae1
Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead.
...
llvm-svn: 62762
2009-01-22 09:10:11 +00:00
Chris Lattner
92f592ad8b
fix a typo
...
llvm-svn: 62761
2009-01-22 07:21:55 +00:00
Chris Lattner
fcf56e7fbe
add a note
...
llvm-svn: 62760
2009-01-22 07:16:03 +00:00
Chris Lattner
ddc8e78d54
Fix PR3358, a really nasty bug where recursive phi translated
...
analyses could be run without the caches properly sorted. This
can fix all sorts of weirdness. Many thanks to Bill for coming
up with the 'issorted' verification idea.
llvm-svn: 62757
2009-01-22 07:04:01 +00:00
Dan Gohman
29b575c6cd
Recognize inline asm for bswap on x86-64 GLIBC. This allows it
...
to be supported in the JIT.
llvm-svn: 62730
2009-01-21 23:40:54 +00:00
Dale Johannesen
a5699a1e8b
Do not use host floating point types when emitting
...
ASCII IR; loading and storing these can change the
bits of NaNs on some hosts. Remove or add warnings
at a few other places using host floating point;
this is a bad thing to do in general.
llvm-svn: 62712
2009-01-21 20:32:55 +00:00
Evan Cheng
43d680b0d8
Also favors NOT64r.
...
llvm-svn: 62710
2009-01-21 19:45:31 +00:00
Chris Lattner
2b6b947b4f
fix warning in release-asserts mode and spelling of assert.
...
llvm-svn: 62699
2009-01-21 18:38:18 +00:00
Chris Lattner
b4ffb1f824
add getPointerToGlobal to the C bindings, patch by Lennart Augustsson!
...
PR3364
llvm-svn: 62697
2009-01-21 18:11:10 +00:00
Chris Lattner
ca83aa289a
Remove uses of uint32_t in favor of 'unsigned' for better
...
compatibility with cygwin. Patch by Jay Foad!
llvm-svn: 62695
2009-01-21 18:09:24 +00:00
Dan Gohman
d021a20409
Simplify ReduceLoadWidth's logic: it doesn't need several different
...
special cases after producing the new reduced-width load, because the
new load already has the needed adjustments built into it. This fixes
several bugs due to the special cases, including PR3317.
llvm-svn: 62692
2009-01-21 15:17:51 +00:00
Dan Gohman
704f0d5879
Fix a recent regression. ClrOpcode is not set for i8; for i8, if
...
we want to clear %ah to zero before a division, just use a
zero-extending mov to %al. This fixes PR3366.
llvm-svn: 62691
2009-01-21 14:50:16 +00:00
Mikhail Glushenkov
898af4fdfa
Mimic gcc behaviour with regard to response files.
...
llvm-svn: 62688
2009-01-21 13:14:02 +00:00
Sanjiv Gupta
ebef67f13c
Fixed build warnings. Restoring changes done in 62600, they were lost in 62655.
...
llvm-svn: 62681
2009-01-21 09:02:46 +00:00
Duncan Sands
392dc77fc6
Cleanup whitespace and comments, and tweak some
...
prototypes, in operand type legalization. No
functionality change.
llvm-svn: 62680
2009-01-21 09:00:29 +00:00
Owen Anderson
d1a2413f88
I accidentally removed this check in an earlier commit, which cause breakage in the pre alloc splitter.
...
llvm-svn: 62678
2009-01-21 08:18:03 +00:00
Sanjiv Gupta
37fdb5ca11
Implement LowerOperationWrapper for legalizer.
...
Also a few signed comparison fixes.
llvm-svn: 62665
2009-01-21 05:44:05 +00:00
Scott Michel
c80e71ac35
CellSPU:
...
- Ensure that (operation) legalization emits proper FDIV libcall when needed.
- Fix various bugs encountered during llvm-spu-gcc build, along with various
cleanups.
- Start supporting double precision comparisons for remaining libgcc2 build.
Discovered interesting DAGCombiner feature, which is currently solved via
custom lowering (64-bit constants are not legal on CellSPU, but DAGCombiner
insists on inserting one anyway.)
- Update README.
llvm-svn: 62664
2009-01-21 04:58:48 +00:00
Sanjiv Gupta
074553c4fb
Allow targets to legalize operations (with illegal operands) that produces multiple values. For example, a load with an illegal operand (a load produces two values, a value and chain).
...
llvm-svn: 62663
2009-01-21 04:48:39 +00:00
Evan Cheng
0ed6a9d7e0
Favors generating "not" over "xor -1". For example.
...
unsigned test(unsigned a) {
return ~a;
}
llvm used to generate:
movl $4294967295, %eax
xorl 4(%esp), %eax
Now it generates:
movl 4(%esp), %eax
notl %eax
It's 3 bytes shorter.
llvm-svn: 62661
2009-01-21 02:09:05 +00:00
Dale Johannesen
6854f86296
Make special cases (0 inf nan) work for frem.
...
Besides APFloat, this involved removing code
from two places that thought they knew the
result of frem(0., x) but were wrong.
llvm-svn: 62645
2009-01-21 00:35:19 +00:00
Owen Anderson
10ad717dc8
Be more aggressive about renumbering vregs after splitting them.
...
llvm-svn: 62639
2009-01-21 00:13:28 +00:00
Devang Patel
c129e798c7
Encode member accessibility.
...
llvm-svn: 62638
2009-01-21 00:08:04 +00:00
Devang Patel
bb4362571a
Appropriately mark fowrad decls.
...
llvm-svn: 62625
2009-01-20 22:27:02 +00:00
Evan Cheng
5bea79c062
Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref.
...
llvm-svn: 62617
2009-01-20 21:25:12 +00:00
Duncan Sands
eb7ffc9654
Fix typo. Patch by Alexei Svitkine.
...
llvm-svn: 62616
2009-01-20 21:20:23 +00:00
Bill Wendling
cf901346da
Use "SINT_TO_FP" instead of "UINT_TO_FP" when getting the exponent. This was
...
causing the limited precision stuff to produce the wrong result for values in
the range [0, 1).
llvm-svn: 62615
2009-01-20 21:17:57 +00:00
Devang Patel
4c79c8be26
Fix struct member's debug info.
...
llvm-svn: 62610
2009-01-20 21:02:02 +00:00
Devang Patel
ccc3162f69
Need only one set of debug info versions enum.
...
llvm-svn: 62602
2009-01-20 19:22:03 +00:00
Evan Cheng
b3c82db63d
Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.
...
llvm-svn: 62600
2009-01-20 19:12:24 +00:00
Devang Patel
10f2f03c68
Fix global variable's address in a DIE.
...
llvm-svn: 62596
2009-01-20 18:55:39 +00:00
Devang Patel
7f6ef3bdd6
Enable debug info for enums.
...
llvm-svn: 62594
2009-01-20 18:35:14 +00:00
Dale Johannesen
c9e6e85a38
Add an IEEE remainder function, which is not
...
fully implemented yet and not used. This is
mainly to clarify that APFloat::mod implements
C fmod, not remainder.
llvm-svn: 62593
2009-01-20 18:35:05 +00:00
Chris Lattner
8ab719c566
improve compatibility with various versions of graphviz, patch by
...
Patrick Boettcher!
llvm-svn: 62592
2009-01-20 18:25:03 +00:00
Chris Lattner
391f04d56e
Eliminate use of uint32_t to improve compatibility with cygwin
...
llvm-svn: 62590
2009-01-20 18:22:57 +00:00
Devang Patel
6bd9ebdef8
Enable debug info for composite types.
...
llvm-svn: 62589
2009-01-20 18:13:03 +00:00
Evan Cheng
58488a481f
Refactor code. No functionality change.
...
llvm-svn: 62573
2009-01-20 06:44:16 +00:00
Bill Wendling
5685c90e04
Shift types need to match.
...
llvm-svn: 62571
2009-01-20 06:10:42 +00:00
Chris Lattner
6ade48fcaa
another fix for PR3354
...
llvm-svn: 62561
2009-01-20 01:15:41 +00:00
Dan Gohman
7663e08915
Add a README entry noticed while investigating PR3216.
...
llvm-svn: 62558
2009-01-20 01:07:33 +00:00
Dan Gohman
ff4c4ab39f
Fix a dagcombine to not generate loads of non-round integer types,
...
as its comment says, even in the case where it will be generating
extending loads. This fixes PR3216.
llvm-svn: 62557
2009-01-20 01:06:45 +00:00
Devang Patel
6a88f8849b
Do not use DenseMap because the iterator is invalidated while constructing types. After all there was a reason why std::map was used initially!
...
llvm-svn: 62555
2009-01-20 00:58:55 +00:00
Nick Lewycky
6ef90b1a25
Make the Interpreter use libffi if it's available. Patch from Alexei Svitkine!
...
This requires a rebuild of 'configure' itself. I will be committing that next, but
built with the wrong version of autoconf. Somebody who has the right one, please update
it.
As a side-note, because of the way autoconf works, all built tools will link against
libffi, not just lli. If you know how to fix this, please let me know ...
llvm-svn: 62553
2009-01-20 00:51:40 +00:00
Evan Cheng
5ee5ba12be
Make linear scan's trivial coalescer slightly more aggressive.
...
llvm-svn: 62547
2009-01-20 00:16:18 +00:00
Bill Wendling
5281f4fb64
Doxygen-ify comments.
...
llvm-svn: 62546
2009-01-19 23:43:56 +00:00
Devang Patel
7c2157602d
Verify debug info.
...
llvm-svn: 62545
2009-01-19 23:21:49 +00:00
Chris Lattner
e8fa6f2468
Fix a problem exposed by PR3354: simplifycfg was making a potentially
...
trapping instruction be executed unconditionally.
llvm-svn: 62541
2009-01-19 23:03:13 +00:00
Dan Gohman
02b5657666
Remove SDNode's virtual destructor. This makes it impossible for
...
SDNode subclasses to keep state that requires non-trivial
destructors, however it was already effectively impossible,
since the destructor isn't actually ever called. There currently
aren't any SDNode subclasses affected by this, and in general
it's desireable to keep SDNode objects light-weight.
This eliminates the last virtual member function in the SDNode
class, so it eliminates the need for a vtable pointer, making
SDNode smaller.
llvm-svn: 62539
2009-01-19 22:39:36 +00:00
Chris Lattner
45a7b5ce57
improve compatibility with cygwin, patch by Jay Foad!
...
llvm-svn: 62535
2009-01-19 22:00:18 +00:00
Chris Lattner
8c8234435a
div/rem by zero and div/rem overflow are both undefined according to
...
langref. Constant fold them to undef instead of trying to preserve
the trap. This fixes PR3354.
llvm-svn: 62534
2009-01-19 21:55:26 +00:00
Dan Gohman
af4e583c93
Fix SelectionDAG::ReplaceAllUsesWith to behave correctly when
...
uses are added to the From node while it is processing From's
use list, because of automatic local CSE. The fix is to avoid
visiting any new uses.
Fix a few places in the DAGCombiner that assumed that after
a RAUW call, the From node has no users and may be deleted.
This fixes PR3018.
llvm-svn: 62533
2009-01-19 21:44:21 +00:00
Chris Lattner
b88febb5cd
Fix PR3353, infinitely jump threading an infinite loop make from switches.
...
llvm-svn: 62529
2009-01-19 21:20:34 +00:00
Dale Johannesen
31f3cac06b
compile-time fmod was done incorrectly. PR 3316.
...
llvm-svn: 62528
2009-01-19 21:17:05 +00:00
Devang Patel
50ac518b6c
Verify Intrinsic::dbg_declare.
...
llvm-svn: 62526
2009-01-19 21:00:48 +00:00
Evan Cheng
06cfade044
DIVREM isel deficiency: If sign bit is known zero, zero out DX/EDX/RDX instead of sign extending the low part (in AX/EAX/RAX) into it.
...
llvm-svn: 62519
2009-01-19 19:06:11 +00:00
Evan Cheng
3c00875658
Fix 80 col violations.
...
llvm-svn: 62518
2009-01-19 18:57:29 +00:00
Evan Cheng
2f50b49f22
Handle ISD::DECLARE with PIC relocation model.
...
llvm-svn: 62516
2009-01-19 18:31:51 +00:00
Nick Lewycky
b98042a414
Fix typo, sentence fragment.
...
llvm-svn: 62512
2009-01-19 17:42:33 +00:00
Bill Wendling
bf83203ae6
Temporarily revert r62487. It's causing this error during a release bootstrap of
...
llvm-gcc. Most likely, it's miscompiling one of the "gen*" programs:
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./prev-gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./prev-gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.6.0/bin/ -c -g -O2 -mdynamic-no-pic -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -mdynamic-no-pic -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/build -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -o build/gencondmd.o build/gencondmd.c
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: error: expected '}' before ')' token
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: warning: excess elements in struct initializer
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: warning: (near initialization for 'insn_conditions[4]')
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: error: expected '}' before ')' token
../../llvm-gcc.src/gcc/config/i386/mmx.md:926: error: expected ',' or ';' before ')' token
../../llvm-gcc.src/gcc/config/i386/mmx.md:927: error: expected identifier or '(' before ',' token
../../llvm-gcc.src/gcc/config/i386/sse.md:3458: error: expected identifier or '(' before ',' token
...
llvm-svn: 62506
2009-01-19 08:46:20 +00:00
Evan Cheng
a14fd26a8b
Minor tweak to LowerUINT_TO_FP_i32. Bias (after scalar_to_vector) has two uses so we should make it the second source operand of ISD::OR so 2-address pass won't have to be smart about commuting.
...
%reg1024<def> = MOVSDrm %reg0, 1, %reg0, <cp#0>, Mem:LD(8,8) [ConstantPool + 0]
%reg1025<def> = MOVSD2PDrr %reg1024
%reg1026<def> = MOVDI2PDIrm <fi#-1>, 1, %reg0, 0, Mem:LD(4,16) [FixedStack-1 + 0]
%reg1027<def> = ORPSrr %reg1025<kill>, %reg1026<kill>
%reg1028<def> = MOVPD2SDrr %reg1027<kill>
%reg1029<def> = SUBSDrr %reg1028<kill>, %reg1024<kill>
%reg1030<def> = CVTSD2SSrr %reg1029<kill>
MOVSSmr <fi#0>, 1, %reg0, 0, %reg1030<kill>, Mem:ST(4,4) [FixedStack0 + 0]
%reg1031<def> = LD_Fp32m80 <fi#0>, 1, %reg0, 0, Mem:LD(4,16) [FixedStack0 + 0]
RET %reg1031<kill>, %ST0<imp-use,kill>
The reason 2-addr pass isn't smart enough to commute the ORPSrr is because it can't look pass the MOVSD2PDrr instruction.
llvm-svn: 62505
2009-01-19 08:19:57 +00:00
Evan Cheng
53e83a2eb9
Now not UINT_TO_FP is legal (it's marked custom), dag combiner won't
...
optimize it to a SINT_TO_FP when the sign bit is known zero. X86 isel should perform the optimization itself.
llvm-svn: 62504
2009-01-19 08:08:22 +00:00
Chris Lattner
bb76cc9447
Fix PR3016, a bug which can occur do to an invalid assumption:
...
we assumed a CFG structure that would be valid when all code in
the function is reachable, but not all code is necessarily
reachable. Do a simple, but horrible, CFG walk to check for this
case.
llvm-svn: 62487
2009-01-19 02:46:28 +00:00
Chris Lattner
af6f58bbf4
reduce indentation by using 'continue', no functionality change.
...
llvm-svn: 62477
2009-01-19 02:07:32 +00:00
Chris Lattner
c03b442e54
Fix some problems in SpeculativelyExecuteBB. Basically,
...
because of dead code, a phi could use the speculated instruction
that was not in "BB2". Make this check explicit and tighten up
some other corners. This fixes PR3292. No testcase becauase this
depends entirely on visitation order of blocks and requires a
sequence of 8 passes to repro.
llvm-svn: 62476
2009-01-19 00:36:37 +00:00
Chris Lattner
ead19aaccb
Make this a bit more explicit about which cases need the
...
check. No functionality change.
llvm-svn: 62474
2009-01-18 23:22:07 +00:00
Chris Lattner
6f03811071
Fix rdar://6505632, an llc crash on 483.xalancbmk
...
llvm-svn: 62470
2009-01-18 20:35:00 +00:00
Sanjiv Gupta
5a5af71ca2
Few targets like PIC16 wants libcall generation for illegal type i16.
...
llvm-svn: 62467
2009-01-18 18:25:27 +00:00
Oscar Fuentes
fae323d3f2
CMake: Add lib/Analysis/CaptureTracking.cpp
...
llvm-svn: 62462
2009-01-18 13:14:11 +00:00
Duncan Sands
ddfeabbab7
BasicAliasAnalysis and FunctionAttrs were both
...
doing very similar pointer capture analysis.
Factor out the common logic. The new version
is from FunctionAttrs since it does a better
job than the version in BasicAliasAnalysis
llvm-svn: 62461
2009-01-18 12:19:30 +00:00
Mon P Wang
27ea1af89f
Simplify extract element based on comments from Duncan Sands.
...
llvm-svn: 62459
2009-01-18 06:43:40 +00:00
Nick Lewycky
39fcb513ca
Fix copy and pasted typos that prevented strtok_r, realloc, getenv, ungetc,
...
putc, puts, perror, vscanf and vsscanf from getting annotations.
Add annotations for eight printf functions, memalign, pread and pwrite.
On Linux, llvm-gcc sometimes renames strdup, getc, putc, strtok_r, scanf and
sscanf. Match the alternate function names.
Fix a crash annotating opendir.
Don't mark fsetpos's second parameter as nocapture. It's supposed to be
captured.
Do mark fopen's path and mode strings as nocapture. Mark ferror as readonly,
but not fileno which may set errno.
llvm-svn: 62456
2009-01-18 04:34:36 +00:00
Gabor Greif
6a02ecbd29
add a comment
...
llvm-svn: 62436
2009-01-18 00:27:21 +00:00
Gabor Greif
5608ce587b
switch over some other methods from indices to iterators
...
llvm-svn: 62430
2009-01-17 19:46:01 +00:00
Devang Patel
4a7a53217b
Remove tabs.
...
llvm-svn: 62423
2009-01-17 08:05:14 +00:00
Devang Patel
97cd6a4a7c
Refactor code
...
llvm-svn: 62421
2009-01-17 08:01:33 +00:00
Bill Wendling
ce30a8cab9
Extend thi
...
llvm-svn: 62415
2009-01-17 07:40:19 +00:00
Evan Cheng
182d9c4c9f
Fix MatchAddress bug that's preventing negative displacement from being folded in 64-bit mode.
...
llvm-svn: 62413
2009-01-17 07:09:27 +00:00
Devang Patel
2fc394ddfd
Assign argument type to appropriate DIE.
...
llvm-svn: 62412
2009-01-17 06:57:25 +00:00
Devang Patel
24e250ee74
Remove dead code.
...
llvm-svn: 62410
2009-01-17 06:51:37 +00:00
Devang Patel
732220a09f
Disable composite type debug info for now.
...
llvm-svn: 62406
2009-01-17 05:05:12 +00:00
Bill Wendling
ddd55bdfec
Temporarily revert my last change. It is causing a bootstrap failure.
...
llvm-svn: 62405
2009-01-17 04:23:51 +00:00
Bill Wendling
d18c38c0f2
Implement a special algorithm for converting uint_to_fp for i32 values on
...
X86. This code:
void f() {
uint32_t x;
float y = (float)x;
}
used to be:
movl %eax, -8(%ebp)
movl [2^52 double], -4(%ebp)
movsd -8(%ebp), %xmm0
subsd [2^52 double], %xmm0
cvtsd2ss %xmm0, %xmm0
Is now:
movsd [2^52 double], %xmm0
movsd %xmm0, %xmm1
movd %ecx, %xmm2
orps %xmm2, %xmm1
subsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm0
This is faster on X86. Note that there's an extra load of %xmm0 into %xmm1. That
will be fixed in a later coalescer fix.
llvm-svn: 62404
2009-01-17 03:56:04 +00:00
Oscar Fuentes
ee36d9ce83
CMake: Add lib/Target/IA64/IA64Subtarget.cpp
...
llvm-svn: 62394
2009-01-17 01:50:32 +00:00
Gabor Greif
c379e7909b
speed up iterative loop by using iterators. changes direction, but functionally equivalent
...
if this works out, I'll change the others next.
llvm-svn: 62385
2009-01-17 00:14:25 +00:00
Gabor Greif
20f36c51bd
introduce typedef for complicated vector, and use it too
...
llvm-svn: 62384
2009-01-17 00:09:08 +00:00
Mon P Wang
563134282c
Simplify extract element of a scalar to vector.
...
llvm-svn: 62383
2009-01-17 00:07:25 +00:00
Gabor Greif
0d0908d06a
typo
...
llvm-svn: 62377
2009-01-16 23:08:50 +00:00
Evan Cheng
d7cc550900
Fix PPC ISD::Declare isel and eliminate the need for PPCTargetLowering::LowerGlobalAddress to check if isVerifiedDebugInfoDesc() is true. Given the recent changes, it would falsely return true for a lot of GlobalAddressSDNode's.
...
llvm-svn: 62373
2009-01-16 22:57:32 +00:00
Mikhail Glushenkov
b0aa02acee
Support for multi-valued options in CommandLine
...
Makes possible to specify options that take multiple arguments (a-la
-sectalign on Darwin). See documentation for details.
llvm-svn: 62372
2009-01-16 22:54:19 +00:00
Dan Gohman
cb207179b1
Give IA64 a TargetSubtarget subclass, so that it can
...
implement getSubtargetImpl.
llvm-svn: 62369
2009-01-16 22:49:36 +00:00
Dan Gohman
3d0633627d
Instead of adding dependence edges between terminator instructions
...
and every other instruction in their blocks to keep the terminator
instructions at the end, teach the post-RA scheduler how to operate
on ranges of instructions, and exclude terminators from the range
of instructions that get scheduled.
Also, exclude mid-block labels, such as EH_LABEL instructions, and
schedule code before them separately from code after them. This
fixes problems with the post-RA scheduler moving code past
EH_LABELs.
llvm-svn: 62366
2009-01-16 22:10:20 +00:00
Dan Gohman
9636e74701
If an anti-dependence uses a non-allocatable register, set AntiDepReg
...
to 0, to ensure that the subsequent code doesn't try to break the
dependence.
llvm-svn: 62365
2009-01-16 21:57:43 +00:00
Dan Gohman
4dc9f47c97
Use the getNode() accessor instead of accessing the Node
...
member directly, which is private as of r55504.
llvm-svn: 62364
2009-01-16 21:47:21 +00:00
Dan Gohman
733d817b4d
Fix the check for an empty basic block to check for an empty SUnits
...
array instead, since this is what the scheduler actually cares about.
And remove a check that is unnecessary, since it can assume that
SUnits isn't empty.
llvm-svn: 62362
2009-01-16 21:37:14 +00:00
Chris Lattner
cfaf556999
new nodes should be added to the worklist, not old nodes.
...
llvm-svn: 62359
2009-01-16 21:15:56 +00:00
Devang Patel
9ecd23c14d
Fix comments.
...
llvm-svn: 62358
2009-01-16 21:07:53 +00:00
Evan Cheng
c4d19d6e8c
CreateVirtualRegisters does trivial copy coalescing. If a node def is used by a single CopyToReg, it reuses the virtual register assigned to the CopyToReg. This won't work for SDNode that is a clone or is itself cloned. Disable this optimization for those nodes or it can end up with non-SSA machine instructions.
...
llvm-svn: 62356
2009-01-16 20:57:18 +00:00
Chris Lattner
0354d30311
don't assert and die on out of range (undefined) shifts. This fixes
...
PR3334.
llvm-svn: 62352
2009-01-16 20:17:02 +00:00
Chris Lattner
5d1ed9ed1f
Fix PR3335 by not turning a store to one address space into a store to another.
...
llvm-svn: 62351
2009-01-16 20:12:52 +00:00
Chris Lattner
59dfd7d4af
reduce indentation by using early exits, no functionality change.
...
llvm-svn: 62350
2009-01-16 20:08:59 +00:00
Devang Patel
6f83d4b68f
Use lightweight DebugInfo objects directly.
...
llvm-svn: 62341
2009-01-16 19:28:14 +00:00
Bill Wendling
c9e856fbfd
Add support for non-zero __builtin_return_address values on X86.
...
llvm-svn: 62338
2009-01-16 19:25:27 +00:00
Evan Cheng
2932869ed4
Change isGVCompilationDisabled() semantics again. It should abort on any GV that's not constant whether it's "internal" or not. In a server / client environment, GV is returned in the same block of memory as code. However, the memory might not be writable.
...
llvm-svn: 62336
2009-01-16 19:14:49 +00:00
Gabor Greif
34a28dbecf
use specialized accessor instead of plain getOperand(0)
...
llvm-svn: 62330
2009-01-16 18:40:27 +00:00
Devang Patel
627bb2afb9
Align source code.
...
llvm-svn: 62328
2009-01-16 18:01:58 +00:00
Dan Gohman
e4265cdbb9
Fix a "comparison between signed and unsigned integer expressions"
...
warning.
llvm-svn: 62327
2009-01-16 17:55:08 +00:00
Nick Lewycky
3f81059a01
Reinstate r60509 from Dale:
...
Make the debugging dump be a full line.
llvm-svn: 62325
2009-01-16 17:07:22 +00:00
Mikhail Glushenkov
49be18cfc6
Registry.h should not depend on CommandLine.h.
...
Split Support/Registry.h into two files so that we have less to
recompile every time CommandLine.h is changed.
llvm-svn: 62312
2009-01-16 07:02:28 +00:00
Mikhail Glushenkov
5000223556
Delete trailing whitespace.
...
llvm-svn: 62307
2009-01-16 06:53:46 +00:00