Daniel Dunbar [Thu, 15 Aug 2013 22:52:20 +0000 (22:52 +0000)]
[lit] Remove some done TODOs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188502
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Thu, 15 Aug 2013 22:31:40 +0000 (22:31 +0000)]
Support X86_64_GOTLoad relocations in RuntimeDyldMachO by treating them the
same way as X86_64_GOT relocations. The 'Load' part of GOTLoad is just an
optimization hint for the linker anyway, and can be safely ignored.
This patch also fixes some minor issues with the relocations introduced while
processing an X86_64_GOT[Load]: the addend for the GOT entry should always be
zero, and the addend for the replacement relocation at the original offset
should be the same as the addend of the relocation being replaced.
I haven't come up with a good way of testing this yet, but I'm working on it.
This fixes <rdar://problem/
14651564>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188499
91177308-0d34-0410-b5e6-
96231b3b80d8
Yunzhong Gao [Thu, 15 Aug 2013 20:58:59 +0000 (20:58 +0000)]
Fixing a corner-case bug in strchr and strrchr lib call optimizations where
the input character is not converted to char before comparing with zero.
The patch was discussed in this thread:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
20130812/184069.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188489
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Thu, 15 Aug 2013 20:54:38 +0000 (20:54 +0000)]
make arm-use-movt available for all ARM
Before this patch this flag is IOS specific, but is also
useful for bare project like bootloaders / kernels etc,
since movw / movt prevents simple relocation. Therefore
make this flag more commonly available.
note: this patch depends on a similiar rename in clang
Patch by Jeroen Hofstee.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188487
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Thu, 15 Aug 2013 20:45:13 +0000 (20:45 +0000)]
make arm-reserve-r9 available for all ARM
r9 is defined as a platform-specific register in the ARM EABI.
It can be reserved for a special purpose or be used as a general
purpose register. Add support for reserving r9 for all ARM, while
leaving the IOS usage unchanged.
Patch by Jeroen Hofstee.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188485
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 15 Aug 2013 20:25:44 +0000 (20:25 +0000)]
Make a few more things const.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188484
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 15 Aug 2013 20:21:49 +0000 (20:21 +0000)]
Use a reference instead of making an unnecessary copy. Also use 'const'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188483
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 15 Aug 2013 18:51:12 +0000 (18:51 +0000)]
DataFlowSanitizer: Add a debugging feature to help us track nonzero labels.
Summary:
When the -dfsan-debug-nonzero-labels parameter is supplied, the code
is instrumented such that when a call parameter, return value or load
produces a nonzero label, the function __dfsan_nonzero_label is called.
The idea is that a debugger breakpoint can be set on this function
in a nominally label-free program to help identify any bugs in the
instrumentation pass causing labels to be introduced.
Reviewers: eugenis
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1405
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188472
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 15 Aug 2013 18:46:14 +0000 (18:46 +0000)]
Constify the function parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188469
91177308-0d34-0410-b5e6-
96231b3b80d8
Joey Gouly [Thu, 15 Aug 2013 16:02:44 +0000 (16:02 +0000)]
Drive-by fix for a doxygen comment in MachineInstr.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188467
91177308-0d34-0410-b5e6-
96231b3b80d8
Mihai Popa [Thu, 15 Aug 2013 15:43:06 +0000 (15:43 +0000)]
This fixes three issues related to Thumb literal loads:
1. The offset range for Thumb1 PC relative loads is [0..1020] and not [-1024..1020]
2. Thumb2 PC relative loads may define the PC, so the restriction placed on target register is removed
3. Removes unneeded alias between "ldr.n" and t1LDRpci. ".n" is actually stripped by both tablegen
and the ASM parser, so this alias rule really does nothing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188466
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Thu, 15 Aug 2013 14:22:07 +0000 (14:22 +0000)]
[Mips][msa] Added the simple builtins (madd_q to xori)
Includes:
madd_q, maddr_q, maddv, max_[asu], maxi_[su], min_[asu], mini_[su], mod_[su],
msub_q, msubr_q, msubv, mul_q, mulr_q, mulv, nloc, nlzc, nori, ori, pckev,
pckod, pcnt, sat_[su], shf, sld, sldi, sll, slli, splat, splati, sr[al],
sr[al]i, subs_[su], subss_u, subus_s, subv, subvi, vshf, xori
Patch by Daniel Sanders
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188460
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Thu, 15 Aug 2013 13:45:36 +0000 (13:45 +0000)]
[Mips][msa] Added the simple builtins (fadd to ftq)
Includes:
fadd, fceq, fcg[et], fclass, fcl[et], fcne, fcun, fdiv, fexdo, fexp2,
fexup[lr], ffint_[su], ffql, ffqr, fill, flog2, fmadd, fmax, fmax_a, fmin,
fmin_a, fmsub, fmul, frint, frcp, frsqrt, fseq, fsge, fsgt, fsle, fslt,
fsne, fsqr, fsub, ftint_s, ftq
Patch by Daniel Sanders
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188458
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Thu, 15 Aug 2013 12:24:57 +0000 (12:24 +0000)]
[Mips][msa] Added the simple builtins (add_a to dpsub[su], ilvev to ldi)
Includes:
add_a, adds_[asu], addv, addvi, andi.b, asub_[su].[bhwd], aver?_[su]_[bhwd],
bclr, bclri, bins[lr], bins[lr]i, bmnzi, bmzi, bneg, bnegi, bseli, bset, bseti,
c(eq|ne), c(eq|ne)i, cl[et]_[su], cl[et]i_[su], copy_[su].[bhw], div_[su],
dotp_[su], dpadd_[su], dpsub_[su], ilvev, ilvl, ilvod, ilvr, insv, insve,
ldi
Patch by Daniel Sanders
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188457
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 15 Aug 2013 08:38:25 +0000 (08:38 +0000)]
Revert r188449 as it turns out we're just missing the instructions that need the v16i32/v16f32 matching.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188454
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Thu, 15 Aug 2013 08:26:11 +0000 (08:26 +0000)]
Clang and AArch64 backend patches to support shll/shl and vmovl instructions and ACLE functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188451
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 15 Aug 2013 07:30:51 +0000 (07:30 +0000)]
Don't let isPermImmMask handle v16i32 since VPERMI doesn't match on that type. Remove 128-bit vector handling from isPermImmMask too, it's covered by isPSHUFDMask.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188449
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 15 Aug 2013 07:11:34 +0000 (07:11 +0000)]
Tentative fix for global-buffer-overflow caused by r188426. Found by AddressSanitizer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188448
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 15 Aug 2013 05:57:07 +0000 (05:57 +0000)]
Use MVT instead of EVT in X86ISelDAGToDAG since all the types should be legal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188446
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 15 Aug 2013 05:33:45 +0000 (05:33 +0000)]
Use MVT in place of EVT in more X86 operation lowering functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188445
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Thu, 15 Aug 2013 04:16:12 +0000 (04:16 +0000)]
Fixed typo in CMakeLists.txt.
We were marking both LLVMBUILDOUTPUT and LLVMBUILDERRORS as
ERROR_VARIABLES when clearly LLVMBUILDOUTPUT should be marked as
OUTPUT_VARIABLE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188444
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 15 Aug 2013 02:44:19 +0000 (02:44 +0000)]
Replace getValueType().getSimpleVT() with getSimpleValueType().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188442
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 15 Aug 2013 02:33:50 +0000 (02:33 +0000)]
Replace getValueType().getSimpleVT() with getSimpleValueType(). Also remove one weird cast from MVT->EVT just to call getSimpleVT().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188441
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Lacey [Wed, 14 Aug 2013 23:50:16 +0000 (23:50 +0000)]
Auto-compute live intervals on demand.
When new virtual registers are created during splitting/spilling, defer
creation of the live interval until we need to use the live interval.
Along with the recent commits to notify LiveRangeEdit when new virtual
registers are created, this makes it possible for functions like
TargetInstrInfo::loadRegFromStackSlot() and
TargetInstrInfo::storeRegToStackSlot() to create multiple virtual
registers as part of the process of generating loads/stores for
different register classes, and then have the live intervals for those
new registers computed when they are needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188437
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Lacey [Wed, 14 Aug 2013 23:50:11 +0000 (23:50 +0000)]
Add the MachineInstrSpan class.
MachineInstrSpan is initialized with a MachineBasicBlock::iterator,
and is intended to track which instructions are inserted before/after
that instruction from the time the MachineInstrSpan is created.
It provides a begin()/end() interface to walk the range of
instructions inserted around the initial instruction (including that
initial instruction).
It also provides a getInitial() interface to return the initial
iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188436
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Lacey [Wed, 14 Aug 2013 23:50:09 +0000 (23:50 +0000)]
Notify LiveRangeEdit of new virtual registers.
Add a delegate class to MachineRegisterInfo with a single virtual
function, MRI_NoteNewVirtualRegister(). Update LiveRangeEdit to inherit
from this delegate class and override the definition of the callback
with an implementation that tracks the newly created virtual registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188435
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Lacey [Wed, 14 Aug 2013 23:50:04 +0000 (23:50 +0000)]
Track new virtual registers by register number.
Track new virtual registers by register number, rather than by the live
interval created for them. This is the first step in separating the
creation of new virtual registers and new live intervals. Eventually
live intervals will be created and populated on demand after the virtual
registers have been created and used in instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188434
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:25:00 +0000 (23:25 +0000)]
R600/SI: Improve legalization of vector operations
This should fix hangs in the OpenCL piglit tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188431
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:24:53 +0000 (23:24 +0000)]
R600/SI: Replace v1i32 type with i32 in imageload and sample intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188430
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:24:45 +0000 (23:24 +0000)]
R600/SI: Convert v16i8 resource descriptors to i128
Now that compute support is better on SI, we can't continue using v16i8
for descriptors since this is also a legal type in OpenCL.
This patch fixes numerous hangs with the piglit OpenCL test and since
we now use a target specific DAG node for LOAD_CONSTANT with the
correct MemOperandFlags, this should also fix:
https://bugs.freedesktop.org/show_bug.cgi?id=66805
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188429
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:24:37 +0000 (23:24 +0000)]
R600/SI: Use i8 types for resource descriptors in tests
We switched from i32 to i8 types a while ago and the tests were never
updated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188428
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:24:32 +0000 (23:24 +0000)]
R600/SI: Lower BUILD_VECTOR to REG_SEQUENCE v2
Using REG_SEQUENCE for BUILD_VECTOR rather than a series of INSERT_SUBREG
instructions should make it easier for the register allocator to coalasce
unnecessary copies.
v2:
- Use an SGPR register class if all the operands of BUILD_VECTOR are
SGPRs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188427
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:24:24 +0000 (23:24 +0000)]
R600/SI: Choose the correct MOV instruction for copying immediates
The instruction selector will now try to infer the destination register
so it can decided whether to use V_MOV_B32 or S_MOV_B32 when copying
immediates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188426
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 23:24:17 +0000 (23:24 +0000)]
R600/SI: Assign a register class to the $vaddr operand for MIMG instructions
The previous code declared the operand as unknown:$vaddr, which made
it possible for scalar registers to be used instead of vector registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188425
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 23:15:39 +0000 (23:15 +0000)]
[llvm-build] Make Py3 compatible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188424
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 14 Aug 2013 22:28:36 +0000 (22:28 +0000)]
DataFlowSanitizer: move abilist input file to Inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188423
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 14 Aug 2013 22:23:05 +0000 (22:23 +0000)]
DebugInfo: Prefer references over pointers, pass by const reference for a type that will grow in the future
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188422
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 22:22:14 +0000 (22:22 +0000)]
R600/SI: Handle MSAA texture targets
Patch by: Marek Olšák
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188421
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 22:22:09 +0000 (22:22 +0000)]
R600/SI: Allow conversion between v32i8 and v8i32
Patch by: Marek Olšák
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188420
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 22:22:03 +0000 (22:22 +0000)]
R600/SI: Fix an obvious typo
Patch by: Marek Olšák
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188419
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 14 Aug 2013 22:21:57 +0000 (22:21 +0000)]
R600/SI: Add pattern for fp_to_uint
This fixes the F2U opcode for the Mesa driver.
Patch by: Marek Olšák
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188418
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 22:21:11 +0000 (22:21 +0000)]
[lit] Add test coverage of gtest format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188417
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 22:21:01 +0000 (22:21 +0000)]
[lit] Ensure test output is converted to strings where possible.
- This cleans up the text output of failing tests when run under PY3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188416
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Lacey [Wed, 14 Aug 2013 22:11:42 +0000 (22:11 +0000)]
Fix small typo: s/succ/Succ/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188415
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 14 Aug 2013 20:51:38 +0000 (20:51 +0000)]
DataFlowSanitizer: Instrumentation for memset.
Differential Revision: http://llvm-reviews.chandlerc.com/D1395
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188412
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Wed, 14 Aug 2013 20:05:04 +0000 (20:05 +0000)]
Actually fix PPC64 64-bit GPR inline asm constraint matching
This is a follow-up to r187693, correcting that code to request the correct
register class. The previous version, with the wrong register class, was not
really correcting the constraints, but rather was removing them. Coincidentally,
this fixed the failing test case in r187693, but obviously created other
problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188407
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 14 Aug 2013 18:54:12 +0000 (18:54 +0000)]
DataFlowSanitizer: greylist is now ABI list.
This replaces the old incomplete greylist functionality with an ABI
list, which can provide more detailed information about the ABI and
semantics of specific functions. The pass treats every function in
the "uninstrumented" category in the ABI list file as conforming to
the "native" (i.e. unsanitized) ABI. Unless the ABI list contains
additional categories for those functions, a call to one of those
functions will produce a warning message, as the labelling behaviour
of the function is unknown. The other supported categories are
"functional", "discard" and "custom".
- "discard" -- This function does not write to (user-accessible) memory,
and its return value is unlabelled.
- "functional" -- This function does not write to (user-accessible)
memory, and the label of its return value is the union of the label of
its arguments.
- "custom" -- Instead of calling the function, a custom wrapper __dfsw_F
is called, where F is the name of the function. This function may wrap
the original function or provide its own implementation.
Differential Revision: http://llvm-reviews.chandlerc.com/D1345
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188402
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 18:22:41 +0000 (18:22 +0000)]
[lit] Support parsing scripts with inconsistent or invalid encodings.
- For whatever reason, we have a lot of test files with bogus unicode
characters. This patch allows those scripts to still be parsed on Python3 by
changing the parsing logic to work on binary files, and only require the
actual script commands to be convertible to ascii.
- This patch has been tweaked to now ensure that the command strings are not of
unicode type on Python 2.6-7.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188398
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 14 Aug 2013 18:21:51 +0000 (18:21 +0000)]
Use the MSVC __cpuid intrinsic instead of inline asm
This works around PR16830 in LLVM when self-hosting clang on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188397
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 14 Aug 2013 17:28:52 +0000 (17:28 +0000)]
Remove unnecessary parameter to RenumberValues.
Patch by Matthias Braun!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188393
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 14 Aug 2013 17:28:49 +0000 (17:28 +0000)]
Remove unused function.
Patch by Matthias Braun!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188392
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 14 Aug 2013 17:28:46 +0000 (17:28 +0000)]
Improve misleading comment.
Patch by Matthias Braun!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188391
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 14 Aug 2013 17:28:44 +0000 (17:28 +0000)]
Remove declaration of nonexistant function.
Patch by Matthias Braun!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188390
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 14 Aug 2013 17:28:42 +0000 (17:28 +0000)]
LiveIntervalUnion is not used in RegAllocBase.
Patch by Matthias Braun!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188389
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 14 Aug 2013 17:28:39 +0000 (17:28 +0000)]
Remove unused struct/enum
Patch by Matthias Braun!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188388
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Wed, 14 Aug 2013 17:09:30 +0000 (17:09 +0000)]
llvm-symbolizer: add support for .gnu_debuglink section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188386
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 14 Aug 2013 16:35:29 +0000 (16:35 +0000)]
Let t2LDRBi8 and t2LDRBi12 have same Base Pointer
When determining if two different loads are from the same base address,
this patch allows one load to use a t2LDRi8 address mode and another to
use a t2LDRi12 address mode. The current implementation is very
conservative and this allows the case of differing Thumb2 byte loads to
be considered. Allowing these differing modes instead of forcing the exact
same opcode is useful for situations where one opcodes loads from a base
address+1 and a second opcode loads for a base address-1.
Patch by Daniel Stewart.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188385
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 14 Aug 2013 16:18:47 +0000 (16:18 +0000)]
Sphinx refuses to render this code block. Try adding a newline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188382
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Wed, 14 Aug 2013 16:03:29 +0000 (16:03 +0000)]
Expose CRC-32 implementation from zlib
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188380
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 15:55:25 +0000 (15:55 +0000)]
Revert r188376, "[lit] Support parsing scripts with inconsistent or invalid encodings.", this doesn't work yet for bots using the internal shell.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188379
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 14 Aug 2013 15:27:20 +0000 (15:27 +0000)]
Add the C99 hex-float assembly syntax to our extension document.
As Ben pointed out, GAS doesn't support this syntax so we should give at least
some warning that it might not be portable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188377
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 15:24:58 +0000 (15:24 +0000)]
[lit] Support parsing scripts with inconsistent or invalid encodings.
- For whatever reason, we have a lot of test files with bogus unicode
characters. This patch allows those scripts to still be parsed on Python3 by
changing the parsing logic to work on binary files, and only require the
actual script commands to be convertible to ascii.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188376
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 14 Aug 2013 14:55:54 +0000 (14:55 +0000)]
Add test-case for hex floating-literals
Somehow I forgot to test one of the error conditions I'd added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188372
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 14 Aug 2013 14:23:31 +0000 (14:23 +0000)]
Support C99 hexadecimal floating-point literals in assembly
It's useful to be able to write down floating-point numbers without having to
worry about what they'll be rounded to (as C99 discovered), this extends that
ability to the MC assembly parsers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188370
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 14 Aug 2013 08:56:41 +0000 (08:56 +0000)]
Fix a really terrifying but improbable bug in mem2reg. If you have seen
extremely subtle miscompilations (such as a load getting replaced with
the value stored *below* the load within a basic block) related to
promoting an alloca to an SSA value, there is the dim possibility that
you hit this. Please let me know if you won this unfortunate lottery.
The first half of mem2reg's core logic (as it is used both in the
standalone mem2reg pass and in SROA) builds up a mapping from
'Instruction *' to the index of that instruction within its basic block.
This allows quickly establishing which store dominate a particular load
even for large basic blocks. We cache this information throughout the
run of mem2reg over a function in order to amortize the cost of
computing it.
This is not in and of itself a strange pattern in LLVM. However, it
introduces a very important constraint: absolutely no instruction can be
deleted from the program without updating the mapping. Otherwise a newly
allocated instruction might get the same pointer address, and then end
up with a wrong index. Yes, LLVM routinely suffers from a *single
threaded* variant of the ABA problem. Most places in LLVM don't find
avoiding this an imposition because they don't both delete and create
new instructions iteratively, but mem2reg *loves* to do this... All the
time. Fortunately, the mem2reg code was really careful about updating
this cache to handle this eventuallity... except when it comes to the
debug declare intrinsic. Oops. The fix is to invalidate that pointer in
the cache when we delete it, the same as we do when deleting alloca
instructions and other instructions.
I've also caused the same bug in new code while working on a fix to
PR16867, so this seems to be a really unfortunate pattern. Hopefully in
subsequent patches the deletion of dead instructions can be consolidated
sufficiently to make it less likely that we'll see future occurences of
this bug.
Sorry for not having a test case, but I have literally no idea how to
reliably trigger this kind of thing. It may be single-threaded, but it
remains an ABA problem. It would require a really amazing number of
stars to align.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188367
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 14 Aug 2013 07:53:41 +0000 (07:53 +0000)]
Make more helper methods into static functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188366
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 14 Aug 2013 07:35:18 +0000 (07:35 +0000)]
Remove tab characters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188365
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 14 Aug 2013 07:34:43 +0000 (07:34 +0000)]
Make some helper methods static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188364
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 14 Aug 2013 07:04:42 +0000 (07:04 +0000)]
Use MVT in more lowering code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188363
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 14 Aug 2013 06:21:10 +0000 (06:21 +0000)]
Replace EVT with MVT in isVectorShift. Keeps compiler from generating unneeded checks and handling for extended types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188362
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 14 Aug 2013 05:58:39 +0000 (05:58 +0000)]
Replace EVT with MVT in many of the shuffle lowering functions. Keeps compiler from generating unneeded checks and handling for extended types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188361
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 05:07:16 +0000 (05:07 +0000)]
[lit] Fix a relative import issue I missed earlier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188360
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 05:07:13 +0000 (05:07 +0000)]
[lit] Avoid StringIO.
- We barely used it, and it is very hard to use in a 2.5-3 compatible
way because of changing expectations for its input types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188359
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 05:07:09 +0000 (05:07 +0000)]
[lit] Fix tests to execute lit with same python as invoked with.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188358
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 05:07:04 +0000 (05:07 +0000)]
[lit] Factor ShTest format script command parsing from other processing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188357
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 05:07:01 +0000 (05:07 +0000)]
[lit] Move executeCommand() into lit.util.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188356
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Aug 2013 05:06:55 +0000 (05:06 +0000)]
[lit] Move formats into their own subpackage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188355
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 14 Aug 2013 03:34:49 +0000 (03:34 +0000)]
[CMake] add_llvm_library: Specify explicit suffix .imp to import library to avoid a warning between profile_rt-static and profile_rt-shared with lib/profile_rt.lib.
FIXME: It seems MS version of profile_rt.dll doesn't contain any export symbols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188351
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 14 Aug 2013 02:26:31 +0000 (02:26 +0000)]
Lit: Introduce "%/[STpst] into parseIntegratedTestScript(), to normalize substitutions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188348
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 14 Aug 2013 01:15:52 +0000 (01:15 +0000)]
[mips] Fix bug in parsing accumulator registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188344
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 14 Aug 2013 01:02:20 +0000 (01:02 +0000)]
[mips] Use register operands instead of register classes in DSP instruction
definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188343
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 14 Aug 2013 00:53:38 +0000 (00:53 +0000)]
[mips] Rename DSPRegs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188342
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 14 Aug 2013 00:47:08 +0000 (00:47 +0000)]
[mips] Rename HIRegs and LORegs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188341
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 14 Aug 2013 00:46:00 +0000 (00:46 +0000)]
llvm/test/CodeGen/X86/setcc-sentinals.ll: Relax expressions for x86_64-win32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188340
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 14 Aug 2013 00:24:38 +0000 (00:24 +0000)]
Fix always creating GEP with i32 indices
Use the pointer size if datalayout is available.
Use i64 if it's not, which is consistent with what other
places do when the pointer size is unknown.
The test doesn't really test this in a useful way
since it will be transformed to that later anyway,
but this now tests it for non-zero arrays and when
datalayout isn't available. The cases in
visitGetElementPtrInst should save an extra re-visit to
the newly created GEP since it won't need to cleanup after
itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188339
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 14 Aug 2013 00:24:34 +0000 (00:24 +0000)]
Use type helper functions instead of cast
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188338
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 14 Aug 2013 00:24:05 +0000 (00:24 +0000)]
Use array initializer, space around operator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188337
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 14 Aug 2013 00:21:25 +0000 (00:21 +0000)]
[mips] Properly parse registers that appear in inline-asm constraints.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188336
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Tue, 13 Aug 2013 23:34:32 +0000 (23:34 +0000)]
BBVectorize: Add initial stores to the write set when tracking uses
When computing the use set of a store, we need to add the store to the write
set prior to iterating over later instructions. Otherwise, if there is a later
aliasing load of that store, that load will not be tagged as a use, and bad
things will happen.
trackUsesOfI still adds later dependent stores of an instruction to that
instruction's write set, but it never sees the original instruction, and so
when tracking uses of a store, the store must be added to the write set by the
caller.
Fixes PR16834.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188329
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 13 Aug 2013 22:55:05 +0000 (22:55 +0000)]
Remove duplicate copy of testcase in r188327.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188328
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 13 Aug 2013 22:51:58 +0000 (22:51 +0000)]
Revert r187191, which broke opt -mem2reg on the testcases included in PR16867.
However, opt -O2 doesn't run mem2reg directly so nobody noticed until r188146
when SROA started sending more things directly down the PromoteMemToReg path.
In order to revert r187191, I also revert dependent revisions r187296, r187322
and r188146. Fixes PR16867. Does not add the testcases from that PR, but both
of them should get added for both mem2reg and sroa when this revert gets
unreverted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188327
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Tue, 13 Aug 2013 22:34:26 +0000 (22:34 +0000)]
[Mips][msa] Value types for MSA support.
Added v8f16 to ValueTypes.h, ValueTypes.cpp, ValueTypes.td,
and CodeGenTarget.cpp
Patch by Daniel Sanders
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188326
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 13 Aug 2013 22:23:05 +0000 (22:23 +0000)]
Options: explicit handling of --
Clients of the option parsing library should handle it explicitly
using a KIND_REMAINING_ARGS option.
Clang and lld have been updated in r188316 and r188318, respectively.
Also fix -Wsign-compare warning in the option parsing test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188323
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 13 Aug 2013 21:30:58 +0000 (21:30 +0000)]
DAG: Combine (and (setne X, 0), (setne X, -1)) -> (setuge (add X, 1), 2)
A common idiom is to use zero and all-ones as sentinal values and to
check for both in a single conditional ("x != 0 && x != (unsigned)-1").
That generates code, for i32, like:
testl %edi, %edi
setne %al
cmpl $-1, %edi
setne %cl
andb %al, %cl
With this transform, we generate the simpler:
incl %edi
cmpl $1, %edi
seta %al
Similar improvements for other integer sizes and on other platforms. In
general, combining the two setcc instructions into one is better.
rdar://
14689217
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188315
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 13 Aug 2013 21:09:50 +0000 (21:09 +0000)]
Options: Add new option kind that consumes remaining arguments
This adds KIND_REMAINING_ARGS, a class of options that consume
all remaining arguments on the command line.
This will be used to support /link in clang-cl, which is used
to forward all remaining arguments to the linker.
It also allows us to remove the hard-coded handling of "--",
allowing clients (clang and lld) to implement that functionality
themselves with this new option class.
Differential Revision: http://llvm-reviews.chandlerc.com/D1387
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188314
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Tue, 13 Aug 2013 20:54:07 +0000 (20:54 +0000)]
[Mips][msa] Added initial MSA support.
* msa SubtargetFeature
* registers
* ld.[bhwd], and st.[bhwd] instructions
Does not correctly prohibit use of both 32-bit FPU registers and MSA together.
Patch by Daniel Sanders
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188313
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Tue, 13 Aug 2013 20:19:16 +0000 (20:19 +0000)]
[Mips] Support for unaligned load/store microMips instructions
This includes instructions lwl, lwr, swl and swr.
Patch by Zoran Jovnovic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188312
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Aug 2013 19:08:48 +0000 (19:08 +0000)]
[lit] Support use of setup.py from other directories.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188309
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Tue, 13 Aug 2013 17:54:56 +0000 (17:54 +0000)]
Update makeLibCall to return both the call and the chain associated with the libcall instead of just the call. This allows us to specify libcalls that return void.
LowerCallTo returns a pair with the return value of the call as the first
element and the chain associated with the return value as the second element. If
we lower a call that has a void return value, LowerCallTo returns an SDValue
with a NULL SDNode and the chain for the call. Thus makeLibCall by just
returning the first value makes it impossible for you to set up the chain so
that the call is not eliminated as dead code.
I also updated all references to makeLibCall to reflect the new return type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188300
91177308-0d34-0410-b5e6-
96231b3b80d8
Carlo Kok [Tue, 13 Aug 2013 17:46:57 +0000 (17:46 +0000)]
Output DW_AT_stmt_list dwarf debug info as DW_FORM_sec_offset instead of DW_FORM_data4 as it is a section offset (fixes the coff/dwarf debug info statement locations)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188297
91177308-0d34-0410-b5e6-
96231b3b80d8