Commit Graph

143975 Commits

Author SHA1 Message Date
Saleem Abdulrasool 7a786f8c7a [clang] fix test execution command
Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
llvm-svn: 175387
2013-02-17 04:13:35 +00:00
Saleem Abdulrasool 5f25bc30d1 [CodeGen] tighten objc ivar invariant.load attribution
An ivar ofset cannot be marked as invariant load in all cases.  The ivar offset
is a lazily initialised constant, which is dependent on an objc_msgSend
invocation to perform a fixup of the offset.  If the load is being performed on
a method implemented by the class then this load can safely be marked as an
inviarant because a message must have been passed to the class at some point,
forcing the ivar offset to be resolved.

An additional heuristic that can be used to identify an invariant load would be
if the ivar offset base is a parameter to an objc method.  However, without the
parameters available at hand, this is currently not possible.

Reviewed-by: John McCall <rjmccall@apple.com>
Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
llvm-svn: 175386
2013-02-17 04:03:34 +00:00
Cameron Zwarich 1286ef9c89 Use ArrayRef instead of a reference to a SmallVectorImpl.
llvm-svn: 175385
2013-02-17 03:48:23 +00:00
Dmitri Gribenko b633eab8cb Fix for ARM: functions don't have extra attributes there, so {{.*}} is ""
While there, explicitly declare functions to remove warnings.

llvm-svn: 175384
2013-02-17 03:06:16 +00:00
Cameron Zwarich ddeabf78a0 Fix a conversion from a forward iterator to a reverse iterator in
MachineBasicBlock::SplitCriticalEdge. Since this is an iterator rather than
an instr_iterator, the isBundled() check only passes if getFirstTerminator()
returned end() and the garbage memory happens to lean that way.

Multiple successors can be present without any terminator instructions in the
case of exception handling with a fallthrough.

llvm-svn: 175383
2013-02-17 01:45:04 +00:00
Cameron Zwarich bfebb41984 Add support for updating the LiveIntervals of registers used by 'exotic'
terminators that actually have register uses when splitting critical edges.

This commit also introduces a method repairIntervalsInRange() on LiveIntervals,
which allows for repairing LiveIntervals in a small range after an arbitrary
target hook modifies, inserts, and removes instructions. It's pretty limited
right now, but I hope to extend it to support all of the things that are done
by the convertToThreeAddress() target hooks.

llvm-svn: 175382
2013-02-17 00:10:44 +00:00
Bill Wendling 23242098e7 The transform is:
(or (bool?A:B),(bool?C:D)) --> (bool?(or A,C):(or B,D))

By the time the OR is visited, both the SELECTs have been visited and not
optimized and the OR itself hasn't been transformed so we do this transform in
the hopes that the new ORs will be optimized.

The transform is explicitly disabled for vector-selects until "codegen matures
to handle them better".

Patch by Muhammad Tauqir!

llvm-svn: 175380
2013-02-16 23:41:36 +00:00
Reed Kotler 61b474f97d Clean up mips16 td file in preparation for massive pseudo lowering work.
llvm-svn: 175379
2013-02-16 23:39:52 +00:00
Greg Clayton 8df92678a1 <rdar://problem/13121056>
Fixed a crasher when the ConnectionFileDescriptor was used in a process with over FD_SETSIZE (1024) files open. It would corrupt the stack and cause the stack checker to assert and kill the program.

The final fix was to "#define _DARWIN_UNLIMITED_SELECT" at the top of the one and only file that uses select () in the LLDB codebase and then make an array of "fd_set" objects so they can handle more than 1024 file descriptors. The new code can handle as many file descriptors as a process can create.    
    

llvm-svn: 175378
2013-02-16 22:53:04 +00:00
Greg Clayton e48310dc6b Added a kqueue class which isn't being used yet, but was part of trying to work around the limitations with the unix select() call and how it is limited to FD_SETSIZE file descriptors.
Also added a TimeSpecTimeout class which can be used with any calls that take a "struct timespec *" as an argument. It is used by the KQueue class.

Also updated some project settings.

