oota-llvm.git
9 years agoSwitch lowering: cluster adjacent fall-through cases even at -O0
Hans Wennborg [Fri, 8 May 2015 21:23:39 +0000 (21:23 +0000)]
Switch lowering: cluster adjacent fall-through cases even at -O0

It's cheap to do, and codegen is much faster if cases can be merged
into clusters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236905 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd a comment about DepthFirstIterator's skipchildren behavior
Daniel Berlin [Fri, 8 May 2015 21:17:24 +0000 (21:17 +0000)]
Add a comment about DepthFirstIterator's skipchildren behavior

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236904 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoTargetParser: FPU/ARCH/EXT parsing refactory - NFC
Renato Golin [Fri, 8 May 2015 21:04:27 +0000 (21:04 +0000)]
TargetParser: FPU/ARCH/EXT parsing refactory - NFC

This new class in a global context contain arch-specific knowledge in order
to provide LLVM libraries, tools and projects with the ability to understand
the architectures. For now, only FPU, ARCH and ARCH extensions on ARM are
supported.

Current behaviour it to parse from free-text to enum values and back, so that
all users can share the same parser and codes. This simplifies a lot both the
ASM/Obj streamers in the back-end (where this came from), and the front-end
parsers for command line arguments (where this is going to be used next).

The previous implementation, using .def/.h includes is deprecated due to its
inflexibility to be built without the backend support and for being too
cumbersome. As more architectures join this scheme, and as more features of
such architectures are added (such as hardware features, type sizes, etc) into
a full blown TargetDescription class, having a set of classes is the most
sane implementation.

The ultimate goal of this refactor both LLVM's and Clang's target description
classes into one unique interface, so that we can de-duplicate and standardise
the descriptions, as well as make it available for other front-ends, tools,
etc.

The FPU parsing for command line options in Clang has been converted to use
this new library and a number of aliases were added for compatibility:
 * A bogus neon-vfpv3 alias (neon defaults to vfp3)
 * armv5/v6
 * {fp4/fp5}-{sp/dp}-d16

Next steps:
 * Port Clang's ARCH/EXT parsing to use this library.
 * Create a TableGen back-end to generate this information.
 * Run this TableGen process regardless of which back-ends are built.
 * Expose more information and rename it to TargetDescription.
 * Continue re-factoring Clang to use as much of it as possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236900 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUpdate Function::getContext documentation. NFC.
Diego Novillo [Fri, 8 May 2015 21:01:29 +0000 (21:01 +0000)]
Update Function::getContext documentation. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236899 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[Fast-ISel] Clear kill flags on registers replaced by updateValueMap.
Pete Cooper [Fri, 8 May 2015 20:46:54 +0000 (20:46 +0000)]
[Fast-ISel] Clear kill flags on registers replaced by updateValueMap.

When selecting an extract instruction, we don't actually generate code but instead work out which register we are reading, and rewrite uses of the extract def to the source register.  This is done via updateValueMap,.

However, its possible that the source register we are rewriting *to* to also have uses.  If those uses are after a kill of the value we are rewriting *from* then we have uses after a kill and the verifier fails.

This code checks for the case where the to register is also used, and if so it clears all kill on the from register.  This is conservative, but better that always clearing kills on the from register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236897 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[Hexagon] Generate more hardware loops
Brendon Cahoon [Fri, 8 May 2015 20:18:21 +0000 (20:18 +0000)]
[Hexagon] Generate more hardware loops

Refactored parts of the hardware loop pass to generate
more. Also, added more tests.

Differential Revision: http://reviews.llvm.org/D9568

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236896 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[BasicAA] Fix zext & sext handling
Sanjoy Das [Fri, 8 May 2015 18:58:55 +0000 (18:58 +0000)]
[BasicAA] Fix zext & sext handling

Summary:

There are several unhandled edge cases in BasicAA's GetLinearExpression
method. This changes fixes outstanding issues, including zext / sext of
a constant with the sign bit set, and the refusal to decompose zexts or
sexts of wrapping arithmetic.

Test Plan: Unit tests added in //q.ext.ll//.

Patch by Nick White.

Reviewers: hfinkel, sanjoy

Reviewed By: hfinkel, sanjoy

Subscribers: sanjoy, llvm-commits, hfinkel

Differential Revision: http://reviews.llvm.org/D6682

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236894 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoReplace branch-to-unreachable with assertion.
David Blaikie [Fri, 8 May 2015 18:52:28 +0000 (18:52 +0000)]
Replace branch-to-unreachable with assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236893 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix a docs build break introduced by rL236888.
Pat Gavlin [Fri, 8 May 2015 18:37:49 +0000 (18:37 +0000)]
Fix a docs build break introduced by rL236888.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236891 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[X86] Fast-ISel was incorrectly always killing the source of a truncate.
Pete Cooper [Fri, 8 May 2015 18:29:42 +0000 (18:29 +0000)]
[X86] Fast-ISel was incorrectly always killing the source of a truncate.

A trunc from i32 to i1 on x86_64 generates an instruction such as

%vreg19<def> = COPY %vreg9:sub_8bit<kill>; GR8:%vreg19 GR32:%vreg9

However, the copy here should only have the kill flag on the 32-bit path, not the 64-bit one.
Otherwise, we are killing the source of the truncate which could be used later in the program.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236890 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoExtend the statepoint intrinsic to allow statepoints to be marked as transitions...
Pat Gavlin [Fri, 8 May 2015 18:07:42 +0000 (18:07 +0000)]
Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware.

