Dale Johannesen
9888edee10
Fill in more omissions in DebugLog propagation.
...
I think that's it for this directory.
llvm-svn: 63690
2009-02-04 00:13:36 +00:00
Bill Wendling
0b4403f9bd
Constify and don't return a reference.
...
llvm-svn: 63689
2009-02-04 00:05:34 +00:00
Dale Johannesen
3a09f5589d
DebugLoc propagation; adjustment to things omitted
...
from SelectionDagBuild.
llvm-svn: 63680
2009-02-03 23:04:43 +00:00
Bill Wendling
77b3be8ea3
Erm. Would be nice to initialize this variable. . .
...
llvm-svn: 63677
2009-02-03 22:55:54 +00:00
Bill Wendling
2c0a4fe4e2
Add getDebugLocTuple to retrieve the DebugLocTuple for a given DebugLoc object.
...
llvm-svn: 63676
2009-02-03 22:49:58 +00:00
Dale Johannesen
abf66b8343
Add some DL propagation to places that didn't
...
have it yet. More coming.
llvm-svn: 63673
2009-02-03 22:26:09 +00:00
Bill Wendling
dd7fa33679
More whitespace fixin'.
...
llvm-svn: 63663
2009-02-03 21:38:21 +00:00
Bill Wendling
eaf02df7b4
Whitespace and comment changes. No functionality change.
...
llvm-svn: 63660
2009-02-03 21:17:20 +00:00
Devang Patel
9c7c0db37a
Remove dead code.
...
llvm-svn: 63653
2009-02-03 19:46:28 +00:00
Dan Gohman
d564353193
Change the post-RA scheduler to iterate through the
...
basic-block segments bottom-up instead of top down. This
is the first step in a general restructuring of the way
register liveness is tracked in the post-RA scheduler.
llvm-svn: 63643
2009-02-03 18:57:45 +00:00
Devang Patel
70da8e8425
First initialize DAG otherwise dwarf writer is used uninitialized.
...
Duncan spotted this. Thanks!
llvm-svn: 63641
2009-02-03 18:46:32 +00:00
Duncan Sands
a77c5f758c
Fix PR3411. When replacing values, nodes are analyzed
...
in any old order. Since analyzing a node analyzes its
operands also, this can mean that when we pop a node
off the list of nodes to be analyzed, it may already
have been analyzed.
llvm-svn: 63632
2009-02-03 10:23:33 +00:00
Bill Wendling
67cd395d45
Explicitly pass in debug location information to BuildMI.
...
llvm-svn: 63599
2009-02-03 02:29:34 +00:00
Bill Wendling
135227a060
Pass in something sensible for the debug location information when creating the
...
initial PHI nodes of the machine function.
llvm-svn: 63598
2009-02-03 02:20:52 +00:00
Dale Johannesen
db39362c90
Fill in some missing DL propagation in getNode()s.
...
llvm-svn: 63595
2009-02-03 01:55:44 +00:00
Bill Wendling
143a2c3470
Use SDL->getCurDebugLoc() instead of unknown loc for landing pads.
...
llvm-svn: 63594
2009-02-03 01:55:42 +00:00
Bill Wendling
fa50a23f8a
Explicitly pass in the "unknown" debug location. This is probably not
...
correct. We need more infrastructure before we can get the DebugLoc info for
these instructions.
llvm-svn: 63593
2009-02-03 01:33:28 +00:00
Bill Wendling
9862a64419
Alphabetize includes.
...
llvm-svn: 63591
2009-02-03 01:32:22 +00:00
Bill Wendling
17450acc3b
Propagate debug loc info during SDNode -> machine instr creation.
...
llvm-svn: 63585
2009-02-03 01:02:39 +00:00
Bill Wendling
e3c78361d3
Create DebugLoc information in FastISel. Several temporary methods were
...
created. Specifically, those BuildMIs which use
"DebugLoc::getUnknownLoc()". I'll remove them soon.
llvm-svn: 63584
2009-02-03 00:55:04 +00:00
Dale Johannesen
f1163e9a4d
Propagation in TargetLowering. Includes passing a DL
...
into SimplifySetCC which gets called elsewhere.
llvm-svn: 63583
2009-02-03 00:47:48 +00:00
Dan Gohman
76a07f59d4
Use the SubclassData field to hold ExtType, isTrunc, and MemIndexedMode
...
information. This eliminates the need for the Flags field in MemSDNode,
so this makes LoadSDNode and StoreSDNode smaller. Also, it makes
FoldingSetNodeIDs for loads and stores two AddIntegers smaller.
llvm-svn: 63577
2009-02-03 00:08:45 +00:00
Dale Johannesen
72ba6df1a9
Last DebugLoc propagation for this file.
...
llvm-svn: 63574
2009-02-02 23:46:53 +00:00
Dale Johannesen
b5dd922a92
More DebugLoc propagation. This should be everything
...
except LegalizeOp itself.
llvm-svn: 63560
2009-02-02 22:49:46 +00:00
Owen Anderson
4eda2cbe5f
MergeValueInto is too smart: it might choose to do the merge the opposite direction.
...
Live interval reconstruction needs to account for this, and scour its maps to
prevent dangling references.
llvm-svn: 63558
2009-02-02 22:42:01 +00:00
Dale Johannesen
a02e45ca19
DebugLoc propagation. ExpandOp and PromoteOp,
...
among others.
llvm-svn: 63555
2009-02-02 22:12:50 +00:00
Dale Johannesen
ae7992a333
Commit missing files.
...
llvm-svn: 63545
2009-02-02 20:47:48 +00:00
Dale Johannesen
ad00f6e010
More DebugLoc propagation.
...
llvm-svn: 63543
2009-02-02 20:41:04 +00:00
Duncan Sands
dab7be8774
Remove trailing spaces.
...
llvm-svn: 63540
2009-02-02 19:46:41 +00:00
Dale Johannesen
8525d83aac
DebugLoc propagation for int<->fp conversions.
...
llvm-svn: 63537
2009-02-02 19:03:57 +00:00
Evan Cheng
03f862579c
Refactor PerformPHIConstruction, no functionality changes.
...
llvm-svn: 63536
2009-02-02 18:33:18 +00:00
Devang Patel
97ba824ad9
Do not add redundant arguments in a method definition DIE.
...
llvm-svn: 63527
2009-02-02 17:51:41 +00:00
Sanjiv Gupta
8e56d1898b
Duncan's patch. Further to 64382. Takes care of illegal types for shift amount.
...
llvm-svn: 63523
2009-02-02 17:19:39 +00:00
Mon P Wang
cc866c955c
Preserve more SourceValue information.
...
llvm-svn: 63498
2009-02-02 06:37:55 +00:00
Duncan Sands
3ed768868d
Fix PR3453 and probably a bunch of other potential
...
crashes or wrong code with codegen of large integers:
eliminate the legacy getIntegerVTBitMask and
getIntegerVTSignBit methods, which returned their
value as a uint64_t, so couldn't handle huge types.
llvm-svn: 63494
2009-02-01 18:06:53 +00:00
Bill Wendling
a6c75ffd73
Forgot some more DebugLoc propagations.
...
llvm-svn: 63493
2009-02-01 11:19:36 +00:00
Owen Anderson
19616c08a0
Fix test failures causes by my previous commit.
...
llvm-svn: 63492
2009-02-01 08:41:54 +00:00
Owen Anderson
66838e9a27
Fix an issue in PHI construction that was exposed by GCC 4.2 producing a different set iteration order for the reg_iterator.
...
llvm-svn: 63490
2009-02-01 07:06:00 +00:00
Dale Johannesen
dfbb6a1a9a
DebugLoc propagation.
...
llvm-svn: 63488
2009-01-31 22:04:51 +00:00
Dale Johannesen
5f98ea28ca
DebugLoc propagation. Done with file.
...
llvm-svn: 63486
2009-01-31 21:04:24 +00:00
Dale Johannesen
4d9fa9e71d
DebugLoc propagation. Done with file.
...
llvm-svn: 63485
2009-01-31 20:01:02 +00:00
Duncan Sands
41826036b1
Fix PR3401: when using large integers, the type
...
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
2009-01-31 15:50:11 +00:00
Mon P Wang
cf9ba82324
If unsafe FP optimization is not set, don't allow -(A-B) => B-A because
...
when A==B, -0.0 != +0.0.
llvm-svn: 63474
2009-01-31 06:07:45 +00:00
Bill Wendling
3b585af0ec
Don't use DebugLoc::getUnknownLoc(). Default to something hopefully sensible.
...
llvm-svn: 63473
2009-01-31 03:12:48 +00:00
Dale Johannesen
db7c5f6a7b
Move CurDebugLoc into SelectionDAGLowering.
...
llvm-svn: 63468
2009-01-31 02:22:37 +00:00
Dale Johannesen
dc0f124429
Propagate debug info in LegalizeFloatTypes.
...
Complete (modulo bugs).
llvm-svn: 63458
2009-01-31 00:43:08 +00:00
Dale Johannesen
42aa385e20
Propagate debug info. This file complete
...
(modulo bugs)
llvm-svn: 63457
2009-01-31 00:20:43 +00:00
Dale Johannesen
c910889511
Propagate debug info through MakeLibCall and a
...
couple of things that use it.
llvm-svn: 63456
2009-01-31 00:11:23 +00:00
Bill Wendling
31b50991cb
More DebugLoc propagation.
...
llvm-svn: 63454
2009-01-30 23:59:18 +00:00
Bill Wendling
27d9dd4b57
More DebugLoc propagation.
...
llvm-svn: 63452
2009-01-30 23:36:47 +00:00
Bill Wendling
306bfc2213
More DebugLoc propagation in LOAD etc. methods.
...
llvm-svn: 63451
2009-01-30 23:27:35 +00:00
Bill Wendling
0bd29743e3
More DebugLoc propagation in floating-point methods.
...
llvm-svn: 63446
2009-01-30 23:15:49 +00:00
Dale Johannesen
555a375bb6
Make LowerCallTo and LowerArguments take a DebugLoc
...
argument. Adjust all callers and overloaded versions.
llvm-svn: 63444
2009-01-30 23:10:59 +00:00
Bill Wendling
6fbf5495f8
Standardize comments about folding xforms.
...
llvm-svn: 63443
2009-01-30 23:10:18 +00:00
Bill Wendling
8fb81f1b3d
Get rid of the non-DebugLoc-ified getNOT() method.
...
llvm-svn: 63442
2009-01-30 23:03:19 +00:00
Bill Wendling
3dc5d2454e
Propagate debug loc info for some FP arithmetic methods.
...
llvm-svn: 63441
2009-01-30 22:57:07 +00:00
Bill Wendling
cb9be5d174
Propagate debug loc info for some FP arithmetic methods.
...
llvm-svn: 63440
2009-01-30 22:53:48 +00:00
Bill Wendling
4e0a61514b
Propagate debug loc info for BIT_CONVERT.
...
llvm-svn: 63439
2009-01-30 22:44:24 +00:00
Bill Wendling
7bfa43b022
Propagate debug loc info for more *_EXTEND methods.
...
llvm-svn: 63437
2009-01-30 22:33:24 +00:00
Bill Wendling
9b3dc8d848
Propagate debug loc info for ANY_EXTEND.
...
llvm-svn: 63436
2009-01-30 22:27:33 +00:00
Bill Wendling
c409318562
Propagate debug loc info for some of the *_EXTEND functions.
...
llvm-svn: 63434
2009-01-30 22:23:15 +00:00
Bill Wendling
cab9a2eef5
DebugLoc form of getNOT().
...
llvm-svn: 63433
2009-01-30 22:11:22 +00:00
Bill Wendling
b6b6f46fe4
- Propagate debug loc info for SELECT.
...
- Added xform for (select X, 1, Y) and (select X, Y, 0), which was commented on,
but missing.
llvm-svn: 63428
2009-01-30 22:02:18 +00:00
Bill Wendling
d51e3ff540
Propagate debug loc info for Shifts.
...
llvm-svn: 63424
2009-01-30 21:37:17 +00:00
Bill Wendling
35972a9460
Propagate debug loc info for XOR and MatchRotate.
...
llvm-svn: 63420
2009-01-30 21:14:50 +00:00
Bill Wendling
f29b6e1318
Propagate debug loc info for OR. Also clean up some comments.
...
llvm-svn: 63419
2009-01-30 20:59:34 +00:00
Bill Wendling
ff8acd684f
Perform obvious constant arithmetic folding.
...
llvm-svn: 63417
2009-01-30 20:50:00 +00:00
Bill Wendling
8617191302
Propagate debug loc info for AND. Also clean up some comments.
...
llvm-svn: 63416
2009-01-30 20:43:18 +00:00
Bill Wendling
781db7a1ad
Propagate debug loc info in SimplifyBinOpWithSameOpcodeHands.
...
llvm-svn: 63411
2009-01-30 19:25:47 +00:00
Devang Patel
c094970cd2
Each input file is encoded as a separate compile unit in LLVM debugging
...
information output. However, many target specific tool chains prefer to encode
only one compile unit in an object file. In this situation, the LLVM code
generator will include debugging information entities in the compile unit
that is marked as main compile unit. The code generator accepts maximum one main
compile unit per module. If a module does not contain any main compile unit
then the code generator will emit multiple compile units in the output object
file.
[Part 1]
Update DebugInfo APIs to accept optional boolean value while creating DICompileUnit to mark the unit as "main" unit. By defaults all units are considered non-main. Update SourceLevelDebugging.html to document "main" compile unit.
Update DebugInfo APIs to not accept and encode separate source file/directory entries while creating various llvm.dbg.* entities. There was a recent, yet to be documented, change to include this additional information so no documentation changes are required here.
Update DwarfDebug to handle "main" compile unit. If "main" compile unit is seen then all DIEs are inserted into "main" compile unit. All other compile units are used to find source location for llvm.dbg.* values. If there is not any "main" compile unit then create unique compile unit DIEs for each llvm.dbg.compile_unit.
[Part 2]
Create separate llvm.dbg.compile_unit for each input file. Mark compile unit create for main_input_filename as "main" compile unit. Use appropriate compile unit, based on source location information collected from the tree node, while creating llvm.dbg.* values using DebugInfo APIs.
---
This is Part 1.
llvm-svn: 63400
2009-01-30 18:20:31 +00:00
Zhou Sheng
4b23938fb9
As Duncan suggested, add braces for the one-line "else branch".
...
Thanks, Duncan.
llvm-svn: 63389
2009-01-30 09:44:49 +00:00
Zhou Sheng
25b6f8153e
This is to fix the bug in IntrinsicLowering.cpp,
...
the LowerPartSet(). It didn't handle the situation correctly when
the low, high argument values are in reverse order (low > high)
with 'Val' type i32 (a corner case).
llvm-svn: 63388
2009-01-30 09:02:50 +00:00
Sanjiv Gupta
964a29f671
Enable emitting of constant values in non-default address space as well. The APIs emitting constants now take an additional parameter signifying the address space in which to emit. The APIs like getData8BitsDirective() etc are made virtual enabling targets to be able to define appropirate directivers for various sizes and address spaces.
...
llvm-svn: 63377
2009-01-30 04:25:10 +00:00
Bill Wendling
9b3407e5bb
Propagate debug loc info in SimplifyNodeWithTwoResults.
...
llvm-svn: 63376
2009-01-30 03:08:40 +00:00
Bill Wendling
faed065e5c
Propagate debug loc info for MULHS.
...
llvm-svn: 63375
2009-01-30 03:00:18 +00:00
Bill Wendling
d033af09fd
Propagate debug loc info for SREM and UREM.
...
llvm-svn: 63374
2009-01-30 02:57:00 +00:00
Bill Wendling
aff3e03765
Propagate debug loc info for UDIV.
...
llvm-svn: 63373
2009-01-30 02:55:25 +00:00
Bill Wendling
5b663e7b53
Propagate debug loc info for SDIV.
...
llvm-svn: 63372
2009-01-30 02:52:17 +00:00
Bill Wendling
b48dcf67e5
Forgot to propagate debug loc info here.
...
llvm-svn: 63371
2009-01-30 02:49:26 +00:00
Dan Gohman
1ee0d41ef8
Fix a post-RA scheduling dependency bug.
...
If a MachineInstr doesn't have a memoperand but has an opcode that
is known to load or store, assume its memory reference may alias
*anything*, including stack slots which the compiler completely
controls.
To partially compensate for this, teach the ScheduleDAG building
code to do basic getUnderlyingValue analysis. This greatly
reduces the number of instructions that require restrictive
dependencies. This code will need to be revisited when we start
doing real alias analysis, but it should suffice for now.
llvm-svn: 63370
2009-01-30 02:49:14 +00:00
Bill Wendling
091f92f568
Propagate debug loc info for MUL.
...
llvm-svn: 63369
2009-01-30 02:45:56 +00:00
Bill Wendling
48ff08ef3e
Propagate debug loc info in SUB.
...
llvm-svn: 63368
2009-01-30 02:42:10 +00:00
Bill Wendling
6127757920
Propagate debug loc info in ADDC and ADDE.
...
llvm-svn: 63367
2009-01-30 02:38:00 +00:00
Bill Wendling
c442348dd7
Propagate debug loc info in DAG combine's "ADD".
...
llvm-svn: 63366
2009-01-30 02:31:17 +00:00
Bill Wendling
cdd96133bd
- Propagate debug loc info in combineSelectAndUse().
...
- Modify ReassociateOps so that the resulting SDValue is what the comment claims
it is.
llvm-svn: 63365
2009-01-30 02:23:43 +00:00
Dale Johannesen
ed255b3d8e
Propagate debug info when building SelectionDAG.
...
llvm-svn: 63359
2009-01-30 01:34:22 +00:00
Devang Patel
33a21670f4
Remove dead code, again.
...
llvm-svn: 63358
2009-01-30 01:27:49 +00:00
Devang Patel
776a4c5baa
Remove dead code.
...
llvm-svn: 63357
2009-01-30 01:25:47 +00:00
Devang Patel
4ba91058d2
Add DW_AT_declaration for class methods.
...
llvm-svn: 63356
2009-01-30 01:21:46 +00:00
Bill Wendling
9c9a3b6665
Propagate debug location info for the token factor.
...
llvm-svn: 63355
2009-01-30 01:13:16 +00:00
Bill Wendling
f6d0aff0bd
Add DebugLoc propagation to some of the methods in DAG combiner.
...
llvm-svn: 63350
2009-01-30 00:45:56 +00:00
Owen Anderson
bf77d2eb9d
Correct the algorithms for choosing spill and restore points so that we don't try to insert loads/stores between call frame setup and the actual call.
...
This fixes the last known failure for the pre-alloc-splitter.
llvm-svn: 63339
2009-01-29 22:13:06 +00:00
Dan Gohman
14d55f0a5c
Explicitly add PseudoSourceValue information when lowering
...
BUILD_VECTOR and conversions to stack operations.
llvm-svn: 63333
2009-01-29 21:02:43 +00:00
Dan Gohman
60d6844aa8
Make a few things const, fix some comments, and simplify
...
some assertions.
llvm-svn: 63328
2009-01-29 19:49:27 +00:00
Evan Cheng
a160d4af82
Local register allocator shouldn't assume only the entry and landing pad basic blocks have live-ins.
...
llvm-svn: 63323
2009-01-29 18:37:30 +00:00
Dan Gohman
8b437ccbbe
Fix two typos that Duncan spotted in a comment.
...
llvm-svn: 63312
2009-01-29 16:18:12 +00:00
Dan Gohman
ef04ed5477
In the case of an extractelement on an insertelement value,
...
the element indices may be equal if either one is not a
constant.
llvm-svn: 63311
2009-01-29 16:10:46 +00:00
Bill Wendling
a434d930ff
Revert r63273. This was already implemented by Dale. There's no need for my
...
change.
llvm-svn: 63301
2009-01-29 09:01:55 +00:00
Owen Anderson
c0924a0632
Fix an issue where restores could be inserted after a terminator instruction,
...
and an iterator invalidation issue.
FreeBench/pifft no longer miscompiles with these fixes!
llvm-svn: 63293
2009-01-29 08:22:06 +00:00
Owen Anderson
a590802ed6
Comments are good. :-)
...
llvm-svn: 63276
2009-01-29 05:41:02 +00:00
Owen Anderson
b05ce78c51
Add support for aggressive load-use-store folding. This takes care of the
...
vast majority of code size regressions introduced by pre-alloc-splitting.
llvm-svn: 63274
2009-01-29 05:28:55 +00:00
Bill Wendling
50338007b9
- Add DebugLoc to getTargetNode().
...
- Modify TableGen to add the DebugLoc when calling getTargetNode.
(The light-weight wrappers are only temporary. The non-DebugLoc version will be
removed once the whole debug info stuff is finished with.)
llvm-svn: 63273
2009-01-29 05:27:31 +00:00
Evan Cheng
76a2736c74
Exit with nice warnings when register allocator run out of registers.
...
llvm-svn: 63267
2009-01-29 02:20:59 +00:00
Dan Gohman
e58ab79f33
Make x86's BT instruction matching more thorough, and add some
...
dagcombines that help it match in several more cases. Add
several more cases to test/CodeGen/X86/bt.ll. This doesn't
yet include matching for BT with an immediate operand, it
just covers more register+register cases.
llvm-svn: 63266
2009-01-29 01:59:02 +00:00
Evan Cheng
89ba594975
A slight compile time optimization. If the caller knows there isn't a free register getReg() should not call getFreeReg().
...
llvm-svn: 63263
2009-01-29 01:13:00 +00:00
Dale Johannesen
839acbb089
Add DebugLoc-sensitive versions of many node creation
...
functions. Currently omitted: memcpy, memmove, memset.
llvm-svn: 63259
2009-01-29 00:47:48 +00:00
Evan Cheng
55ca1d38ea
Fix comment about removeRange.
...
llvm-svn: 63255
2009-01-29 00:06:09 +00:00
Bill Wendling
1b6a3bce82
Add DebugLoc to the getNode() methods.
...
llvm-svn: 63245
2009-01-28 22:17:52 +00:00
Dale Johannesen
666bf20441
Add DebugLoc-aware constructors for SDNode derived
...
classes (those that reasonably have a DebugLoc
associated with them).
llvm-svn: 63236
2009-01-28 21:18:29 +00:00
Devang Patel
d7ecb3b661
Do not forget to derived type while constructing an array type.
...
llvm-svn: 63233
2009-01-28 21:08:20 +00:00
Mon P Wang
a15ea78ea6
Fixed extract element when the result needs to be promoted and the input widened.
...
llvm-svn: 63217
2009-01-28 18:53:39 +00:00
Dan Gohman
4aa1846215
Make isOperationLegal do what its name suggests, and introduce a
...
new isOperationLegalOrCustom, which does what isOperationLegal
previously did.
Update a bunch of callers to use isOperationLegalOrCustom
instead of isOperationLegal. In some case it wasn't obvious
which behavior is desired; when in doubt I changed then to
isOperationLegalOrCustom as that preserves their previous
behavior.
This is for the second half of PR3376.
llvm-svn: 63212
2009-01-28 17:46:25 +00:00
Duncan Sands
ba21b7d57a
Formatting.
...
llvm-svn: 63199
2009-01-28 14:42:54 +00:00
Duncan Sands
5a913d61e3
Rename getAnalysisToUpdate to getAnalysisIfAvailable.
...
llvm-svn: 63198
2009-01-28 13:14:17 +00:00
Dan Gohman
b3bbde3e62
Use ValueType::bitsLT to simplify some code.
...
llvm-svn: 63170
2009-01-28 03:10:52 +00:00
Dan Gohman
172ad92b29
Use ZERO_EXTEND instead of ANY_EXTEND when promoting
...
shift amounts, to avoid implicitly assuming that
target architectures will ignore the high bits.
llvm-svn: 63169
2009-01-28 02:58:31 +00:00
Devang Patel
5adc3dbc96
Add type DIE into appropriate context DIE.
...
llvm-svn: 63154
2009-01-27 23:22:55 +00:00
Dale Johannesen
4e04ef3c55
Add a DebugLoc field and some simple accessors.
...
llvm-svn: 63152
2009-01-27 23:20:29 +00:00
Evan Cheng
573e529127
Refine DebugLoc per review comments.
...
llvm-svn: 63132
2009-01-27 21:15:07 +00:00
Dan Gohman
fb58faf29e
Add an assertion to the form of SelectionDAG::getConstant that takes
...
a uint64_t to verify that the value is in range for the given type,
to help catch accidental overflow. Fix a few places that relied on
getConstant implicitly truncating the value.
llvm-svn: 63128
2009-01-27 20:39:34 +00:00
Dan Gohman
0bd9546039
Delete redundant return statements.
...
llvm-svn: 63120
2009-01-27 19:23:22 +00:00
Owen Anderson
431053ed2c
Make the pre-split-limit option more useful by using a per-function counter.
...
llvm-svn: 63091
2009-01-27 05:01:15 +00:00
Devang Patel
45c899cd15
Assorted debug info fixes.
...
- DW_AT_bit_size is only suitable for bitfields.
- Encode source location info for derived types.
- Source location and type size info is not useful for subroutine_type (info is included in respective DISubprogram) and array_type.
llvm-svn: 63077
2009-01-27 00:45:04 +00:00
Evan Cheng
b8c79bdc31
No need to keep size of DebugLocations vector separately.
...
llvm-svn: 63070
2009-01-26 23:47:30 +00:00
Scott Michel
3789a13c30
Make the Dwarf macro information section optional; CellSPU's assembler
...
doesn't support it. The default is set to 'true', so this should not
impact any other target backends.
llvm-svn: 63058
2009-01-26 22:32:51 +00:00
Owen Anderson
e84c3f261e
Reapply r63025 and r63026, with fixes for the failing testcases.
...
llvm-svn: 63049
2009-01-26 21:57:31 +00:00
Duncan Sands
d77e476921
Fix PR3393, which amounts to a bug in the expensive
...
checking logic. Rather than make the checking more
complicated, I've tweaked some logic to make things
conform to how the checking thought things ought to
be, since this results in a simpler "mental model".
llvm-svn: 63048
2009-01-26 21:54:18 +00:00
Bill Wendling
e7fa3c37c6
Also revert r63206
...
llvm-svn: 63041
2009-01-26 21:30:17 +00:00
Bill Wendling
a39c83d118
Temporarily revert r63025 until the testsuite failures can be fixed.
...
llvm-svn: 63040
2009-01-26 21:27:03 +00:00
Anton Korobeynikov
4b4622454c
During bittest switch lowering emit shift in the test block, which should (theoretically)
...
allow us to generate more efficient code. We don't do this now though :)
llvm-svn: 63027
2009-01-26 19:26:01 +00:00
Owen Anderson
5e235d3a7e
Get rid of a bunch of dead code now that interval reconstruction is enabled.
...
llvm-svn: 63026
2009-01-26 19:18:06 +00:00
Owen Anderson
feffdec244
Fix an issue where LiveIntervals was trying to be smart about removing kill
...
markers, and ended up foiling the interval reconstruction.
This allows us to turn on reconstruction in the pre alloc splitter, which
fixes a number of miscompilations.
llvm-svn: 63025
2009-01-26 19:12:06 +00:00
Evan Cheng
72287a599f
Silence a bogus compiler warning.
...
llvm-svn: 63021
2009-01-26 18:33:51 +00:00
Evan Cheng
4e6871da09
Actually source file has already been uniquified into an id during isel. Eliminate the StringMap.
...
llvm-svn: 63009
2009-01-26 07:53:42 +00:00
Evan Cheng
b5706c45fa
Add data structure to define and track debug location during codegen.
...
llvm-svn: 63008
2009-01-26 07:41:49 +00:00
Dan Gohman
8e4ac9b71a
Take the next steps in making SDUse more consistent with LLVM Use, and
...
tidy up SDUse and related code.
- Replace the operator= member functions with a set method, like
LLVM Use has, and variants setInitial and setNode, which take
care up updating use lists, like LLVM Use's does. This simplifies
code that calls these functions.
- getSDValue() is renamed to get(), as in LLVM Use, though most
places can either use the implicit conversion to SDValue or the
convenience functions instead.
- Fix some more node vs. value terminology issues.
Also, eliminate the one remaining use of SDOperandPtr, and
SDOperandPtr itself.
llvm-svn: 62995
2009-01-26 04:35:06 +00:00
Dan Gohman
f1d38be265
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
3a113ec468
Whitespace tidiments.
...
llvm-svn: 62963
2009-01-25 16:21:38 +00:00
Dan Gohman
e7b0dde2ee
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
Evan Cheng
abda665f5f
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
b09b0242ca
Fix an indent and a typo.
...
llvm-svn: 62940
2009-01-24 22:12:48 +00:00
Owen Anderson
ee34b8f179
Some cleanups. No functional changes.
...
llvm-svn: 62917
2009-01-24 10:07:43 +00:00
Evan Cheng
6d8970695b
Refactor code. No functionality change.
...
llvm-svn: 62893
2009-01-23 23:27:33 +00:00
Devang Patel
ccfacfff9a
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
Devang Patel
dd7aa37895
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
1275e28ded
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
Evan Cheng
9db227999a
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
a2ca64a39a
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
ab7bf14fb4
Cross register class coalescing. Not yet enabled.
...
llvm-svn: 62832
2009-01-23 02:15:19 +00:00
Devang Patel
7d537c23c1
Code did not follow associated comment. not a good idea.
...
llvm-svn: 62828
2009-01-23 01:25:58 +00:00
Devang Patel
4c8f55abda
Set appropriate tag for the composite type.
...
llvm-svn: 62827
2009-01-23 01:19:09 +00:00
Owen Anderson
48abf2380b
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
1f9053a83c
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
c2dc7ee5d0
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
1f3411de47
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
Bob Wilson
c58900504b
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
4186ddfc5a
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
4a0bf66eb8
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
e09d631d8e
fix a typo
...
llvm-svn: 62761
2009-01-22 07:21:55 +00:00
Dan Gohman
7e6b932f18
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
Duncan Sands
be7e41481b
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
fe48dfa0f2
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
Scott Michel
ed7d79fce4
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
a70798cc9a
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
Owen Anderson
be7a29de0b
Be more aggressive about renumbering vregs after splitting them.
...
llvm-svn: 62639
2009-01-21 00:13:28 +00:00
Devang Patel
19f2dd794e
Encode member accessibility.
...
llvm-svn: 62638
2009-01-21 00:08:04 +00:00
Devang Patel
6bbacbe372
Appropriately mark fowrad decls.
...
llvm-svn: 62625
2009-01-20 22:27:02 +00:00
Evan Cheng
f1e873a221
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
Bill Wendling
2395916c87
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
bd7743d772
Fix struct member's debug info.
...
llvm-svn: 62610
2009-01-20 21:02:02 +00:00
Devang Patel
2333409d06
Need only one set of debug info versions enum.
...
llvm-svn: 62602
2009-01-20 19:22:03 +00:00
Evan Cheng
c544cb0eca
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
6befc4d34e
Fix global variable's address in a DIE.
...
llvm-svn: 62596
2009-01-20 18:55:39 +00:00
Devang Patel
f0dae1aae3
Enable debug info for enums.
...
llvm-svn: 62594
2009-01-20 18:35:14 +00:00
Devang Patel
120e962243
Enable debug info for composite types.
...
llvm-svn: 62589
2009-01-20 18:13:03 +00:00
Evan Cheng
6cdcf1eb73
Refactor code. No functionality change.
...
llvm-svn: 62573
2009-01-20 06:44:16 +00:00
Bill Wendling
786a683441
Shift types need to match.
...
llvm-svn: 62571
2009-01-20 06:10:42 +00:00
Dan Gohman
161b7b66ac
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
af6a3748c7
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
Evan Cheng
8f79775a66
Make linear scan's trivial coalescer slightly more aggressive.
...
llvm-svn: 62547
2009-01-20 00:16:18 +00:00
Devang Patel
44afc82ebe
Verify debug info.
...
llvm-svn: 62545
2009-01-19 23:21:49 +00:00
Dan Gohman
534c8a2d72
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
Dan Gohman
cd0b1bf0a0
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
Sanjiv Gupta
1d2fc787a9
Few targets like PIC16 wants libcall generation for illegal type i16.
...
llvm-svn: 62467
2009-01-18 18:25:27 +00:00
Mon P Wang
e9e7abb6b8
Simplify extract element based on comments from Duncan Sands.
...
llvm-svn: 62459
2009-01-18 06:43:40 +00:00
Devang Patel
3f634fe364
Remove tabs.
...
llvm-svn: 62423
2009-01-17 08:05:14 +00:00
Devang Patel
8ee1c9f220
Refactor code
...
llvm-svn: 62421
2009-01-17 08:01:33 +00:00
Devang Patel
bf7d432ce4
Assign argument type to appropriate DIE.
...
llvm-svn: 62412
2009-01-17 06:57:25 +00:00
Devang Patel
2e32f71dfa
Remove dead code.
...
llvm-svn: 62410
2009-01-17 06:51:37 +00:00
Devang Patel
d250ef911f
Disable composite type debug info for now.
...
llvm-svn: 62406
2009-01-17 05:05:12 +00:00
Mon P Wang
ca6d6dea0b
Simplify extract element of a scalar to vector.
...
llvm-svn: 62383
2009-01-17 00:07:25 +00:00
Dan Gohman
5f8a2598b2
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
157e008816
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
38978ba972
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
014142fd1a
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
41828cdb0a
new nodes should be added to the worklist, not old nodes.
...
llvm-svn: 62359
2009-01-16 21:15:56 +00:00
Devang Patel
5d7813cb2d
Fix comments.
...
llvm-svn: 62358
2009-01-16 21:07:53 +00:00
Evan Cheng
968e2e7b3d
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
Devang Patel
0d733b5d9f
Use lightweight DebugInfo objects directly.
...
llvm-svn: 62341
2009-01-16 19:28:14 +00:00
Devang Patel
867df54606
Align source code.
...
llvm-svn: 62328
2009-01-16 18:01:58 +00:00
Dan Gohman
b903071735
Fix a "comparison between signed and unsigned integer expressions"
...
warning.
llvm-svn: 62327
2009-01-16 17:55:08 +00:00
Mikhail Glushenkov
6e8d814d36
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
b2f9a73029
Delete trailing whitespace.
...
llvm-svn: 62307
2009-01-16 06:53:46 +00:00
Devang Patel
e067a7988c
Validate debug info values only if DwarfDebug is initialized.
...
llvm-svn: 62298
2009-01-16 02:15:14 +00:00
Devang Patel
32fed1c0ef
Any debug info symbol is only valid if atleast one compile unit is seen.
...
llvm-svn: 62294
2009-01-16 01:49:46 +00:00
Dan Gohman
ceac7c34f1
Initial hazard recognizer support in post-pass scheduling. This includes
...
a new toy hazard recognizier heuristic which attempts to direct the
scheduler to avoid clumping large groups of loads or stores too densely.
llvm-svn: 62291
2009-01-16 01:33:36 +00:00
Devang Patel
fa1b408b3b
Do not stumble over forward declared struct member.
...
llvm-svn: 62288
2009-01-16 00:50:53 +00:00
Devang Patel
76d190cf4a
Validate dbg_* intrinsics before lowering them.
...
llvm-svn: 62286
2009-01-15 23:41:32 +00:00
Mon P Wang
e248edff1b
Added missing support to widen an operand from a bit convert.
...
llvm-svn: 62285
2009-01-15 22:43:38 +00:00
Dan Gohman
7e105f0b12
Generalize the HazardRecognizer interface so that it can be used
...
to support MachineInstr-based scheduling in addition to
SDNode-based scheduling.
llvm-svn: 62284
2009-01-15 22:18:12 +00:00
Dan Gohman
79618d1de8
Simplify the MachineLICM pass by having it only traverse outer
...
loops, hoisting instructions all the way out in one step rather
than hoisting them one nest level at a time. Also, make a few
other code simplifications. This speeds up MachineLICM
by several fold.
llvm-svn: 62283
2009-01-15 22:01:38 +00:00
Rafael Espindola
6de96a1b5d
Add the private linkage.
...
llvm-svn: 62279
2009-01-15 20:18:42 +00:00
Devang Patel
851cdaf1fd
Use lightweight DebugInfo objects directly.
...
llvm-svn: 62276
2009-01-15 19:26:23 +00:00
Dan Gohman
619ef48a52
Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph
...
and into the ScheduleDAGInstrs class, so that they don't get
destructed and re-constructed for each block. This fixes a
compile-time hot spot in the post-pass scheduler.
To help facilitate this, tidy and do some minor reorganization
in the scheduler constructor functions.
llvm-svn: 62275
2009-01-15 19:20:50 +00:00
Devang Patel
8bdc698336
Use variable's context to identify respective DbgScope.
...
Use light weight DebugInfo object directly.
llvm-svn: 62269
2009-01-15 18:25:17 +00:00
Dan Gohman
307954ac69
Make getWidenVectorType const; this file was missed in the
...
previous commit.
llvm-svn: 62266
2009-01-15 17:39:39 +00:00
Dan Gohman
91febd1330
More consts on TargetLowering references.
...
llvm-svn: 62262
2009-01-15 16:58:17 +00:00
Dan Gohman
4bdf021e05
Use const with TargetLowering references in a few more places.
...
llvm-svn: 62260
2009-01-15 16:43:02 +00:00
Gabor Greif
08a4c281cb
minor refactoring: use a more specific API
...
llvm-svn: 62256
2009-01-15 11:10:44 +00:00
Devang Patel
dedd3e1e14
Do not construct debug scope if RootScope *is* null.
...
llvm-svn: 62209
2009-01-14 01:34:32 +00:00
Devang Patel
3c82aa0209
Removoe MachineModuleInfo methods (and related DebugInfoDesc class hierarchy) that were used to handle debug info.
...
llvm-svn: 62199
2009-01-13 23:54:55 +00:00
Devang Patel
7b13aeedea
Keep "has debug info" big in MachineModuleInfo to avoid circular dependency between AsmPrinter and CodeGen.
...
llvm-svn: 62191
2009-01-13 23:02:17 +00:00
Devang Patel
fe9581f0cd
Undo previous checkin.
...
llvm-svn: 62190
2009-01-13 22:54:57 +00:00
Devang Patel
dd25a9d0aa
Use DwarfWriter to record dbg variables.
...
llvm-svn: 62185
2009-01-13 21:44:10 +00:00
Devang Patel
ca997988c3
Use dwarf writer to decide whether the module has debug info or not.
...
llvm-svn: 62184
2009-01-13 21:25:00 +00:00
Dan Gohman
5d4afb7bd9
Use assertions to check for conditions that should never happen.
...
llvm-svn: 62178
2009-01-13 20:25:24 +00:00
Dan Gohman
1407484178
The list-td and list-tdrr schedulers don't yet support physreg
...
scheduling dependencies. Add assertion checks to help catch
this.
It appears the Mips target defaults to list-td, and it has a
regression test that uses a physreg dependence. Such code was
liable to be miscompiled, and now evokes an assertion failure.
llvm-svn: 62177
2009-01-13 20:24:13 +00:00
Dan Gohman
13141d5538
Avoid referring to edge D after the Succs or Preds arrays have
...
been modified, to avoid trouble in the (unlikely) scenario that
D is a reference to an element in one of those arrays.
llvm-svn: 62173
2009-01-13 19:08:45 +00:00
Duncan Sands
ffc6133318
When replacing uses and the same node is reached
...
via two paths, process it once not twice, d'oh!
Analysis, testcase and original patch thanks to
Mon Ping Wang.
llvm-svn: 62169
2009-01-13 15:17:14 +00:00
Duncan Sands
90d2a7bd72
Fix some typos. Also, the WidenedVectors map
...
was not being cleaned by ExpungeNode.
llvm-svn: 62167
2009-01-13 14:42:39 +00:00
Duncan Sands
013be76241
Correct a comment - this is not a sign extension.
...
llvm-svn: 62166
2009-01-13 14:04:14 +00:00
Evan Cheng
4f9c47aab9
Un-tabify.
...
llvm-svn: 62151
2009-01-13 06:08:37 +00:00
Evan Cheng
f343168f1f
FIX llvm-gcc bootstrap on x86_64 linux. If a virtual register is copied to a physical register, it's not necessarily defined by a copy. We have to watch out it doesn't clobber any sub-register that might be live during its live interval. If the live interval crosses a basic block, then it's not safe to check with the less conservative check (by scanning uses and defs) because it's possible a sub-register might be live out of the block.
...
llvm-svn: 62144
2009-01-13 03:57:45 +00:00
Devang Patel
5c6e1e3b7d
Use DebugInfo interface to lower dbg_* intrinsics.
...
llvm-svn: 62127
2009-01-13 00:35:13 +00:00
Devang Patel
f3456e8f07
Start using DebugInfo API to emit debug info.
...
llvm-svn: 62125
2009-01-13 00:20:51 +00:00
Devang Patel
243b4add9a
Emit debug info, only if at least one compile unit is seen.
...
llvm-svn: 62118
2009-01-12 23:09:42 +00:00
Devang Patel
b71fbeb19f
If multiple compile units are seen then emit them independently. In other words, do not force all DIEs into first, whatever it is, compile unit.
...
Note, multiple compile unit support is not well tested (it did not work correctly until now anyway.)
llvm-svn: 62116
2009-01-12 23:05:55 +00:00
Devang Patel
4aa4128ced
Avoid cast<>, use light weith wrapper directly.
...
llvm-svn: 62115
2009-01-12 22:58:14 +00:00
Devang Patel
4223582f00
Use SrcLineInfo from DwarfWriter. The MachineModuleInfo copy will disappear soon.
...
llvm-svn: 62114
2009-01-12 22:54:42 +00:00
Duncan Sands
dc020f9c3c
Rename getABITypeSize to getTypePaddedSize, as
...
suggested by Chris.
llvm-svn: 62099
2009-01-12 20:38:59 +00:00
Devang Patel
df31a7256d
Add DwarfWriter interface to mainipulate source location info.
...
( May be this info should be directly handled by the dwarf writer ? )
llvm-svn: 62096
2009-01-12 19:17:34 +00:00
Devang Patel
f033d53264
Clear debug info at the end of function processing.
...
llvm-svn: 62092
2009-01-12 18:48:36 +00:00
Devang Patel
5daa1abf25
There is no need to maintain separate labelid list in the dwarf writer. It is not a good idea.
...
llvm-svn: 62090
2009-01-12 18:41:00 +00:00
Evan Cheng
b2c42c648d
Fix PR3241: Currently EmitCopyFromReg emits a copy from the physical register to a virtual register unless it requires an expensive cross class copy. That means we are only treating "expensive to copy" register dependency as physical register dependency.
...
Also future proof the scheduler to handle "normal" physical register dependencies. The code is not exercised yet.
llvm-svn: 62074
2009-01-12 03:19:55 +00:00
Owen Anderson
45cfef2cb6
More two-address fixes. This gets lua working with join-creation enabled.
...
llvm-svn: 62073
2009-01-12 03:10:40 +00:00
Evan Cheng
e3108148e2
CheckForPhysRegDependency should not return copy cost. It's not used. No functionality change.
...
llvm-svn: 62036
2009-01-11 08:53:35 +00:00
Devang Patel
af7d04207c
Reduce initial small vector sizes.
...
llvm-svn: 62023
2009-01-10 02:42:49 +00:00
Devang Patel
5491f25810
Fix thinko. Create parent scope if parent descriptor is *not* null.
...
llvm-svn: 62022
2009-01-10 02:34:18 +00:00
Evan Cheng
ed74d8ac2a
Duplicated node may produce a non-physical register def.
...
llvm-svn: 62015
2009-01-09 22:44:02 +00:00
Evan Cheng
0c4fe2600a
Minor debug output tweak.
...
llvm-svn: 62005
2009-01-09 20:42:34 +00:00
Devang Patel
235acaa131
Request DwarfWriter. This will be used to handle dbg_* intrinsics.
...
llvm-svn: 61999
2009-01-09 19:11:50 +00:00
Misha Brukman
5cbf223916
Removed trailing whitespace from Makefiles.
...
llvm-svn: 61991
2009-01-09 16:44:42 +00:00
Devang Patel
f646668799
Convert DwarfWriter into a pass.
...
Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly.
llvm-svn: 61955
2009-01-08 23:40:34 +00:00
Dan Gohman
f87dc9264a
Delete unnecessary parens around return values.
...
llvm-svn: 61950
2009-01-08 22:19:34 +00:00
Devang Patel
65143c537c
Add DebugInfo based APIs to record source line info.
...
llvm-svn: 61928
2009-01-08 17:19:22 +00:00
Misha Brukman
572f2646c2
* Moved author attribution to CREDITS.TXT
...
* Removed trailing whitespace
llvm-svn: 61927
2009-01-08 16:40:25 +00:00
Misha Brukman
da46748ad2
* Alphabetized #includes
...
* Removed trailing whitespace
llvm-svn: 61926
2009-01-08 15:50:22 +00:00
Devang Patel
145a7cfa85
Add APIs to record regions and variables.
...
Again, shamelessly copied from MMI.
llvm-svn: 61912
2009-01-08 02:49:34 +00:00
Devang Patel
fbbe93bf68
Add APIs to manage scope using DebugInfo interface.
...
This is a shameless copy of similar APIs from MachineModuleInfo. The copy from MMI will be deleted in near future.
llvm-svn: 61908
2009-01-08 02:33:41 +00:00
Dan Gohman
261ee6be57
Remove redundant 'else's. No functionality change.
...
llvm-svn: 61891
2009-01-07 22:30:55 +00:00
Evan Cheng
f6768bd9cb
The coalescer does not coalesce a virtual register to a physical register if any of the physical register's sub-register live intervals overlaps with the virtual register. This is overly conservative. It prevents a extract_subreg from being coalesced away:
...
v1024 = EDI // not killed
=
= EDI
One possible solution is for the coalescer to examine the sub-register live intervals in the same manner as the physical register. Another possibility is to examine defs and uses (when needed) of sub-registers. Both solutions are too expensive. For now, look for "short virtual intervals" and scan instructions to look for conflict instead.
This is a small win on x86-64. e.g. It shaves 403.gcc by ~80 instructions.
llvm-svn: 61847
2009-01-07 02:08:57 +00:00
Dan Gohman
c7847cdb8d
Fix a bug in ComputeLinearIndex computation handling multi-level
...
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.
llvm-svn: 61828
2009-01-06 22:53:52 +00:00
Devang Patel
928d465b6b
Set up DwarfDebug using DebugInfo API.
...
llvm-svn: 61822
2009-01-06 21:07:30 +00:00
Bill Wendling
a055b8c0d3
Forgot that this was needed for Linux. This should fix the builds.
...
llvm-svn: 61819
2009-01-06 19:13:55 +00:00
Owen Anderson
f04100a50d
The phi construction algorithm used for interval reconstruction is complicated by
...
two address instructions. We need to keep track of things we've processed AS USES
independetly of whether we've processed them as defs.
This fixes all known miscompilations when reconstruction is turned on.
llvm-svn: 61802
2009-01-06 07:53:32 +00:00
Dan Gohman
bf8e5204d1
Update these argument lists for the isNormalMemory
...
argument. This doesn't affect current functionality.
llvm-svn: 61779
2009-01-06 01:28:56 +00:00
Dan Gohman
79c3516912
Use a latency value of 0 for the artificial edges inserted by
...
AddPseudoTwoAddrDeps. This lets the scheduling infrastructure
avoid recalculating node heights. In very large testcases this
was a major bottleneck. Thanks to Roman Levenstein for finding
this!
As a side effect, fold-pcmpeqd-0.ll is now scheduled better
and it no longer requires spilling on x86-32.
llvm-svn: 61778
2009-01-06 01:19:04 +00:00
Devang Patel
244a649764
Construct subprogram DIEs using DebugInfo.
...
llvm-svn: 61772
2009-01-05 23:21:35 +00:00
Devang Patel
245a73ac16
Construct global variable DIEs using DebugInfo.
...
llvm-svn: 61771
2009-01-05 23:11:11 +00:00
Devang Patel
0479d7647f
Construct compile unit dies using DebugInfo.
...
llvm-svn: 61768
2009-01-05 23:03:32 +00:00
Bill Wendling
f9b5ba7bcb
Revert r61415 and r61484. Duncan was correct that these weren't needed.
...
llvm-svn: 61765
2009-01-05 22:53:45 +00:00
Dan Gohman
52d4d8244b
Don't call setDepthDirty/setHeightDirty when adding an edge
...
with latency 0, since it doesn't affect the depth or height.
llvm-svn: 61762
2009-01-05 22:40:26 +00:00
Devang Patel
ced6524437
Extract source location info from DebugInfo.
...
Add methods to add source location info in a DIE.
llvm-svn: 61761
2009-01-05 22:35:52 +00:00
Devang Patel
c0a190085d
Add type DIEs using DebugInfo.
...
llvm-svn: 61757
2009-01-05 21:47:57 +00:00
Devang Patel
1054a852b2
Construct composite type DIE using DebugInfo.
...
llvm-svn: 61741
2009-01-05 19:55:51 +00:00
Dan Gohman
dbc6c31f62
TargetLowering.h #includes SelectionDAGNodes.h, so it doesn't need its
...
own OpActionsCapacity magic number; it can just use ISD::BUILTIN_OP_END,
as long as it takes care to round up when needed.
llvm-svn: 61733
2009-01-05 19:40:39 +00:00
Devang Patel
2c2eeabb54
s/ConstructType/ConstructTypeDIE/g
...
llvm-svn: 61731
2009-01-05 19:07:53 +00:00
Devang Patel
5024d377f2
Construct stuct field DIEs.
...
llvm-svn: 61729
2009-01-05 18:59:44 +00:00
Devang Patel
c0adc6b9bc
Construct enumerator DIE using DebugInfo.
...
llvm-svn: 61726
2009-01-05 18:38:38 +00:00
Devang Patel
758e7d7781
Construct array/vector type DIEs using DebugInfo.
...
llvm-svn: 61724
2009-01-05 18:33:01 +00:00
Owen Anderson
96fce00dc0
Get rid of sentinel insertion in interval reconstruction. It just masked the
...
problem, rather than fixing it. The problem has now been fixed the right way.
llvm-svn: 61723
2009-01-05 18:32:26 +00:00
Dan Gohman
906152a20f
Tidy up #includes, deleting a bunch of unnecessary #includes.
...
llvm-svn: 61715
2009-01-05 17:59:02 +00:00
Devang Patel
1e03f7f19e
Construct basic and derived type DIEs using DebugInfo.
...
llvm-svn: 61714
2009-01-05 17:57:47 +00:00
Devang Patel
15deef2a3c
subsume ConstructPointerType()
...
llvm-svn: 61711
2009-01-05 17:45:59 +00:00
Devang Patel
ef2a94e8df
subsume ConstructBasicType().
...
llvm-svn: 61709
2009-01-05 17:44:11 +00:00
Devang Patel
56a8bb670f
squash warnings.
...
llvm-svn: 61707
2009-01-05 17:31:22 +00:00
Chris Lattner
8f561c9c97
elf writer really wants the size of the global, not the size
...
of the pointer to the global.
llvm-svn: 61630
2009-01-04 20:19:20 +00:00
Bill Wendling
ac79602005
The llvm::ELFWriter::EmitGlobal() method is calling the
...
llvm::PATypeHolder::get() method when LLVM is self-hosted in Release
mode. Before the parser changed, there was a definition of llvm::PAHolder::get()
in llvmAsmParser.y. This was probably a bug that no-one noticed.
Explicitly #include the Type.h file as a temporary fix for now.
llvm-svn: 61620
2009-01-04 01:47:14 +00:00
Dan Gohman
b9fa1d24f8
Fix a DAGCombiner abort on an invalid shift count constant. This fixes PR3250.
...
llvm-svn: 61613
2009-01-03 19:22:06 +00:00
Dan Gohman
4d41fdf4ca
CommuteNodesToReducePressure() is now removed.
...
llvm-svn: 61612
2009-01-03 19:19:30 +00:00
Dan Gohman
1be2e9650e
Remove the code from the scheduler that commuted two-address
...
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.
Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.
llvm-svn: 61611
2009-01-03 18:01:46 +00:00
Duncan Sands
953c9c2fbc
Factorize (and generalize) the code promoting SELECT
...
and BRCOND conditions. Reorder a few methods while
there.
llvm-svn: 61547
2009-01-01 20:36:20 +00:00
Duncan Sands
19ee60848a
Remove trailing spaces.
...
llvm-svn: 61545
2009-01-01 19:56:02 +00:00
Duncan Sands
8feb694e8f
Fix PR3274: when promoting the condition of a BRCOND node,
...
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).
llvm-svn: 61542
2009-01-01 15:52:00 +00:00
Owen Anderson
8b86b9ca47
Get live interval reconstruction several steps closer to working.
...
llvm-svn: 61514
2008-12-31 02:00:25 +00:00
Bill Wendling
03f2af79b8
Linux wants the FDE initial location and address range to be forced to 32-bit.
...
Darwin doesn't. Make this optional for platforms.
llvm-svn: 61484
2008-12-29 22:12:11 +00:00
Bill Wendling
b13c83ac18
The FDE initial location and address range data should be free to be 64-bit
...
(quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin.
llvm-svn: 61483
2008-12-29 21:51:42 +00:00
Duncan Sands
43b18241ff
Add braces, as suggested by a gcc warning.
...
llvm-svn: 61465
2008-12-29 08:05:02 +00:00
Scott Michel
0c9259f149
Teach LeaglizeDAG that i64 mul can be a libcall.
...
llvm-svn: 61463
2008-12-29 03:21:37 +00:00
Owen Anderson
b5232286a7
Fix up kill/dead marking in the new live interval reconstruction code.
...
llvm-svn: 61460
2008-12-28 23:35:13 +00:00