llvm-svn: 175377
2013-02-16 22:46:58 +00:00
Dmitri Gribenko 20b16ace16 Use trailing documentation comments properly
Patch by Alexander Zinenko.

llvm-svn: 175376
2013-02-16 22:21:38 +00:00
Dmitri Gribenko 2b7dd6b147 Documentation: correct syntax (one missing comma, one extra comma)
llvm-svn: 175375
2013-02-16 20:07:40 +00:00
Dmitri Gribenko 97499ed60e Use the correct type to hold enumeration values
llvm-svn: 175374
2013-02-16 20:03:26 +00:00
Benjamin Kramer 6f37daccb8 GCC doesn't like ++ on enums.
llvm-svn: 175373
2013-02-16 19:22:28 +00:00
Benjamin Kramer cae143dc1b Remove comma at the end of enum. Still my favourite C++11 feature.
llvm-svn: 175372
2013-02-16 19:15:28 +00:00
Renato Golin b2603ede95 Typo
llvm-svn: 175371
2013-02-16 19:14:59 +00:00
Benjamin Kramer 45e7d53cf4 Turn the enum attributes DenseSet in AttrBuilder into a set of bits.
Avoids malloc and is a lot denser. We lose iteration over target independent
attributes, but that's a strange interface anyways and didn't have any users
outside of AttrBuilder.

llvm-svn: 175370
2013-02-16 19:13:18 +00:00
Reed Kotler 188dad0eeb One more try to make this look nice. I have lots of pseudo lowering
as well as 16/32 bit variants to do and so I want this to look nice
when I do it. I've been experimenting with this. No new test cases
are needed.

llvm-svn: 175369
2013-02-16 19:04:29 +00:00
Benjamin Kramer ae526d106a Replace erase loop with std::remove_if.
This avoids unnecessary copies. No functionality change.

llvm-svn: 175367
2013-02-16 17:06:38 +00:00
Benjamin Kramer 981de9a9da Replace loop with std::find.
No functionality change.

llvm-svn: 175366
2013-02-16 17:06:32 +00:00
Jakub Staszak 5c262f505e LegalizeDAG.cpp doesn't need DenseMap.
llvm-svn: 175365
2013-02-16 16:15:42 +00:00
Jakub Staszak 11bd83551c Reduce indents in LSRInstance::NarrowSearchSpaceByCollapsingUnrolledCode method.
No functionality change.

llvm-svn: 175364
2013-02-16 16:08:15 +00:00
NAKAMURA Takumi f86d12caf0 [msvc x64] Update X86CompilationCallback_Win64.asm corresponding to r175267.
llvm-svn: 175363
2013-02-16 16:04:29 +00:00
Jakub Staszak 87609f5a29 Use const reference instead of vector object when passing an argument to
updateScheduledPressure method.

llvm-svn: 175362
2013-02-16 15:47:26 +00:00
NAKAMURA Takumi eddbc713e1 Target/R600/CMakeLists.txt: Prune SILowerLiteralConstants.cpp corresponding to r175354.
llvm-svn: 175361
2013-02-16 15:30:28 +00:00
Benjamin Kramer 64bf78046e MCParser: Reject .balign with non-pow2 alignments.
GNU as rejects them and there are configure scripts in the wild that check if
the assembler rejects ".align 3" to determine whether the alignment is in bytes
or powers of two.

llvm-svn: 175360
2013-02-16 15:00:16 +00:00
Jakub Staszak d784d96074 Minor cleanups. No functionality change.
llvm-svn: 175359
2013-02-16 13:34:26 +00:00
Jakub Staszak 1f62596fde Add even more constatness in MachineDominators.h.
llvm-svn: 175358
2013-02-16 12:36:32 +00:00
Jakub Staszak 6a62c29f6b Replace "check:" wth "CHECK:".
Also fix one test by changing "vpermilps" to "vpshufd".

llvm-svn: 175357
2013-02-16 12:16:56 +00:00
Christian Konig b559b079b4 R600/SI: Add pattern to simplify i64 loading
This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175356
2013-02-16 11:28:36 +00:00
Christian Konig a881179ffe R600/SI: nuke SReg_1 v3
It's completely unnecessary and can be replace with proper
SReg_64 handling instead.