This changes the shape of the statepoint intrinsic from:

  @llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 unused, ...call args, i32 # deopt args, ...deopt args, ...gc args)

to:

  @llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 flags, ...call args, i32 # transition args, ...transition args, i32 # deopt args, ...deopt args, ...gc args)

This extension offers the backend the opportunity to insert (somewhat) arbitrary code to manage the transition from GC-aware code to code that is not GC-aware and back.

In order to support the injection of transition code, this extension wraps the STATEPOINT ISD node generated by the usual lowering lowering with two additional nodes: GC_TRANSITION_START and GC_TRANSITION_END. The transition arguments that were passed passed to the intrinsic (if any) are lowered and provided as operands to these nodes and may be used by the backend during code generation.

Eventually, the lowering of the GC_TRANSITION_{START,END} nodes should be informed by the GC strategy in use for the function containing the intrinsic call; for now, these nodes are instead replaced with no-ops.

Differential Revision: http://reviews.llvm.org/D9501

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236888 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[NoTTI] reject negative scale in addressing mode
Jingyue Wu [Fri, 8 May 2015 18:07:24 +0000 (18:07 +0000)]
[NoTTI] reject negative scale in addressing mode

Summary:
I noticed this bug when deubging a WIP on LSR. I wonder whether and how we
should add a regression test for this.

Test Plan: no tests failed.

Reviewers: atrick

Subscribers: hfinkel, llvm-commits

Differential Revision: http://reviews.llvm.org/D9536

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236887 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoClear kill flags on all used registers when sinking instructions.
Pete Cooper [Fri, 8 May 2015 17:54:32 +0000 (17:54 +0000)]
Clear kill flags on all used registers when sinking instructions.

The test here was sinking the AND here to a lower BB:

%vreg7<def> = ANDWri %vreg8, 0; GPR32common:%vreg7,%vreg8
TBNZW %vreg8<kill>, 0, <BB#1>; GPR32common:%vreg8

which meant that vreg8 was read after it was killed.

This commit changes the code from clearing kill flags on the AND to clearing flags on all registers used by the AND.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236886 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago80 cols fix since i'm looking at this function anyway. NFC
Pete Cooper [Fri, 8 May 2015 17:54:29 +0000 (17:54 +0000)]
80 cols fix since i'm looking at this function anyway.  NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236885 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRemove duplicate cmake target I added in r236792.
Pete Cooper [Fri, 8 May 2015 16:59:53 +0000 (16:59 +0000)]
Remove duplicate cmake target I added in r236792.

Thanks to Daniel Jasper for pointing out the mistake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236881 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUnbreak build: Makefile must have the same change as CMakeLists.txt
Douglas Katzman [Fri, 8 May 2015 16:39:59 +0000 (16:39 +0000)]
Unbreak build: Makefile must have the same change as CMakeLists.txt

This was omitted from http://reviews.llvm.org/D9441
(the irony is that that was to detect omissions in something else)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236878 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[Hexagon] Update AnalyzeBranch, etc target hooks
Brendon Cahoon [Fri, 8 May 2015 16:16:29 +0000 (16:16 +0000)]
[Hexagon] Update AnalyzeBranch, etc target hooks

Improved the AnalyzeBranch, InsertBranch, and RemoveBranch
functions in order to handle more of our branch instructions.
This requires changes to analyzeCompare and PredicateInstructions.
Specifically, we've added support for new value compare jumps,
improved handling of endloop, added more compare instructions,
and improved support for predicate instructions.

Differential Revision: http://reviews.llvm.org/D9559

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236876 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoPrevent further errors of omission when adding backend names.
Douglas Katzman [Fri, 8 May 2015 15:34:12 +0000 (15:34 +0000)]
Prevent further errors of omission when adding backend names.

Differential Revision: http://reviews.llvm.org/D9441

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236865 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[X86] Teach 'getTargetShuffleMask' how to look through ISD::WrapperRIP when decoding...
Andrea Di Biagio [Fri, 8 May 2015 15:11:07 +0000 (15:11 +0000)]
[X86] Teach 'getTargetShuffleMask' how to look through ISD::WrapperRIP when decoding a PSHUFB mask.

The function 'getTargetShuffleMask' already knows how to deal with PSHUFB nodes
where the mask node is a load from constant pool, and the constant pool node
is wrapped by a X86ISD::Wrapper node. This patch extends that logic by teaching
it how to also look through X86ISD::WrapperRIP.

This helps function combineX86ShufflesRecusively to combine more shuffle
sequences containing PSHUFB nodes if we are in RIPRel PIC mode.

Before this change, llc (with -relocation-model=pic -march=x86-64) was unable
to decode a pshufb where the mask was loaded from a constant pool. For example,
the no-op shuffle from test 'x86-fold-pshufb.ll' was not folded into its
operand, so instead of generating a single 'movaps' the backend always
generated a sub-optimal 'movdqa + pshufb' sequence.

Added test x86-fold-pshufb.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236863 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips][microMIPSr6] Implement ALUIPC and AUIPC instructions
Jozef Kolek [Fri, 8 May 2015 14:25:11 +0000 (14:25 +0000)]
[mips][microMIPSr6] Implement ALUIPC and AUIPC instructions

