Duncan Sands
48517dac03
Fix a layering violation: hasConstantValue, which is part of the PHINode
...
class, uses DominatorTree which is an analysis. This change moves all of
the tricky hasConstantValue logic to SimplifyInstruction, and replaces it
with a very simple literal implementation. I already taught users of
hasConstantValue that need tricky stuff to use SimplifyInstruction instead.
I didn't update InlineFunction because the IR looks like it might be in a
funky state at the point it calls hasConstantValue, which makes calling
SimplifyInstruction dangerous since it can in theory do a lot of tricky
reasoning. This may be a pessimization, for example in the case where
all phi node operands are either undef or a fixed constant.
llvm-svn: 119459
2010-11-17 04:30:22 +00:00
Dan Gohman
b10ff802a0
Memoize results from ScalarEvolution's getUnsignedRange and getSignedRange.
...
This fixes some extreme compile times on unrolled sha512 code.
llvm-svn: 119455
2010-11-17 02:44:44 +00:00
Dan Gohman
ea25285426
Fix warnings about missing parents between || and &&.
...
llvm-svn: 119454
2010-11-17 02:40:30 +00:00
Peter Collingbourne
1cf8df8f83
Fix typo: Exectuable -> Executable
...
llvm-svn: 119433
2010-11-17 00:43:43 +00:00
Rafael Espindola
283e6bd938
Add .loc methods to the streamer.
...
Next: Add support for the !HasDotLocAndDotFile case to the MCAsmStreamer
and then switch codegen to use it.
llvm-svn: 119384
2010-11-16 21:20:32 +00:00
Dan Gohman
52a761760d
Split pseudo-instruction expansion into a separate pass, to make it
...
easier to debug, and to avoid complications when the CFG changes
in the middle of the instruction selection process.
llvm-svn: 119382
2010-11-16 21:02:37 +00:00
Rafael Espindola
857b73093c
Add const.
...
llvm-svn: 119380
2010-11-16 20:56:23 +00:00
Michael J. Spencer
9e09722b61
system_error: More conditional error codes for Darwin.
...
llvm-svn: 119365
2010-11-16 18:48:21 +00:00
Michael J. Spencer
7435976c05
This is the first step in adding sane error handling support to LLVMSystem.
...
The system API's will be shifted over to returning an error_code, and returning
other return values as out parameters to the function.
Code that needs to check error conditions will use the errc enum values which
are the same as the posix_errno defines (EBADF, E2BIG, etc...), and are
compatable with the error codes in WinError.h due to some magic in system_error.
An example would be:
if (error_code ec = KillEvil("Java")) { // error_code can be converted to bool.
handle_error(ec);
}
llvm-svn: 119360
2010-11-16 18:31:52 +00:00
Duncan Sands
825c7d7f79
In which I discover the existence of loops. Threading an operation
...
over a phi node by applying it to each operand may be wrong if the
operation and the phi node are mutually interdependent (the testcase
has a simple example of this). So only do this transform if it would
be correct to perform the operation in each predecessor of the block
containing the phi, i.e. if the other operands all dominate the phi.
This should fix the FFMPEG snow.c regression reported by İsmail Dönmez.
llvm-svn: 119347
2010-11-16 12:16:38 +00:00
Michael J. Spencer
5c5cfac314
Object: Get rid of sys::Path, Triple, and cleanup namespace.
...
llvm-svn: 119309
2010-11-16 01:06:51 +00:00
Evan Cheng
4afa3a6b1f
Code clean up. The peephole pass should be the one updating the instruction
...
iterator, not TII->OptimizeCompareInstr.
llvm-svn: 119186
2010-11-15 21:20:45 +00:00
Rafael Espindola
1f6440b1e2
Change MCExpr::EvaluateAsRelocatableImpl of variables to return the original
...
variable if recursing fails to simplify it.
Factor AliasedSymbol to be a method of MCSymbol.
Update MCAssembler::EvaluateFixup to match the change in
EvaluateAsRelocatableImpl.
Remove the WeakRefExpr hack, as the object writer now sees the weakref with
no extra effort needed.
Nothing else is using MCTargetExpr, but keep it for now.
Now that the ELF writer sees relocations with aliases, handle
.weak foo2
foo2:
.weak bar2
.set bar2,foo2
.quad bar2
the same way gas does and produce a relocation with bar2.
llvm-svn: 119152
2010-11-15 16:33:49 +00:00
Rafael Espindola
f6c0121c93
Fix PR8565.
...
This moves most of the isUsed logic to the MCSymbol itself. With this we
get a bit more relaxed about allowing definitions after uses: uses that
don't evaluate their argument immediately (jmp foo) are accepted.
ddunbar, this was the smallest compromise I could think of that lets us
accept gcc (and clang!) assembly.
llvm-svn: 119144
2010-11-15 14:40:36 +00:00
Chris Lattner
b2daeac125
add fields to the .td files unconditionally, simplifying tblgen a bit.
...
Switch the ARM backend to use 'let' instead of 'set' with this change.
llvm-svn: 119120
2010-11-15 05:19:05 +00:00
Michael J. Spencer
23f31df887
Add LLVMObject Library.
...
llvm-svn: 119107
2010-11-15 03:21:41 +00:00
Chris Lattner
9a0a840839
add targetoperand flags for jump tables, constant pool and block address
...
nodes to indicate when ha16/lo16 modifiers should be used. This lets
us pass PowerPC/indirectbr.ll.
The one annoying thing about this patch is that the MCSymbolExpr isn't
expressive enough to represent ha16(label1-label2) which we need on
PowerPC. I have a terrible hack in the meantime, but this will have
to be revisited at some point.
Last major conversion item left is global variable references.
llvm-svn: 119105
2010-11-15 02:46:57 +00:00
Anton Korobeynikov
76c52dcf44
First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place
...
llvm-svn: 119097
2010-11-15 00:06:54 +00:00
Chris Lattner
51168d6510
move the pic base symbol stuff up to MachineFunction
...
since it is trivial and will be shared between ppc and x86.
This substantially simplifies the X86 backend also.
llvm-svn: 119089
2010-11-14 22:48:15 +00:00
Chris Lattner
fc626aa37d
reimplement ppc asmprinter "toc" handling to use a VariantKind
...
on the operand, required for .o file writing and fixing
the PowerPC/mult-alt-generic-powerpc64.ll failure with the new
instprinter.
llvm-svn: 119087
2010-11-14 22:22:59 +00:00
Duncan Sands
63e80e0593
If dom tree information is available, make it possible to pass
...
it to get better phi node simplification.
llvm-svn: 119055
2010-11-14 18:36:10 +00:00
Duncan Sands
ab39985d42
Strip trailing whitespace.
...
llvm-svn: 119038
2010-11-14 11:23:23 +00:00
Daniel Dunbar
2ba9f79194
MC: Simplify Mach-O and ELF object writer implementations.
...
- What was I thinking?????
llvm-svn: 118992
2010-11-13 07:33:40 +00:00
Rafael Espindola
9cd0fd30e0
Parse and record the gnu_unique_object type.
...
llvm-svn: 118980
2010-11-13 04:51:02 +00:00
Jim Grosbach
4635621b41
Trailing whitespace.
...
llvm-svn: 118978
2010-11-13 04:17:15 +00:00
Rafael Espindola
00c5605efc
Parse and remember discriminators in .loc line. I try to output them with
...
another patch.
This lets us parse a bit more of the gcc 4.5 output.
llvm-svn: 118975
2010-11-13 03:18:27 +00:00
Daniel Dunbar
fef193dc12
JIT: More nitty style tweakage, aka territory marking.
...
llvm-svn: 118973
2010-11-13 02:48:57 +00:00
Daniel Dunbar
1f695efa5e
report_fatal_error: Simplify a possible ambiguity.
...
llvm-svn: 118972
2010-11-13 02:48:51 +00:00
Daniel Dunbar
5517a3a720
More style nittiness.
...
llvm-svn: 118971
2010-11-13 02:48:46 +00:00
Daniel Dunbar
8b2d88846b
Clean up some doxyments/style.
...
llvm-svn: 118970
2010-11-13 02:48:41 +00:00
Chris Lattner
ce47bb4409
add operand iterator apis to MachineInstr, patch by ether zhhb.
...
llvm-svn: 118862
2010-11-12 00:00:21 +00:00
Dan Gohman
f3bf6591e0
Add helper functions for computing the Location of load, store,
...
and vaarg instructions.
llvm-svn: 118845
2010-11-11 21:50:19 +00:00
Dan Gohman
b20b7d2ec2
Factor out Instruction::isSafeToSpeculativelyExecute's code for
...
testing for dereferenceable pointers into a helper function,
isDereferenceablePointer. Teach it how to reason about GEPs
with simple non-zero indices.
Also eliminate ArgumentPromtion's IsAlwaysValidPointer,
which didn't check for weak externals or out of range gep
indices.
llvm-svn: 118840
2010-11-11 21:23:25 +00:00
Rafael Espindola
8555d32c9e
Initial comdat implementation.
...
llvm-svn: 118805
2010-11-11 18:13:52 +00:00
Dan Gohman
7c06994452
Add comments.
...
llvm-svn: 118799
2010-11-11 17:33:39 +00:00
Dan Gohman
503ad44b14
Add brief doxygen comments for AliasResult enum values.
...
llvm-svn: 118792
2010-11-11 16:37:38 +00:00
Dan Gohman
b476dc0f55
Set NonLocalDepInfo's Size field to UnknownSize when invalidating
...
it, so that it doesn't appear to be a known size.
llvm-svn: 118748
2010-11-11 00:20:27 +00:00
Jakob Stoklund Olesen
313b78d28e
Insert two blank SlotIndexes between basic blocks instead of just one.
...
This is the first small step towards using closed intervals for liveness instead
of the half-open intervals we're using now.
We want to be able to distinguish between a SlotIndex that represents a variable
being live-out of a basic block, and an index representing a variable live-in to
its successor.
That requires two separate indexes between blocks. One for live-outs and one for
live-ins.
With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays
greater than any instructions inserted at the end of MBB.
llvm-svn: 118747
2010-11-11 00:19:20 +00:00
Jakob Stoklund Olesen
3eb4a7b12d
Delete unused function.
...
llvm-svn: 118743
2010-11-10 23:56:02 +00:00
Devang Patel
5520a6fc97
Take care of special characters while creating named MDNode name to hold function specific local variable's info.
...
This fixes radar 8653152. I am checking in testcase as a separate check-in.
llvm-svn: 118726
2010-11-10 22:19:21 +00:00
Dan Gohman
2b4e8302a6
Enhance GVN to do more precise alias queries for non-local memory
...
references. For example, this allows gvn to eliminate the load in
this example:
void foo(int n, int* p, int *q) {
p[0] = 0;
p[1] = 1;
if (n) {
*q = p[0];
}
}
llvm-svn: 118714
2010-11-10 20:37:15 +00:00
Andrew Trick
9d60f59b55
RABasic is nearly functionally complete. There are a few remaining
...
benchmarks hitting an assertion.
Adds LiveIntervalUnion::collectInterferingVRegs.
Fixes "late spilling" by checking for any unspillable live vregs among
all physReg aliases.
llvm-svn: 118701
2010-11-10 19:18:47 +00:00
Rafael Espindola
d05bf9ffe0
Use MCSectionELF in places we know we have an ELF section.
...
llvm-svn: 118699
2010-11-10 19:05:07 +00:00
Dan Gohman
04e46fa78b
Rename AccessesArguments and AccessesArgumentsReadonly, and rewrite
...
their comments.
llvm-svn: 118696
2010-11-10 18:30:00 +00:00
Dan Gohman
271a238243
Fix a copy+pasto Duncan noticed.
...
llvm-svn: 118693
2010-11-10 18:18:23 +00:00
Dan Gohman
65a3841f03
Add a doesAccessArgPointees helper function, and update code to use
...
it, and to be consistent.
llvm-svn: 118692
2010-11-10 18:17:28 +00:00
Dan Gohman
9ae50022a1
Factor out the code for testing whether a function accesses
...
arbitrary memory into a helper function, and adjust some comments.
llvm-svn: 118687
2010-11-10 17:34:04 +00:00
Dan Gohman
3cc59e791f
Give NonLocalDepResult a NonLocalDepEntry member, replacing
...
indivudal members holding the same data, to clarify the relationship
between NonLocalDepResult and NonLocalDepEntry.
llvm-svn: 118686
2010-11-10 17:15:52 +00:00
Michael J. Spencer
000dd79ae8
System/Path: Update comments to match code.
...
llvm-svn: 118682
2010-11-10 15:05:50 +00:00
Duncan Sands
7f44d33a4c
There is no EndPtr anymore - reinterpret the original comment in terms
...
of InputData.
llvm-svn: 118677
2010-11-10 07:46:36 +00:00
Jim Grosbach
4e3653e4e1
Update ARMConstantPoolValue to not use a modifier string. Use an explicit
...
VariantKind marker to indicate the additional information necessary. Update
MC to handle the new Kinds. rdar://8647623
llvm-svn: 118671
2010-11-10 03:26:07 +00:00
Dan Gohman
1571dfc883
Make ModRefBehavior a lattice. Use this to clean up AliasAnalysis
...
chaining and simplify FunctionAttrs' GetModRefBehavior logic.
llvm-svn: 118660
2010-11-10 01:02:18 +00:00
Rafael Espindola
3c0f11a265
Fixed version of 118639 with an extra assert to catch similar problems
...
earlier. Implicit bool -> int conversions are evil!
llvm-svn: 118651
2010-11-09 23:42:07 +00:00
Rafael Espindola
a16ec0145e
Revert previous patch. Missed a case.
...
llvm-svn: 118645
2010-11-09 22:54:38 +00:00
Rafael Espindola
5e39a6d951
Remove IsExplicit. It was always false.
...
llvm-svn: 118639
2010-11-09 22:37:44 +00:00
Dan Gohman
2a7e94d265
Convert comments to doxygen syntax.
...
llvm-svn: 118628
2010-11-09 20:33:57 +00:00
Dan Gohman
27fb58d9c7
AccessesArgumentsReadonly is read-only.
...
llvm-svn: 118615
2010-11-09 19:50:00 +00:00
Dan Gohman
d50f969460
Add a AccessesArgumentsReadonly ModRefBehavior value, so that the intrinsic
...
property IntrReadArgMem can be modeled.
llvm-svn: 118614
2010-11-09 19:48:55 +00:00
Dan Gohman
9bdf92c92c
Factor out the logic for onlyReadsMemory into a helper function.
...
llvm-svn: 118611
2010-11-09 19:43:24 +00:00
Dan Gohman
3de0bd24db
Delete AccessesArgumentsAndGlobals, which was unused.
...
llvm-svn: 118610
2010-11-09 19:41:37 +00:00
Michael J. Spencer
3ae9fd29ae
System/Path/Windows: Change GetRootDirectory to return file:/// instead of C:/.
...
llvm-svn: 118502
2010-11-09 15:10:45 +00:00
Dan Gohman
227bf9fea9
Add some comments noting some correspondences between ModRefBehavior
...
values, LLVM IR function attributes, and LLVM intrinsic attributes.
llvm-svn: 118455
2010-11-08 23:46:02 +00:00
Devang Patel
af569979a6
Document parameters. Fix typos.
...
llvm-svn: 118424
2010-11-08 18:28:34 +00:00
Dan Gohman
6909ecf66e
Extend the AliasAnalysis::pointsToConstantMemory interface to allow it
...
to optionally look for constant or local (alloca) memory.
Teach BasicAliasAnalysis::pointsToConstantMemory to look through Select
and Phi nodes, and to support looking for local memory.
Remove FunctionAttrs' PointsToLocalOrConstantMemory function, now that
AliasAnalysis knows all the tricks that it knew.
llvm-svn: 118412
2010-11-08 16:45:26 +00:00
Dan Gohman
ee58dba24c
Delete getIntrinsicModRefBehavior. Clients can just use the normal
...
getModRefBehavior now, since it now understands intrinsics as well
as normal functions.
llvm-svn: 118411
2010-11-08 16:11:19 +00:00
Dan Gohman
c3202f8550
Add comments.
...
llvm-svn: 118408
2010-11-08 15:34:42 +00:00
Che-Liang Chiou
4cc802839c
Add registry hook for assembly text output
...
llvm-svn: 118394
2010-11-08 02:21:17 +00:00
Rafael Espindola
fd7a61257b
typos
...
llvm-svn: 118376
2010-11-07 13:48:10 +00:00
Rafael Espindola
49a9710db0
Add method for checking if a path is a symbolic link.
...
llvm-svn: 118367
2010-11-07 04:36:50 +00:00
Rafael Espindola
877bb5ba4b
Relax dwarf line fragments. This fixes a crash in the included testcase.
...
llvm-svn: 118365
2010-11-07 02:07:12 +00:00
Benjamin Kramer
96ac873014
Prune includes.
...
llvm-svn: 118342
2010-11-06 11:45:59 +00:00
Chris Lattner
5d1361e9ed
Reimplement BuildResultOperands to be in terms of the result instruction's
...
operand list instead of the operand list redundantly declared on the alias
or instruction.
With this change, we finally remove the ins/outs list on the alias. Before:
def : InstAlias<(outs GR16:$dst), (ins GR8 :$src),
"movsx $src, $dst",
(MOVSX16rr8W GR16:$dst, GR8:$src)>;
After:
def : InstAlias<"movsx $src, $dst",
(MOVSX16rr8W GR16:$dst, GR8:$src)>;
This also makes the alias mechanism more general and powerful, which will
be exploited in subsequent patches.
llvm-svn: 118329
2010-11-06 07:14:44 +00:00
Jim Grosbach
a98b9ba916
Add '.code 32' assembler directive to MC streamers.
...
llvm-svn: 118309
2010-11-05 22:40:09 +00:00
Jim Grosbach
bbef2c5fcc
MC'ize the '.code 16' and '.thumb_func' ARM directives.
...
llvm-svn: 118301
2010-11-05 22:08:08 +00:00
Jim Grosbach
577ec1fe53
Trailing whitespace.
...
llvm-svn: 118296
2010-11-05 20:41:12 +00:00
Jim Grosbach
a85416eb77
Allow targets to specify the MachO CPUType/CPUSubtype information.
...
llvm-svn: 118288
2010-11-05 18:48:58 +00:00
Jim Grosbach
380e284cf8
Add v5 and v7 ARM CPU subtype values.
...
llvm-svn: 118281
2010-11-05 17:48:05 +00:00
Daniel Dunbar
8f3d8495f5
CrashRecoveryContext: Add RunSafelyOnThread helper function.
...
llvm-svn: 118272
2010-11-05 07:19:09 +00:00
Devang Patel
6c1b802673
Introduce DIBuilder. It is intended to be a front-end friendly interface to emit debuggging information entries in LLVM IR.
...
To create debugging information for a pointer, using DIBUilder front-end just needs
DBuilder.CreatePointerType(Ty, Size);
instead of
DebugFactory.CreateDerivedType(llvm::dwarf::DW_TAG_pointer_type,
TheCU, "", getOrCreateMainFile(),
0, Size, 0, 0, 0, OCTy);
llvm-svn: 118248
2010-11-04 15:01:38 +00:00
Devang Patel
72715ef163
Add getFile() to get DIFile of a DIType.
...
llvm-svn: 118247
2010-11-04 14:56:34 +00:00
Duncan Sands
3bf2a701a5
In the calling convention logic, ValVT is always a legal type,
...
and as such can be represented by an MVT - the more complicated
EVT is not needed. Use MVT for ValVT everywhere.
llvm-svn: 118245
2010-11-04 10:49:57 +00:00
Daniel Dunbar
06d64897d3
System: Add llvm_execute_on_thread, which does what it says.
...
- Primarily useful for running some code with a specified stack size, when
pthreads are available.
llvm-svn: 118222
2010-11-04 01:26:25 +00:00
Mikhail Glushenkov
991857f132
Rename FindExecutable to PrependMainExecutablePath.
...
Makes it more clear that it is just a path manipulation function.
llvm-svn: 118174
2010-11-03 16:14:16 +00:00
Duncan Sands
41edf30895
Simplify uses of MVT and EVT. An MVT can be compared directly
...
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.
llvm-svn: 118169
2010-11-03 12:17:33 +00:00
Duncan Sands
4bbe978c7c
Fix a comment typo.
...
llvm-svn: 118168
2010-11-03 11:55:03 +00:00
Duncan Sands
f6e5e02c9b
Inside the calling convention logic LocVT is always a simple
...
value type, so there is no point in passing it around using
an EVT. Use the simpler MVT everywhere. Rather than trying
to propagate this information maximally in all the code that
using the calling convention stuff, I chose to do a mainly
low impact change instead.
llvm-svn: 118167
2010-11-03 11:35:31 +00:00
Evan Cheng
eab7251695
Fix preload instruction isel. Only v7 supports pli, and only v7 with mp extension supports pldw. Add subtarget attribute to denote mp extension support and legalize illegal ones to nothing.
...
llvm-svn: 118160
2010-11-03 06:34:55 +00:00
Evan Cheng
67db408634
Two sets of changes. Sorry they are intermingled.
...
1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
"optimize for latency". Call instructions don't have the right latency and
this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
not # of micro-ops since multi-latency instructions is completely executed
even when the predicate is false. Also, some instruction will be "slower"
when they are predicated due to the register def becoming implicit input.
rdar://8598427
llvm-svn: 118135
2010-11-03 00:45:17 +00:00
Dan Gohman
67f95d770b
Factor code out of APInt to form a isUIntN helper function.
...
llvm-svn: 118133
2010-11-03 00:38:40 +00:00
Jakob Stoklund Olesen
ea31f5aadd
Let the -inline-threshold command line argument take precedence over the
...
threshold given to createFunctionInliningPass().
Both opt -O3 and clang would silently ignore the -inline-threshold option.
llvm-svn: 118117
2010-11-02 23:40:26 +00:00
Mikhail Glushenkov
79047e7eb3
appendSuffix: don't append a dot when the suffix is empty.
...
Additionally, move the implementation of appendSuffix to Path.cpp: it is
platform-independent.
llvm-svn: 118089
2010-11-02 22:18:37 +00:00
Rafael Espindola
daf6328eb0
Do relaxations with FT_Org fragments. Fixes the FIXME:
...
// FIXME: We should compute this sooner, we don't want to recurse here, and
// we would like to be more functional.
In MCAssembler::ComputeFragmentSize.
llvm-svn: 118080
2010-11-02 21:38:23 +00:00
Mikhail Glushenkov
4077e2da6f
FindExecutable: remove the executability check.
...
This makes the behaviour of FindExecutable more consistent across platforms, but
I'm not very happy with the name...
llvm-svn: 118049
2010-11-02 20:32:46 +00:00
Mikhail Glushenkov
b1d2a5ac52
Make FindProgramByName return paths with slashes unmodified on Windows.
...
This makes its behaviour more consistent across platforms.
llvm-svn: 118048
2010-11-02 20:32:39 +00:00
Mikhail Glushenkov
c86f1d26e9
Path: Add GetEXESuffix() to complement GetDLLSuffix().
...
llvm-svn: 118042
2010-11-02 20:32:26 +00:00
Rafael Espindola
1db6a21aff
Add support for expressions in .sleb/.uleb directives.
...
llvm-svn: 118023
2010-11-02 17:22:24 +00:00
Duncan Sands
47a8976f28
Fix comment typo.
...
llvm-svn: 118016
2010-11-02 15:12:48 +00:00
Duncan Sands
1651d8cdb3
Add some comments explaining what MVT and EVT are, and how they differ.
...
llvm-svn: 118014
2010-11-02 13:57:09 +00:00
Duncan Sands
c56946f7c5
Remove trailing whitespace.
...
llvm-svn: 118013
2010-11-02 13:43:07 +00:00
Jim Grosbach
8b64800473
Tweak to fix spelling and grammar in comment.
...
llvm-svn: 117985
2010-11-02 00:13:15 +00:00
Rafael Espindola
5571ce5ed4
Move EmitInstruction to MCObjectStreamer so that ELF and MachO can share it.
...
llvm-svn: 117925
2010-11-01 16:27:31 +00:00
Rafael Espindola
7a38cb0144
Implement .weakref.
...
llvm-svn: 117911
2010-11-01 14:28:48 +00:00
Chris Lattner
d57d9e862d
eliminate the old InstFormatName which is always "AsmString",
...
simplify CodeGenInstruction. No functionality change.
llvm-svn: 117891
2010-11-01 02:15:23 +00:00
Chandler Carruth
4d8fbad207
Add a specialization for 'long', a hole in the set of fundamental
...
specializations provided here. This is a little annoying because its size
changes from platform to platform. If possible, I may follow up with a patch
that uses standard constants to simplify much of this, but assuming for now
that was avoided for a reason.
llvm-svn: 117880
2010-10-31 22:57:03 +00:00
Nicolas Geoffray
6889997474
Attach a GCModuleInfo to a MachineFunction.
...
llvm-svn: 117867
2010-10-31 20:38:38 +00:00
Chris Lattner
8aaac91ca4
sketch out the planned instruction alias mechanism, add some comments about
...
how the push/pop mnemonic aliases are wrong.
llvm-svn: 117857
2010-10-31 18:43:46 +00:00
Duncan Sands
812f6878ea
Explain the return value of CCAssignFn.
...
llvm-svn: 117854
2010-10-31 10:29:14 +00:00
Rafael Espindola
660b7f5c4a
Add support for files with more than 65280 sections. No testcase since
...
it would be a bit too big :-)
llvm-svn: 117849
2010-10-31 00:16:26 +00:00
Chris Lattner
49227ad505
Resolve a terrible hack in tblgen: instead of hardcoding
...
"In32BitMode" and "In64BitMode" into tblgen, allow any
predicate that inherits from AssemblerPredicate.
llvm-svn: 117831
2010-10-30 19:38:20 +00:00
Chris Lattner
15e92ddd01
Implement (and document!) support for MnemonicAlias's to have Requires
...
directives, allowing things like this:
def : MnemonicAlias<"pop", "popl">, Requires<[In32BitMode]>;
def : MnemonicAlias<"pop", "popq">, Requires<[In64BitMode]>;
Move the rest of the X86 MnemonicAliases over to the .td file.
llvm-svn: 117830
2010-10-30 19:23:13 +00:00
Chris Lattner
7c61e4bca2
implement (and document!) the first kind of MC assembler alias, which
...
just remaps one mnemonic to another. Convert a few of the X86 aliases
from .cpp to .td code.
llvm-svn: 117815
2010-10-30 17:36:36 +00:00
Jim Grosbach
ddf6d9ec2f
80 columns.
...
llvm-svn: 117784
2010-10-30 13:46:39 +00:00
Chris Lattner
ee8dea6453
Rename alignof -> alignOf to avoid irritating C++'0x compilers,
...
PR8423, patch by nobled.
llvm-svn: 117774
2010-10-30 05:14:01 +00:00
Jakob Stoklund Olesen
0ab92619d0
Add SkipPHIsAndLabels from PHIElimination to MachineBasicBlock. It is needed
...
elsewhere.
llvm-svn: 117763
2010-10-30 01:26:14 +00:00
John Thompson
771289ca4a
Mult-alt constraint incremental development step 3.
...
llvm-svn: 117746
2010-10-29 23:37:38 +00:00
John Thompson
6115a7f1d4
Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support.
...
llvm-svn: 117667
2010-10-29 17:29:13 +00:00
Dan Gohman
b27988e5bd
Make Program::Wait differentiate execution failure due to the file
...
being not found from the file being not executable.
llvm-svn: 117664
2010-10-29 16:54:25 +00:00
Devang Patel
43516e02b6
Simplify.
...
- DIFile F = getFieldAs<DIFile>(6);
- return F.getDirectory();
+ return getFieldAs<DIFile>(6).getDirectory();
llvm-svn: 117662
2010-10-29 16:42:37 +00:00
Jakob Stoklund Olesen
1210a5145a
Print out the connected components in the verifier after complaining about their
...
multiplicity.
llvm-svn: 117630
2010-10-29 00:40:57 +00:00
Devang Patel
c40ecb9302
Fix indentation.
...
llvm-svn: 117601
2010-10-28 20:41:11 +00:00
Devang Patel
504232300c
Backward compatibility. Gracefully handle older versions of debug info.
...
llvm-svn: 117595
2010-10-28 20:08:13 +00:00
Devang Patel
a496603faf
Do not work too hard to find type's file info. There is a special field to record file info.
...
llvm-svn: 117588
2010-10-28 19:50:08 +00:00
Devang Patel
552a3a845c
Fix indentation.
...
llvm-svn: 117586
2010-10-28 19:40:13 +00:00
Mikhail Glushenkov
6aa7a4c180
80-col violations.
...
llvm-svn: 117580
2010-10-28 19:32:47 +00:00
Devang Patel
dcabf6f76a
Do not rely on context to find file info. It is already provided as a separate field.
...
llvm-svn: 117577
2010-10-28 19:14:28 +00:00
Rafael Espindola
1d1ff5485c
Implement TLSLD.
...
llvm-svn: 117547
2010-10-28 15:02:40 +00:00
Rafael Espindola
8372247e83
Implement DTPOFF.
...
llvm-svn: 117546
2010-10-28 14:48:59 +00:00
Rafael Espindola
c44c5b374a
Implement TLSLDM.
...
llvm-svn: 117544
2010-10-28 14:37:09 +00:00
Rafael Espindola
d8ef67f8b9
Implement VK_GOTNTPOFF and switch RelocNeedsGOT to use VariantKind.
...
llvm-svn: 117543
2010-10-28 14:22:44 +00:00
Rafael Espindola
68ec803155
Add support for R_386_TLS_GD, R_386_TLS_LE_32, R_386_TLS_IE and R_386_TLS_LE.
...
llvm-svn: 117494
2010-10-27 21:23:52 +00:00
Devang Patel
6c3a77ab58
Give a name to nameless argument.
...
llvm-svn: 117468
2010-10-27 18:08:31 +00:00
Mikhail Glushenkov
64c0814208
It is confusing to call a random-access iterator 'InputIterator'.
...
llvm-svn: 117441
2010-10-27 07:39:54 +00:00
Mikhail Glushenkov
a52646c12e
Trailing whitespace.
...
llvm-svn: 117440
2010-10-27 07:39:48 +00:00
Dale Johannesen
e7f07349e4
Use a MemIntrinsicSDNode for ISD::PREFETCH, which touches
...
memory, so a MachineMemOperand is useful (not propagated
into the MachineInstr yet). No functional change except
for dump output.
llvm-svn: 117413
2010-10-26 23:11:10 +00:00
Jakob Stoklund Olesen
3a4c0c13eb
Teach MachineBasicBlock::print() to annotate instructions and blocks with
...
SlotIndexes when available.
llvm-svn: 117392
2010-10-26 20:21:46 +00:00
Evan Cheng
324e678bb7
Use instruction itinerary to determine what instructions are 'cheap'.
...
llvm-svn: 117348
2010-10-26 02:08:50 +00:00
Jakob Stoklund Olesen
3988c3fb55
Make the spiller responsible for updating the LiveStacks analysis.
...
llvm-svn: 117337
2010-10-26 00:11:33 +00:00
Devang Patel
fa145a94d1
Simplify.
...
Do not count use of sdisel for single call instruction.
llvm-svn: 117316
2010-10-25 21:31:46 +00:00
Devang Patel
206643ef76
Update SelectBasicBlock signature. This should have been committed with r117310.
...
llvm-svn: 117312
2010-10-25 21:04:12 +00:00
Rafael Espindola
5748458e7d
Add support for emitting ARM file attributes.
...
llvm-svn: 117275
2010-10-25 17:50:35 +00:00
Charles Davis
42270b5d54
Add a new 'hotpatch' attribute. This attribute will insert a two-byte no-op
...
instruction at the beginning of each function that has the attribute, allowing
the function to be easily hooked and/or patched.
llvm-svn: 117264
2010-10-25 15:37:09 +00:00
Tobias Grosser
a0a36f64c6
Reference RegionPass to stop it being eliminated.
...
Contributed by: ether
llvm-svn: 117263
2010-10-25 15:36:50 +00:00
Duncan Sands
cfdc3382c9
Remove deprecated macro names. Hopefully this will unbreak the
...
smooshlab build. The breakage seems to be due to a collision
between LLVM's ATTRIBUTE_UNUSED and gcc's which was previously
hidden due to header files being included in a lucky order.
llvm-svn: 117260
2010-10-25 12:47:22 +00:00
Benjamin Kramer
86b0370b66
SmallVectorize.
...
llvm-svn: 117213
2010-10-23 17:10:24 +00:00
Chandler Carruth
7dd652736f
Move the remaining attribute macros to systematic names based on the attribute
...
name and prefixed with 'LLVM_'.
llvm-svn: 117203
2010-10-23 08:40:19 +00:00
Chandler Carruth
7799a873bb
Switch attribute macros to use 'LLVM_' as a prefix. We retain the old names
...
until other LLVM projects using these are cleaned up.
llvm-svn: 117200
2010-10-23 08:10:43 +00:00
Andrew Trick
7a1dadd47d
This is a prototype of an experimental register allocation
...
framework. It's purpose is not to improve register allocation per se,
but to make it easier to develop powerful live range splitting. I call
it the basic allocator because it is as simple as a global allocator
can be but provides the building blocks for sophisticated register
allocation with live range splitting.
A minimal implementation is provided that trivially spills whenever it
runs out of registers. I'm checking in now to get high-level design
and style feedback. I've only done minimal testing. The next step is
implementing a "greedy" allocation algorithm that does some register
reassignment and makes better splitting decisions.
llvm-svn: 117174
2010-10-22 23:09:15 +00:00
Evan Cheng
20b70697bb
Transfer implicit ops when forming load multiple and return instructions.
...
llvm-svn: 117151
2010-10-22 21:29:58 +00:00
Michael J. Spencer
81bb7d4ad7
I hate line endings.
...
llvm-svn: 117132
2010-10-22 19:14:39 +00:00
Michael J. Spencer
8daaefa006
Endian: Get rid of LLVM_IS_HOST_BIG_ENDIAN.
...
llvm-svn: 117124
2010-10-22 18:45:12 +00:00
Wesley Peck
488027efa3
Making the e_machine configurable by the target backend in ELFObjectWriter.
...
llvm-svn: 117099
2010-10-22 15:52:49 +00:00
Michael J. Spencer
93269f7395
Rename LLVM_IS_TARGET_BIG_ENDIAN to LLVM_IS_HOST_BIG_ENDIAN to reflect what it actually means.
...
llvm-svn: 117092
2010-10-22 08:47:28 +00:00
Michael J. Spencer
b9734a5b12
Support: Add Endian.h
...
llvm-svn: 117057
2010-10-21 20:28:21 +00:00
Duncan Sands
acbc34528c
Fix the cleanup process of exception information in JIT. Now JIT
...
deregisters registered by it FDE structures allowing consecutive
JIT runs to succeed. Patch by Yuri. Fixes PR8285.
llvm-svn: 117004
2010-10-21 08:57:29 +00:00
Wesley Peck
00cc1b6983
Adding the EM_MBLAZE value to the machine architectures enumeration to
...
support future ELF file generation by the MBlaze backend.
llvm-svn: 116985
2010-10-21 02:52:59 +00:00
Michael J. Spencer
b9cffadc06
CodeGen-Windows: Only emit _fltused if a VarArg function is called with floating point args.
...
This should be the minimum set of functions that could possibly need it.
llvm-svn: 116978
2010-10-21 00:08:21 +00:00
Owen Anderson
9e9ae1b048
Attempt to fix valgrind complaining about (benign) leaks in pass registration by having PassRegistry
...
delete PassInfo objects that were created using new-style initialization.
llvm-svn: 116959
2010-10-20 22:22:30 +00:00
Dale Johannesen
58fe3193a6
Remove Synthesizable from the Type system; as MMX vector
...
types are no longer Legal on X86, we don't need it.
No functional change. 8499854.
llvm-svn: 116947
2010-10-20 21:32:10 +00:00
Chandler Carruth
7763c845be
Add a comment about ATTRIBUTE_UNUSED to avoid further confusion over when to
...
use it.
llvm-svn: 116920
2010-10-20 08:44:27 +00:00
Tobias Grosser
88ce93b0eb
Add RegionPass support.
...
A RegionPass is executed like a LoopPass but on the regions detected by the
RegionInfo pass instead of the loops detected by the LoopInfo pass.
llvm-svn: 116905
2010-10-20 01:54:44 +00:00
Dan Gohman
c781a28a1d
Make CodeGen TBAA-aware.
...
llvm-svn: 116890
2010-10-20 00:31:05 +00:00
Jim Grosbach
b390dd1bd5
Spelling typo fix. s/incput/input/. Thanks, Bob!
...
llvm-svn: 116880
2010-10-19 23:39:23 +00:00
Jim Grosbach
a8c0be5343
Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do any
...
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268
llvm-svn: 116879
2010-10-19 23:27:08 +00:00
Dan Gohman
399ef0b44a
Move NoAA out of BasicAliasAnalysis.cpp into its own file, now that
...
it doesn't have a special relationship with BasicAliasAnalysis
anymore.
llvm-svn: 116876
2010-10-19 23:09:08 +00:00
Dan Gohman
befe1767ff
Reapply r116831 and r116839, converting AliasAnalysis to use
...
uint64_t, plus fixes for places I missed before.
llvm-svn: 116875
2010-10-19 22:54:46 +00:00
Douglas Gregor
a598c0fbce
Extend StringRef's edit-distance algorithm to permit an upper bound on the allowed edit distance
...
llvm-svn: 116867
2010-10-19 22:13:48 +00:00
Dan Gohman
de3c49438f
Revert r116831 and r116839, which are breaking selfhost builds.
...
llvm-svn: 116858
2010-10-19 21:06:16 +00:00
Jakob Stoklund Olesen
02d7f65c49
Shrink MachineOperand from 40 to 32 bytes on 64-bit hosts.
...
Pull an unsigned out of the Contents union such that it has the same size as two
pointers and no padding.
Arrange members such that the Contents union and all pointers can be 8-byte
aligned without padding.
This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
unaffected.
llvm-svn: 116857
2010-10-19 20:56:32 +00:00
Owen Anderson
933c8cc6ed
Remove extraneous slash.
...
llvm-svn: 116851
2010-10-19 19:54:48 +00:00
Evan Cheng
1c8dafd12a
Re-enable register pressure aware machine licm with fixes. Hoist() may have
...
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.
llvm-svn: 116845
2010-10-19 18:58:51 +00:00
Dan Gohman
37a9b813f5
Oops, check in all the files for converting AliasAnalysis to
...
use uint64_t.
llvm-svn: 116839
2010-10-19 18:08:27 +00:00
Owen Anderson
65610b8589
Factor out the call-once implementation into its own macro.
...
llvm-svn: 116832
2010-10-19 18:02:06 +00:00
Owen Anderson
46990c17f7
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
...
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.
Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.
I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.
llvm-svn: 116820
2010-10-19 17:21:58 +00:00
Daniel Dunbar
6ff550c84d
Revert r116781 "- Add a hook for target to determine whether an instruction def
...
is", which breaks some nightly tests.
llvm-svn: 116816
2010-10-19 17:14:24 +00:00
Mikhail Glushenkov
0c09a4b97f
GlobalOpt: EvaluateFunction() must not evaluate stores to weak_odr globals.
...
Fixes PR8389.
llvm-svn: 116812
2010-10-19 16:47:23 +00:00
Mikhail Glushenkov
e0b70cf701
Trailing whitespace.
...
llvm-svn: 116811
2010-10-19 16:47:15 +00:00
Chandler Carruth
3f16e8b729
First step to allowing the resource directory of Clang to be adjusted for
...
strange packaging environments. The primary result of this is to expose
a (normally empty) CLANG_RESOURCE_DIR string in the autoconf and CMake builds.
This will in turn be used by a subsequent commit to Clang.
Regenerated configure and config.h.in thanks to Nick. =D
llvm-svn: 116802
2010-10-19 08:21:25 +00:00
Evan Cheng
9c3f6f486e
- Add a hook for target to determine whether an instruction def is
...
"long latency" enough to hoist even if it may increase spilling. Reloading
a value from spill slot is often cheaper than performing an expensive
computation in the loop. For X86, that means machine LICM will hoist
SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
instructions.
- Enable register pressure aware machine LICM by default.
llvm-svn: 116781
2010-10-19 00:55:07 +00:00
Chandler Carruth
755dd8000d
Move the definition of this to the source file to anchor the vtable.
...
llvm-svn: 116779
2010-10-19 00:37:30 +00:00
Dan Gohman
8b332ffb8c
Make the representation of AliasSets explicitly differentiate
...
between "not known yet" and "known no tbaa info" so that it
can merge them properly.
llvm-svn: 116767
2010-10-18 23:31:47 +00:00
Chandler Carruth
524faec5da
Add a virtual destructor to silence a GCC warning.
...
llvm-svn: 116766
2010-10-18 23:18:51 +00:00
Dan Gohman
6efd04961b
Don't pass the raw invalid pointer used to represent conflicting
...
TBAA information to AliasAnalysis.
llvm-svn: 116751
2010-10-18 21:28:00 +00:00
Bill Wendling
3b3d9aaa86
Don't recompute MachineRegisterInfo in the Optimize* method.
...
llvm-svn: 116750
2010-10-18 21:22:31 +00:00
Dan Gohman
64affb7be2
Make AliasSetTracker TBAA-aware, enabling TBAA-enabled LICM.
...
llvm-svn: 116743
2010-10-18 20:44:50 +00:00
Dan Gohman
df5c887e86
Add TypeBasedAliasAnalysis to the standard pass lists. Note that it
...
is currently inert by default.
llvm-svn: 116732
2010-10-18 18:50:27 +00:00
Dan Gohman
6aff5b94ff
Make BasicAliasAnalysis a normal AliasAnalysis implementation which
...
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.
Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.
Update tests to explicitly request -basicaa.
llvm-svn: 116720
2010-10-18 18:04:47 +00:00
Rafael Espindola
be5c52d2dc
Add a MCObjectFormat class so that code common to all targets that use a
...
single object format can be shared.
This also adds support for
mov zed+(bar-foo), %eax
on ELF and COFF targets.
llvm-svn: 116675
2010-10-16 18:23:53 +00:00
Michael J. Spencer
f9a7c39ecc
MC-COFF: Add support for default-null weak externals.
...
llvm-svn: 116666
2010-10-16 08:25:57 +00:00
Michael J. Spencer
e57b670425
X86-Windows: Emit an undefined global __fltused symbol when targeting Windows
...
if any floating point arguments are passed to an external function.
llvm-svn: 116665
2010-10-16 08:25:41 +00:00
Michael J. Spencer
16ad2c129c
Whitespace!
...
llvm-svn: 116664
2010-10-16 08:25:21 +00:00
Jim Grosbach
9e98b1cde0
Grammar.
...
llvm-svn: 116557
2010-10-15 01:44:59 +00:00
Francois Pichet
ad0548d742
Always use binary mode for output stream. This is important to prevent unwanted end of line conversion on Windows. Should not affect Unix where O_BINARY is not defined. This fix /clang/test/lexer/preamble.c XFAIL on WIN32.
...
llvm-svn: 116509
2010-10-14 20:30:58 +00:00
Owen Anderson
467d56737b
Try again at implementing thread-safe lazy pass initialization, without depending on static local initialization
...
being threadsafe AND ensuring that initialization is complete by the time the initializeFooPass method returns.
llvm-svn: 116492
2010-10-14 17:59:03 +00:00
Owen Anderson
5114ec184e
Revert r116489. It included some changes I didn't intend to commit, and broke the buildbots.
...
llvm-svn: 116491
2010-10-14 17:36:50 +00:00
Owen Anderson
2928dbea72
Apparently MSVC doesn't support thread-safe static local initialization. Roll our own solution instead.
...
llvm-svn: 116489
2010-10-14 17:26:06 +00:00
Chris Lattner
451a0accb5
add uadd_ov/usub_ov to apint, consolidate constant folding
...
logic to use the new APInt methods. Among other things this
implements rdar://8501501 - llvm.smul.with.overflow.i32 should constant fold
which comes from "clang -ftrapv", originally brought to my attention from PR8221.
llvm-svn: 116457
2010-10-14 00:05:07 +00:00
Chris Lattner
365326538a
missed a line :(
...
llvm-svn: 116456
2010-10-13 23:57:00 +00:00
Chris Lattner
093d5fe0a9
constify these methods.
...
llvm-svn: 116455
2010-10-13 23:54:10 +00:00
Chris Lattner
70a78ab2c5
add a few operations for signed operations that also
...
return an overflow flag.
llvm-svn: 116452
2010-10-13 23:46:33 +00:00
Owen Anderson
2ea9b016d8
Conversely, Analysis-implementations do NOT need to initialize the AnalysisGroup. It will only matter when
...
someone tries to require that AG, in which case it is the requester's responsibility to initialize it.
llvm-svn: 116442
2010-10-13 21:55:07 +00:00