This actually fixes a piglit test on SI.

v2: use correct register class in addRegisterClass,
    set special classes as not allocatable
v3: revert setting special classes as not allocateable

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175355
2013-02-16 11:28:30 +00:00
Christian Konig c756cb9901 R600/SI: cleanup literal handling v3
Seems to be allot simpler, and also paves the
way for further improvements.

v2: rebased on master, use 0 in BUFFER_LOAD_FORMAT_XYZW,
    use VGPR0 in dummy EXP, avoid compiler warning, break
    after encoding the first literal.
v3: correctly use V_ADD_F32_e64

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175354
2013-02-16 11:28:22 +00:00
Christian Konig b9e281a723 R600/SI: replace AllReg_* with [SV]Src_* v2
Mark all the operands that can also have an immediate.

v2: SOFFSET is also an SSrc_32 operand

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175353
2013-02-16 11:28:13 +00:00
Christian Konig 3c3a7bfb06 R600/SI: fix VOPC encoding v2
Previously it only worked because of coincident.

v2: fix 64bit versions, use 0x80 (inline 0) instead of SGPR0
    for the unused SRC2

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175352
2013-02-16 11:28:07 +00:00
Christian Konig e3cba88714 R600/SI: move *_Helper definitions to SIInstrFormat.td
This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175351
2013-02-16 11:28:02 +00:00
Christian Konig 8590c1e371 R600/SI: remove some more unused code
This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175350
2013-02-16 11:27:56 +00:00
Christian Konig d886099f13 R600/structurizer: improve inverting conditions
Stop adding more instructions than necessary.

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175349
2013-02-16 11:27:50 +00:00
Christian Konig fc6a985c12 R600/structurizer: improve loop handling
Generate more than one loop if it seems to make sense.

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175348
2013-02-16 11:27:45 +00:00
Christian Konig b5d8866b84 R600/structurizer: improve finding condition values
Using the new NearestCommonDominator class.

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175347
2013-02-16 11:27:40 +00:00
Christian Konig 0bccf9d60b R600/structurizer: improve PHI value finding
Using the new NearestCommonDominator class.

This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175346
2013-02-16 11:27:35 +00:00
Christian Konig d08e3d753e R600/structurizer: add class to find the Nearest Common Dominator
This is a candidate for the stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175345
2013-02-16 11:27:29 +00:00
Jakub Staszak 36eae22de6 Add some constantness in Machine Dominators.
llvm-svn: 175344
2013-02-16 11:08:16 +00:00
Jakub Staszak ec3458a74f Remove trailing spaces.
llvm-svn: 175343
2013-02-16 11:02:28 +00:00
Reed Kotler 8cf5103b2b Use a different scheme to chose 16/32 variants. This scheme is more
consistent with how BuildMI works. No new tests needed. All should work
the same as before.

llvm-svn: 175342
2013-02-16 09:47:57 +00:00
Filipe Cabecinhas 103e16e4cc Include a small argparse compatibility layer for Python < 2.7
llvm-svn: 175341
2013-02-16 09:05:23 +00:00
James Dennett 49049ee8c7 Documentation cleanup: make a \brief be brief, and fix a bad use of \see.
llvm-svn: 175340
2013-02-16 08:16:47 +00:00
James Dennett bd59295fb7 Documentation cleanup: use \brief, and don't repeat the identifier being
declared.

llvm-svn: 175339
2013-02-16 07:45:22 +00:00
Michael J. Spencer 344232c179 [ELF] Add STN_UNDEF.
llvm-svn: 175338
2013-02-16 01:56:36 +00:00
Greg Clayton 7a168161de Get rid of a warning.
llvm-svn: 175337
2013-02-16 01:47:52 +00:00
Bill Wendling 61375d8953 Reinitialize the ivars in the subtarget so that they can be reset with the new features.
llvm-svn: 175336
2013-02-16 01:36:26 +00:00