This patch implements ALUIPC and AUIPC instructions using mapping.

Differential Revision: http://reviews.llvm.org/D8441

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236858 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix test added in r236850 for OSX builders.
James Y Knight [Fri, 8 May 2015 14:04:54 +0000 (14:04 +0000)]
Fix test added in r236850 for OSX builders.

Need to specify triple so that llvm emits the asm syntax that the
test expected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236855 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips][microMIPSr6] Implement ADDIUPC and LWPC instructions
Jozef Kolek [Fri, 8 May 2015 13:52:04 +0000 (13:52 +0000)]
[mips][microMIPSr6] Implement ADDIUPC and LWPC instructions

This patch implements ADDIUPC and LWPC instructions using mapping.

Differential Revision: http://reviews.llvm.org/D8415

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236852 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix alignment checks in MergeConsecutiveStores.
James Y Knight [Fri, 8 May 2015 13:47:01 +0000 (13:47 +0000)]
Fix alignment checks in MergeConsecutiveStores.

1) check whether the alignment of the memory is sufficient for the
*merged* store or load to be efficient.

Not doing so can result in some ridiculously poor code generation, if
merging creates a vector operation which must be aligned but isn't.

2) DON'T check that the alignment of each load/store is equal. If
you're merging 2 4-byte stores, the first *might* have 8-byte
alignment, but the second certainly will have 4-byte alignment. We do
want to allow those to be merged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236850 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix coding standart based on post submit comments.
Igor Laevsky [Fri, 8 May 2015 13:17:22 +0000 (13:17 +0000)]
Fix coding standart based on post submit comments.

Differential Revision: http://reviews.llvm.org/D7760

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236849 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM] Reject invalid -march values
John Brawn [Fri, 8 May 2015 12:52:02 +0000 (12:52 +0000)]
[ARM] Reject invalid -march values

Restructure Triple::getARMCPUForArch so that invalid values will
return nullptr, while retaining the behaviour that an argument
specifying no particular architecture version will give a default
CPU. This will be used by clang to give an error on invalid -march
values.

Also restructure the extraction of the architecture version from
the MArch string a little to hopefully make what it's doing clearer.

Differential Revision: http://reviews.llvm.org/D9599

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236845 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix gcc warning of different enum and non-enum types in ternary
Denis Protivensky [Fri, 8 May 2015 12:21:03 +0000 (12:21 +0000)]
Fix gcc warning of different enum and non-enum types in ternary

Make '0' literal explicitly unsigned with '0u'.
This appeared after r236775.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236838 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Only use FGR_{32,64} in TableGen descriptions. NFC.
Toma Tabacu [Fri, 8 May 2015 12:15:04 +0000 (12:15 +0000)]
[mips] Only use FGR_{32,64} in TableGen descriptions. NFC.

Summary: Instead of explicitly adding the IsFP64bit and NotFP64bit predicates through AdditionalRequires.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9566

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236835 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoThis change is refactoring only. It moves basic block normalization for invokes to...
Igor Laevsky [Fri, 8 May 2015 11:59:09 +0000 (11:59 +0000)]
This change is refactoring only. It moves basic block normalization for invokes to happen before replacement of a call with safepoint in "ReplaceWithStatepoint". Previously it was partly done before replacement of calls with safepoint and partly after call replacement but before RAUW's for gc_relocates, which was confusing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236829 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Emit the .insn directive for empty basic blocks.
Vasileios Kalintiris [Fri, 8 May 2015 09:10:15 +0000 (09:10 +0000)]
[mips] Emit the .insn directive for empty basic blocks.

Summary:
In microMIPS, labels need to know whether they are on code or data. This is
indicated with STO_MIPS_MICROMIPS and can be inferred by being followed
by instructions. For empty basic blocks, we can ensure this by emitting the
.insn directive after the label.

Also, this fixes some failures in our out-of-tree microMIPS buildbots, for the
exception handling regression tests under: SingleSource/Regression/C++/EH

Reviewers: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9530

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236815 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[yaml2elf] Replace error message by assert call in writeSectionContent methods
Simon Atanasyan [Fri, 8 May 2015 07:05:04 +0000 (07:05 +0000)]
[yaml2elf] Replace error message by assert call in writeSectionContent methods

Now caller of ELFState::writeSectionContent() methods is responsible to check
a section type and selects an appropriate writeSectionContent method.
So unexpected section type inside writeSectionContent method indicates
a wrong usage of the method and should be guarded by assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236808 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[llvm-readobj/obj2yaml/yaml2obj] Support MIPS machine ELF header flags
Simon Atanasyan [Fri, 8 May 2015 07:04:59 +0000 (07:04 +0000)]
[llvm-readobj/obj2yaml/yaml2obj] Support MIPS machine ELF header flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236807 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoNow that we have a soft-float attribute, use it instead of the
Eric Christopher [Fri, 8 May 2015 00:57:22 +0000 (00:57 +0000)]
Now that we have a soft-float attribute, use it instead of the
hard coded command line option for the Mips soft float tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236801 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr.
David Blaikie [Fri, 8 May 2015 00:42:26 +0000 (00:42 +0000)]
[opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr.

Also a couple of other changes to avoid use of
PointerType::getElementType here & there too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236799 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUpdate CMake flags, LibFuzzer comments and docs for new -fsanitize-coverage= flags.
Alexey Samsonov [Thu, 7 May 2015 23:33:24 +0000 (23:33 +0000)]
Update CMake flags, LibFuzzer comments and docs for new -fsanitize-coverage= flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236797 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoInMips16HardFloat was only being set conditional on whether or
Eric Christopher [Thu, 7 May 2015 23:10:23 +0000 (23:10 +0000)]
InMips16HardFloat was only being set conditional on whether or
not IsSoftFloat was set so remove it from here simplifying the
accessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236795 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRename the MIPS routine abiUsesSoftFloat -> useSoftFloat to match
Eric Christopher [Thu, 7 May 2015 23:10:21 +0000 (23:10 +0000)]
Rename the MIPS routine abiUsesSoftFloat -> useSoftFloat to match
some incoming changes and the general scheme used by features (use/has).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236794 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd yaml-bench to the list of tools make check needs to run
Pete Cooper [Thu, 7 May 2015 22:53:11 +0000 (22:53 +0000)]
Add yaml-bench to the list of tools make check needs to run

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236792 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoDelete unused createSanitizerCoverageModulePass overload.
Alexey Samsonov [Thu, 7 May 2015 22:46:06 +0000 (22:46 +0000)]
Delete unused createSanitizerCoverageModulePass overload.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236791 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[CMake] llvm/test/YAMLParser requires yaml-bench. This fixes r236754.
NAKAMURA Takumi [Thu, 7 May 2015 22:24:58 +0000 (22:24 +0000)]
[CMake] llvm/test/YAMLParser requires yaml-bench. This fixes r236754.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236787 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRevert "SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init"
Ismail Pazarbasi [Thu, 7 May 2015 22:17:48 +0000 (22:17 +0000)]
Revert "SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init"

Will fix tomorrow. Unbreak build bots now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236786 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix typo.
Matthias Braun [Thu, 7 May 2015 22:16:10 +0000 (22:16 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236785 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoClear kill flags in tail duplication.
Pete Cooper [Thu, 7 May 2015 21:48:26 +0000 (21:48 +0000)]
Clear kill flags in tail duplication.

If we duplicate an instruction then we must also clear kill flags on any uses we rewrite.
Otherwise we might be killing a register which was used in other BBs.

For example, here the entry BB ended up with these instructions, the ADD having been tail duplicated.

%vreg24<def> = t2ADDri %vreg10<kill>, 1, pred:14, pred:%noreg, opt:%noreg; GPRnopc:%vreg24 rGPR:%vreg10
%vreg22<def> = COPY %vreg10; GPR:%vreg22 rGPR:%vreg10

The copy here is inserted after the add and so needs vreg10 to be live.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236782 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoWhen checking msan.module_ctor, use CHECK-LABEL instead of CHECK
Ismail Pazarbasi [Thu, 7 May 2015 21:47:25 +0000 (21:47 +0000)]
When checking msan.module_ctor, use CHECK-LABEL instead of CHECK

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236781 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoSanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init
Ismail Pazarbasi [Thu, 7 May 2015 21:43:28 +0000 (21:43 +0000)]
SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init

Reviewers: kcc, samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8780

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236780 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMSan: Use `createSanitizerCtor` to create ctor, and call `__msan_init`
Ismail Pazarbasi [Thu, 7 May 2015 21:41:52 +0000 (21:41 +0000)]
MSan: Use `createSanitizerCtor` to create ctor, and call `__msan_init`

Reviewers: kcc, eugenis

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8781

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236779 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoTSan: Use `createSanitizerCtor` to create ctor, and call `__tsan_init`
Ismail Pazarbasi [Thu, 7 May 2015 21:41:23 +0000 (21:41 +0000)]
TSan: Use `createSanitizerCtor` to create ctor, and call `__tsan_init`

Reviewers: kcc, dvyukov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8779

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236778 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoASan: Use `createSanitizerCtor` to create ctor, and call `__asan_init`
Ismail Pazarbasi [Thu, 7 May 2015 21:40:46 +0000 (21:40 +0000)]
ASan: Use `createSanitizerCtor` to create ctor, and call `__asan_init`

Reviewers: kcc, samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8778

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236777 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoChange getTargetNodeName() to produce compiler warnings for missing cases, fix them
Matthias Braun [Thu, 7 May 2015 21:33:59 +0000 (21:33 +0000)]
Change getTargetNodeName() to produce compiler warnings for missing cases, fix them

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236775 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[lib/Fuzzer] change the way we use taint information for fuzzing. Now, we run a singl...
Kostya Serebryany [Thu, 7 May 2015 21:02:11 +0000 (21:02 +0000)]
[lib/Fuzzer] change the way we use taint information for fuzzing. Now, we run a single unit and collect suggested mutations based on tracing+taint data, then apply the suggested mutations one by one. The previous scheme was slower and more complex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236772 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUse auto instead of the long type name. NFC.
Steven Wu [Thu, 7 May 2015 19:56:23 +0000 (19:56 +0000)]
Use auto instead of the long type name. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236768 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[AArch64] Fix sext/zext folding in address arithmetic.
Pete Cooper [Thu, 7 May 2015 19:21:36 +0000 (19:21 +0000)]
[AArch64] Fix sext/zext folding in address arithmetic.

We were accidentally folding a sign/zero extend in to address arithmetic in a different BB when the extend wasn't available there.

Cross BB fast-isel isn't safe, so restrict this to only when the extend is in the same BB as the use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236764 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix r236754: Add the missing yaml-bench dir to the makefile for utils.
Alex Lorenz [Thu, 7 May 2015 18:48:48 +0000 (18:48 +0000)]
Fix r236754: Add the missing yaml-bench dir to the makefile for utils.

This commit adds the missing yaml-bench utility to the
makefile in utils. It was missing before and it caused
the regression tests to fail on some buildbots when llvm-lit
couldn't find yaml-bench when llvm was built without
cmake after I committed r236754.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236761 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoDisable r235989 "Reapply r235977 "[DebugInfo] Add debug locations to constant SD...
Sergey Dmitrouk [Thu, 7 May 2015 18:33:50 +0000 (18:33 +0000)]
Disable r235989 "Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes""

Will be re-enabled with missing changes for ConstantFPSDNode and
fixes for wrong locations due to constant coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236758 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[lib/Fuzzer] minor refactoring/simplification, NFC
Kostya Serebryany [Thu, 7 May 2015 18:32:29 +0000 (18:32 +0000)]
[lib/Fuzzer] minor refactoring/simplification, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236757 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd VSX Scalar loads and stores to the PPC back end
Nemanja Ivanovic [Thu, 7 May 2015 18:24:05 +0000 (18:24 +0000)]
Add VSX Scalar loads and stores to the PPC back end

This patch corresponds to review:
http://reviews.llvm.org/D9440

It adds a new register class to the PPC back end to contain single precision
values in VSX registers. Additionally, it adds scalar loads and stores for
VSX registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236755 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoYAML: Enable the YAMLParser tests.
Alex Lorenz [Thu, 7 May 2015 18:08:46 +0000 (18:08 +0000)]
YAML: Enable the YAMLParser tests.

This commit enables the tests located in test/YAMLParser directory.
Those tests were never actually enabled, as llvm-lit didn't pick up the
files with the 'data' extension. The commit renames those test files to files
with the 'test' extension so that llvm-lit would find them.

This commit also modifies yaml-bench so that it returns an error status
if an error occurred during parsing. It also adds the '-use-color'
command line option to yaml-bench (to make sure that file check matches
the error messages in the output stream).

This commit modifies some of the renamed tests so that they wouldn't
fail. It gets rid of XFAILs and uses the 'not' command instead for
some of the tests that have to fail during parsing. This commit
also adds some 'FIXME' comments to a couple of tests that are
supposed to fail but currently pass because of various bugs
in the implementation of the yaml parser.

Reviewers: Justin Bogner

Differential Revision: http://reviews.llvm.org/D9448

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236754 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRecommit r236670: [opaque pointer type] Pass explicit pointer type through GEP consta...
David Blaikie [Thu, 7 May 2015 17:28:58 +0000 (17:28 +0000)]
Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding""

Clang regressions were caused by more stringent assertion checking
introduced by this change. Small fix needed to clang has been committed
in r236751.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236752 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix information loss in branch probability computation.
Diego Novillo [Thu, 7 May 2015 17:22:06 +0000 (17:22 +0000)]
Fix information loss in branch probability computation.

Summary:
This addresses PR 22718. When branch weights are too large, they were
being clamped to the range [1, MaxWeightForBB]. But this clamping is
only applied to edges that go outside the range, so it distorts the
relative branch probabilities.

This patch changes the weight calculation to scale every branch so the
relative probabilities are preserved. The scaling is done differently
now. First, all the branch weights are added up, and if the sum exceeds
32 bits, it computes an integer scale to bring all the weights within
the range.

The patch fixes an existing test that had slightly wrong branch
probabilities due to the previous clamping. It now gets branch weights
scaled accordingly.

Reviewers: dexonsmith

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9442

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236750 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips][microMIPSr6] Implement JIALC and JIC instructions
Jozef Kolek [Thu, 7 May 2015 17:12:23 +0000 (17:12 +0000)]
[mips][microMIPSr6] Implement JIALC and JIC instructions

This patch implements JIALC and JIC instructions using mapping.

Differential Revision: http://reviews.llvm.org/D8389

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236748 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoPopulate list of vectorizable functions for Accelerate library.
Michael Zolotukhin [Thu, 7 May 2015 17:11:51 +0000 (17:11 +0000)]
Populate list of vectorizable functions for Accelerate library.

Summary:
This patch adds majority of supported by Accelerate library functions to the
list of vectorizable functions.

The full list of available vector functions could be found here:
https://developer.apple.com/library/mac/documentation/Performance/Conceptual/vecLib/index.html

Test Plan: Unit tests are added.

Reviewers: hfinkel, aschwaighofer, nadav

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9543

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236747 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: Fix comment that mentions AMDIL
Matt Arsenault [Thu, 7 May 2015 17:02:32 +0000 (17:02 +0000)]
R600: Fix comment that mentions AMDIL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236745 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUse intrinsic pattern to make a simpler match
Sanjay Patel [Thu, 7 May 2015 16:51:12 +0000 (16:51 +0000)]
Use intrinsic pattern to make a simpler match

This is a follow-on to r236740 where I took Andrea's advice
in D9504 to remove a redundant pattern...except that I removed
the wrong pattern!

AFAICT, there is no change in the final code produced because
subsequent passes would clean up the extra instructions created
by the more complicated pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236743 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix another hang caused by ManagedStatic in SignalHandler
Steven Wu [Thu, 7 May 2015 16:20:51 +0000 (16:20 +0000)]
Fix another hang caused by ManagedStatic in SignalHandler

Fix two other variables that might cause the same hang fixed in r235914.
The hang is caused by constructing ManagedStatic in signalhandler. In
this case, if FileToRemove or CallBacksToRun is not contructed, it means
there is no work to do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236741 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[x86] eliminate unnecessary shuffling/moves with unary scalar math ops (PR21507)
Sanjay Patel [Thu, 7 May 2015 15:48:53 +0000 (15:48 +0000)]
[x86] eliminate unnecessary shuffling/moves with unary scalar math ops (PR21507)

Finish the job that was abandoned in D6958 following the refactoring in
http://reviews.llvm.org/rL230221:

1. Uncomment the intrinsic def for the AVX r_Int instruction.
2. Add missing r_Int entries to the load folding tables; there are already
   tests that check these in "test/Codegen/X86/fold-load-unops.ll", so I
   haven't added any more in this patch.
3. Add patterns to solve PR21507 ( https://llvm.org/bugs/show_bug.cgi?id=21507 ).

So instead of this:

  movaps %xmm0, %xmm1
  rcpss %xmm1, %xmm1
  movss %xmm1, %xmm0

We should now get:

  rcpss %xmm0, %xmm0

And instead of this:

  vsqrtss %xmm0, %xmm0, %xmm1
  vblendps $1, %xmm1, %xmm0, %xmm0 ## xmm0 = xmm1[0],xmm0[1,2,3]

We should now get:

  vsqrtss %xmm0, %xmm0, %xmm0

Differential Revision: http://reviews.llvm.org/D9504

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236740 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoSwitch lowering: handle zero-weight branch probabilities
Hans Wennborg [Thu, 7 May 2015 15:47:15 +0000 (15:47 +0000)]
Switch lowering: handle zero-weight branch probabilities

After r236617, branch probabilities are no longer guaranteed to be >= 1. This
patch makes the swich lowering code handle that correctly, without bumping the
branch weights by 1 which might cause overflow and skews the probabilities.

Covered by @zero_weight_tree in test/CodeGen/X86/switch.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236739 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[obj2yaml/yaml2obj] Add SHT_MIPS_ABIFLAGS section support
Simon Atanasyan [Thu, 7 May 2015 15:40:48 +0000 (15:40 +0000)]
[obj2yaml/yaml2obj] Add SHT_MIPS_ABIFLAGS section support

This change adds support for the SHT_MIPS_ABIFLAGS section
reading/writing to the obj2yaml and yaml2obj tools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236738 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[llvm-readobj] Print .MIPS.abiflags section content
Simon Atanasyan [Thu, 7 May 2015 15:40:35 +0000 (15:40 +0000)]
[llvm-readobj] Print .MIPS.abiflags section content

This change adds new flag -mips-abi-flags to the llvm-readobj. This flag
forces printing of .MIPS.abiflags section content.

https://dmz-portal.mips.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#10.2.1._.MIPS.abiflags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236737 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[MIPS] Move MIPS ABI flags structure constants to the separate header
Simon Atanasyan [Thu, 7 May 2015 14:57:04 +0000 (14:57 +0000)]
[MIPS] Move MIPS ABI flags structure constants to the separate header

http://reviews.llvm.org/D9517

The separate header file allows to reuse the MIPS ABI flags structure
constants in other LLVM tools like the llvm-readobj.

No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236732 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[llvm-readobj/obj2yaml/yaml2obj] Support more MIPS ELF header flags
Simon Atanasyan [Thu, 7 May 2015 14:04:44 +0000 (14:04 +0000)]
[llvm-readobj/obj2yaml/yaml2obj] Support more MIPS ELF header flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236728 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMasked Gather and Scatter intrinsics - updated documentation.
Elena Demikhovsky [Thu, 7 May 2015 12:25:11 +0000 (12:25 +0000)]
Masked Gather and Scatter intrinsics - updated documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236721 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAVX-512: Added all forms of FP compare instructions for KNL and SKX.
Elena Demikhovsky [Thu, 7 May 2015 11:24:42 +0000 (11:24 +0000)]
AVX-512: Added all forms of FP compare instructions for KNL and SKX.
Added intrinsics for the instructions. CC parameter of the intrinsics was changed from i8 to i32 according to the spec.

By Igor Breger (igor.breger@intel.com)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236714 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Add the SoftFloat MipsSubtarget feature.
Toma Tabacu [Thu, 7 May 2015 10:29:52 +0000 (10:29 +0000)]
[mips] Add the SoftFloat MipsSubtarget feature.

Summary: This will enable the IAS to reject floating point instructions if soft-float is enabled.

Reviewers: dsanders, echristo

Reviewed By: dsanders

Subscribers: jfb, llvm-commits, mpf

Differential Revision: http://reviews.llvm.org/D9053

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236713 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAttributes.h: Fix incorrect \brief introduced in r236666. [-Wdocumentation]
NAKAMURA Takumi [Thu, 7 May 2015 10:18:56 +0000 (10:18 +0000)]
Attributes.h: Fix incorrect \brief introduced in r236666. [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236712 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoScalar/PlaceSafepoints.cpp: Fix a warning introduced in r228090. [-Wunused-variable]
NAKAMURA Takumi [Thu, 7 May 2015 10:18:46 +0000 (10:18 +0000)]
Scalar/PlaceSafepoints.cpp: Fix a warning introduced in r228090. [-Wunused-variable]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236711 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agollvm/test/CodeGen/X86/llc-override-mcpu-mattr.ll: Tweak not to be affected by x64...
NAKAMURA Takumi [Thu, 7 May 2015 10:18:28 +0000 (10:18 +0000)]
llvm/test/CodeGen/X86/llc-override-mcpu-mattr.ll: Tweak not to be affected by x64 Calling Convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236710 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUpdate InstCombine to transform aggregate loads into scalar loads.
Mehdi Amini [Thu, 7 May 2015 05:52:40 +0000 (05:52 +0000)]
Update InstCombine to transform aggregate loads into scalar loads.

Summary:
One step further getting aggregate loads and store being optimized
properly. This will only handle struct with one element at this point.

Test Plan: Added unit tests for the new supported cases.

Reviewers: chandlerc, joker-eph, joker.eph, majnemer

Reviewed By: majnemer

Subscribers: pete, llvm-commits

Differential Revision: http://reviews.llvm.org/D8339

Patch by Amaury Sechet.

From: Amaury Sechet <amaury@fb.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236695 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[SanitizerCoverage] Introduce SanitizerCoverageOptions struct.
Alexey Samsonov [Thu, 7 May 2015 01:00:31 +0000 (01:00 +0000)]
[SanitizerCoverage] Introduce SanitizerCoverageOptions struct.

Summary:
This gives frontend more precise control over collected coverage
information. User can still override these options by passing
-mllvm flags.

No functionality change.

Test Plan: regression test suite.

Reviewers: kcc

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9539

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236687 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoIR: Initialize DerefOrNullBytes in the AttrBuilder constructors
Justin Bogner [Thu, 7 May 2015 00:56:34 +0000 (00:56 +0000)]
IR: Initialize DerefOrNullBytes in the AttrBuilder constructors

MSAN pointed out that this value is used uninitialized:

    http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/3678

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236686 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoInstrProf: Simplify looking up sections for coverage data
Justin Bogner [Thu, 7 May 2015 00:31:58 +0000 (00:31 +0000)]
InstrProf: Simplify looking up sections for coverage data

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236685 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[JumpThreading] Simplify comparisons when simplifying branches
Philip Reames [Thu, 7 May 2015 00:19:14 +0000 (00:19 +0000)]
[JumpThreading] Simplify comparisons when simplifying branches

If we have recognized that a conditional is constant at a particular location in the code (while trying to decide if we can simplify a conditional branch), we can eagerly replace that condition with a constant if it's definition is post dominated by the branch in question.

In practice, this ends up being a compile time savings at most. JumpThreading would have visited each using branch anyways. CVP would have visited the cmp itself again. Unless LVI gives up early, we shouldn't gain any addition power by doing this transformation early. What we do gain is simplicity and compile time.

Differential Revision: http://reviews.llvm.org/D9312

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236684 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[lib/Fuzzer] add dfsan_weak_hook_memcmp, enable the test that uses it, simplify the...
Kostya Serebryany [Thu, 7 May 2015 00:11:33 +0000 (00:11 +0000)]
[lib/Fuzzer] add dfsan_weak_hook_memcmp, enable the test that uses it, simplify the test runner

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236683 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdded support for building against Android API-9 SDK
Vince Harron [Thu, 7 May 2015 00:05:26 +0000 (00:05 +0000)]
Added support for building against Android API-9 SDK

Created an abstraction for log2, llvm::Log2 in Support/MathExtras.h

Hid Android problems inside of it

Differential Revision: http://reviews.llvm.org/D9467

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236680 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRevert "[opaque pointer type] Pass explicit pointer type through GEP constant folding"
David Blaikie [Wed, 6 May 2015 23:56:21 +0000 (23:56 +0000)]
Revert "[opaque pointer type] Pass explicit pointer type through GEP constant folding"

Causes regressions in Clang. Reverting while I investigate.

This reverts commit r236670.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236678 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoLet llc and opt override "-target-cpu" and "-target-features" via command line
Akira Hatanaka [Wed, 6 May 2015 23:54:14 +0000 (23:54 +0000)]
Let llc and opt override "-target-cpu" and "-target-features" via command line
options.

This commit fixes a bug in llc and opt where "-mcpu" and "-mattr" wouldn't
override function attributes "-target-cpu" and "-target-features" in the IR.

Differential Revision: http://reviews.llvm.org/D9537

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236677 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[X86MCInst] Move LowerSTATEPOINT to inside X86AsmPrinter. NFC.
Sanjoy Das [Wed, 6 May 2015 23:53:26 +0000 (23:53 +0000)]
[X86MCInst] Move LowerSTATEPOINT to inside X86AsmPrinter.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236676 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[X86MCInst] Clean up LowerSTATEPOINT: variable names. NFC.
Sanjoy Das [Wed, 6 May 2015 23:53:24 +0000 (23:53 +0000)]
[X86MCInst] Clean up LowerSTATEPOINT: variable names.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236675 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[Statepoints] Clean up PlaceSafepoints.cpp: de-duplicate code.
Sanjoy Das [Wed, 6 May 2015 23:53:21 +0000 (23:53 +0000)]
[Statepoints] Clean up PlaceSafepoints.cpp: de-duplicate code.

Common duplicated code and remove unnecessary code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236674 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[Statepoints] Clean up PlaceSafepoints.cpp: variable naming.
Sanjoy Das [Wed, 6 May 2015 23:53:19 +0000 (23:53 +0000)]
[Statepoints] Clean up PlaceSafepoints.cpp: variable naming.

Use CamelCase.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236673 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[IRBuilder] Add a CreateGCStatepointInvoke.
Sanjoy Das [Wed, 6 May 2015 23:53:09 +0000 (23:53 +0000)]
[IRBuilder] Add a CreateGCStatepointInvoke.

Renames the original CreateGCStatepoint to CreateGCStatepointCall, and
moves invoke creating functionality from PlaceSafepoints.cpp to
IRBuilder.cpp.

This changes the labels generated for PlaceSafepoints/invokes.ll so use
a regex there to make the basic block labels more resilient.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236672 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFactor out a function which determines the cpu and feature strings based on
Akira Hatanaka [Wed, 6 May 2015 23:49:24 +0000 (23:49 +0000)]
Factor out a function which determines the cpu and feature strings based on
command line options -mcpu and -mattr. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236671 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[opaque pointer type] Pass explicit pointer type through GEP constant folding
David Blaikie [Wed, 6 May 2015 23:49:14 +0000 (23:49 +0000)]
[opaque pointer type] Pass explicit pointer type through GEP constant folding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236670 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoYAML: Fix crash in the skip method of KeyValueNode class.
Alex Lorenz [Wed, 6 May 2015 23:21:29 +0000 (23:21 +0000)]
YAML: Fix crash in the skip method of KeyValueNode class.

This commit changes the 'skip' method in the 'KeyValueNode' class
to ensure that it doesn't dereference a null pointer when calling
the 'skip' method of its value child node. It also adds a unittest
that ensures that the crash doesn't occur.

This change is motivated by a patch that implements parsing
of YAML block scalars (http://reviews.llvm.org/D9503), as one
of the unittests in that patch triggered this problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236669 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoChange typeIncompatible to return an AttrBuilder instead of new-ing an AttributeSet.
Pete Cooper [Wed, 6 May 2015 23:19:56 +0000 (23:19 +0000)]
Change typeIncompatible to return an AttrBuilder instead of new-ing an AttributeSet.

This makes use of the new API which can remove attributes from a set given a builder.

This is much faster than creating a temporary set and reduces llc time by about 0.3% which was all spent creating temporary attributes sets on the context.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236668 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUpdate all comments to match the previous commit. NFC
Pete Cooper [Wed, 6 May 2015 23:19:51 +0000 (23:19 +0000)]
Update all comments to match the previous commit.  NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236667 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd remove method to operate on AttrBuilder instead of AttributeSet.
Pete Cooper [Wed, 6 May 2015 23:19:43 +0000 (23:19 +0000)]
Add remove method to operate on AttrBuilder instead of AttributeSet.

Prior to this change we would have to construct a temporary AttributeSet (which isn't temporary at all given that its allocated on the context), just to contain the attributes in the builder, then call remove on that.

Now we can just remove any attributes from the (lightweight and really temporary) builder itself.

Will be used in a future commit to remove some temporary attributes sets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236666 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoInstrProf: Give coverage its own errors instead of piggy backing on instrprof
Justin Bogner [Wed, 6 May 2015 23:19:35 +0000 (23:19 +0000)]
InstrProf: Give coverage its own errors instead of piggy backing on instrprof

Since the coverage mapping reader and the instrprof reader were
emitting a shared set of error codes, the error messages you'd get
back from llvm-cov were ambiguous about what was actually wrong. Add
another error category to fix this.

I've also improved the wording on a couple of the instrprof errors,
for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236665 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoInstrProf: Remove a function that just returns its argument (NFC)
Justin Bogner [Wed, 6 May 2015 23:15:55 +0000 (23:15 +0000)]
InstrProf: Remove a function that just returns its argument (NFC)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236664 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoYAML: Extract the code that skips a comment into a separate method, NFC.
Alex Lorenz [Wed, 6 May 2015 23:00:45 +0000 (23:00 +0000)]
YAML: Extract the code that skips a comment into a separate method, NFC.

This commit extracts the code that skips over a YAML comment from
the 'scanToNextToken' method into a separate 'skipComment' method.

This refactoring is motivated by a patch that implements parsing
of YAML block scalars (http://reviews.llvm.org/D9503), as the
method that parses a block scalar reuses the 'skipComment' method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236663 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRemove unnecessary #ifndef NDEBUG guard around assert. NFC.
Pete Cooper [Wed, 6 May 2015 22:55:46 +0000 (22:55 +0000)]
Remove unnecessary #ifndef NDEBUG guard around assert.  NFC.

Found by Hal Finkel in the review of AttributeSets.  http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150504/275058.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236662 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoBitcode: Set LastDL after writing DebugLocs
Duncan P. N. Exon Smith [Wed, 6 May 2015 22:51:12 +0000 (22:51 +0000)]
Bitcode: Set LastDL after writing DebugLocs

Somehow I dropped this in r233585, and we haven't had `DEBUG_LOC_AGAIN`
records since.  Add it back.  Also tests that the output assembly looks
okay.

Fixes PR23436.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236661 91177308-0d34-0410-b5e6-96231b3b80d8