OSDN Git Service

android-x86/external-llvm.git
8 years agoIntroduce sanstats tool and llvm::CreateSanitizerStatReport function.
Peter Collingbourne [Sat, 16 Jan 2016 00:31:11 +0000 (00:31 +0000)]
Introduce sanstats tool and llvm::CreateSanitizerStatReport function.

This is part of a new statistics gathering feature for the sanitizers.
See clang/docs/SanitizerStats.rst for further info and docs.

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

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

8 years ago[WebAssembly] Add some more README.txt entries.
Dan Gohman [Sat, 16 Jan 2016 00:20:03 +0000 (00:20 +0000)]
[WebAssembly] Add some more README.txt entries.

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

8 years agoCRLF -> LF. NFC
George Rimar [Sat, 16 Jan 2016 00:14:21 +0000 (00:14 +0000)]
CRLF -> LF. NFC

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

8 years ago[codeview] Remove custom line info struct in favor of DebugLoc
Reid Kleckner [Sat, 16 Jan 2016 00:09:09 +0000 (00:09 +0000)]
[codeview] Remove custom line info struct in favor of DebugLoc

The only functional change would be that we might emit multiple filename
segments on code like this:

  void f() {
  #include "p1/../t.h"
  #include "p2/../t.h"
  }

I believe these get separate DIFile metadata nodes, but will have the
same canonicalized absolute path. Previously by computing the path up
front and comparing it we would merge the line info segments.

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

8 years ago[X86]: Make param names in header and body match for isCalleePop.
Kevin B. Smith [Sat, 16 Jan 2016 00:08:36 +0000 (00:08 +0000)]
[X86]: Make param names in header and body match for isCalleePop.
Differential Revision: http://reviews.llvm.org/D16246

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

8 years ago[libFuzzer] move some code from public interface header to a non-public header. NFC
Kostya Serebryany [Sat, 16 Jan 2016 00:04:36 +0000 (00:04 +0000)]
[libFuzzer] move some code from public interface header to a non-public header. NFC

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

8 years ago[WebAssembly] Don't create a needless .note.GNU-stack section
Dan Gohman [Fri, 15 Jan 2016 23:59:13 +0000 (23:59 +0000)]
[WebAssembly] Don't create a needless .note.GNU-stack section

WebAssembly's stack will never be executable by default, so it isn't
necessary to declare .note.GNU-stack sections to request a non-executable
stack.

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

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

8 years ago[NVPTX] Do not emit .hidden or .protected directives as they are not allowed by PTX.
Artem Belevich [Fri, 15 Jan 2016 23:57:53 +0000 (23:57 +0000)]
[NVPTX] Do not emit .hidden or .protected directives as they are not allowed by PTX.

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

8 years ago[WebAssembly] Re-enable a test.
Dan Gohman [Fri, 15 Jan 2016 23:47:19 +0000 (23:47 +0000)]
[WebAssembly] Re-enable a test.

Out-of-tree projects that don't support this can disable the test for
themselves rather than having it disabled in LLVM itself.

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

8 years ago[Orc] Replace switch cases with a macro.
Lang Hames [Fri, 15 Jan 2016 23:19:06 +0000 (23:19 +0000)]
[Orc] Replace switch cases with a macro.

The cases of this switch are all perfectly regular (except for the first case).
A macro is more readable here.

Thanks to Dave Blaikie for the suggestion.

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

8 years ago[opaque pointer types] Remove an unnecessary extra explicit value type in Function
David Blaikie [Fri, 15 Jan 2016 23:07:58 +0000 (23:07 +0000)]
[opaque pointer types] Remove an unnecessary extra explicit value type in Function

Now that this is up in GlobalValue, just use the value there.

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

8 years agoValueTracking: Put DataLayout reference into the Query structure, NFC.
Matthias Braun [Fri, 15 Jan 2016 22:22:04 +0000 (22:22 +0000)]
ValueTracking: Put DataLayout reference into the Query structure, NFC.

It looks nicer and improves the compiletime of a typical
clang -O3 -emit-llvm run by ~0.6% for me.

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

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

8 years ago[codeview] Handle multiple frame descriptions in readobj
Reid Kleckner [Fri, 15 Jan 2016 22:09:13 +0000 (22:09 +0000)]
[codeview] Handle multiple frame descriptions in readobj

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

8 years agoRemove a now-empty file left behind by r257940.
Dan Gohman [Fri, 15 Jan 2016 22:07:35 +0000 (22:07 +0000)]
Remove a now-empty file left behind by r257940.

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

8 years ago[SelectionDAG] CSE nodes with differing SDNodeFlags
Dan Gohman [Fri, 15 Jan 2016 21:56:40 +0000 (21:56 +0000)]
[SelectionDAG] CSE nodes with differing SDNodeFlags

In the optimizer (GVN etc.) when eliminating redundant nodes with different
flags, the flags are ignored for the purposes of testing for congruence, and
then intersected for the purposes of producing a result that supports the union
of all the uses. This commit makes SelectionDAG's CSE do the same thing,
allowing it to CSE nodes in more cases. This fixes PR26063.

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

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

8 years ago[Orc] Make FDRPCChannel final.
Lang Hames [Fri, 15 Jan 2016 21:35:24 +0000 (21:35 +0000)]
[Orc] Make FDRPCChannel final.

This class is in the LLI tool, and isn't subclassed.

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

8 years agoPM: Fix an inverted condition in simplifyFunctionCFG
Justin Bogner [Fri, 15 Jan 2016 21:21:39 +0000 (21:21 +0000)]
PM: Fix an inverted condition in simplifyFunctionCFG

I mentioned the issue here in code review way back in September and
was sure we'd fixed it, but apparently we forgot:

  http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20150921/301850.html

In any case, as soon as you try to use this pass in anything but the
most basic pipeline everything falls apart. Fix the condition.

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

8 years ago[WinEH] Rename CatchReturnInst::getParentPad, NFC
Joseph Tremoulet [Fri, 15 Jan 2016 21:16:19 +0000 (21:16 +0000)]
[WinEH] Rename CatchReturnInst::getParentPad, NFC

Summary:
Rename to getCatchSwitchParentPad, to make it more clear which ancestor
the "parent" in question is.  Add a comment pointing out the key feature
that the returned pad indicates which funclet contains the successor
block.

Reviewers: rnk, andrew.w.kaylor, majnemer

Subscribers: llvm-commits

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

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

8 years ago[Orc] Remove some reinterpret casts in debugging output.
Lang Hames [Fri, 15 Jan 2016 21:14:05 +0000 (21:14 +0000)]
[Orc] Remove some reinterpret casts in debugging output.

These casts were from function pointer to data pointer type, which some
compilers (including GCC) may warn about. In all cases where these casts were
used the original value was still available as a TargetAddress (uint64_t), so
we can just print a formatted version of that instead.

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

8 years agoCXX_FAST_TLS calling convention: fix issue on ARM.
Manman Ren [Fri, 15 Jan 2016 20:24:11 +0000 (20:24 +0000)]
CXX_FAST_TLS calling convention: fix issue on ARM.

When we have a single basic block, the explicit copy-back instructions should
be inserted right before the terminator. Before this fix, they were wrongly
placed at the beginning of the basic block.

PR26136

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

8 years agoCXX_FAST_TLS calling convention: fix issue on AArch64.
Manman Ren [Fri, 15 Jan 2016 20:13:28 +0000 (20:13 +0000)]
CXX_FAST_TLS calling convention: fix issue on AArch64.

When we have a single basic block, the explicit copy-back instructions should
be inserted right before the terminator. Before this fix, they were wrongly
placed at the beginning of the basic block.

I will commit fixes to other platforms as well.

PR26136

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

8 years ago[Orc] Add a void cast to work around a GCC diagnostic bug.
Lang Hames [Fri, 15 Jan 2016 19:37:14 +0000 (19:37 +0000)]
[Orc] Add a void cast to work around a GCC diagnostic bug.

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

8 years agoCXX_FAST_TLS calling convention: fix issue on X86-64.
Manman Ren [Fri, 15 Jan 2016 19:35:42 +0000 (19:35 +0000)]
CXX_FAST_TLS calling convention: fix issue on X86-64.

When we have a single basic block, the explicit copy-back instructions should
be inserted right before the terminator. Before this fix, they were wrongly
placed at the beginning of the basic block.

I will commit fixes to other platforms as well.

PR26136

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

8 years agoFix -Wmismatched-tags warning/error
Xinliang David Li [Fri, 15 Jan 2016 19:22:41 +0000 (19:22 +0000)]
Fix -Wmismatched-tags warning/error

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

8 years agoCodegen: [PPC] Silence false-positive initialization warning. NFC
Kyle Butt [Fri, 15 Jan 2016 19:20:06 +0000 (19:20 +0000)]
Codegen: [PPC] Silence false-positive initialization warning. NFC

Some compilers don't do exhaustive switch checking. For those compilers,
add an initialization to prevent un-initialized variable warnings from
firing. For compilers with exhaustive switch checking, we still get a
guarantee that the switch is exhaustive, and hence the initializations
are redundant, and a non-functional change.

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

8 years ago[PGO] Commonize (more) index profile file and buffer writer.
Xinliang David Li [Fri, 15 Jan 2016 19:01:04 +0000 (19:01 +0000)]
[PGO] Commonize (more) index profile file and buffer writer.

The file and buffer writer code are mostly shared except for the
stream back-patching. This is because raw_string_ostream does not
support seek like interface. The result is that the data patching
code needs to be pushed to the caller which is not quite readable
(passing around offset, value etc). This also makes future enhancement
(which needs more patching) more difficult (and can make impl messy).

In this patch, two types of streams needed by the writer are now
unified with same set of interfaces under ProfOStream class. The patch
method is added so that common implementation becomes cleaner. It
also enables future enhancement. Should be NFC.

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

8 years agoBring back "Assert that we have all use/users in the getters."
Rafael Espindola [Fri, 15 Jan 2016 19:00:20 +0000 (19:00 +0000)]
Bring back "Assert that we have all use/users in the getters."

This reverts commit r257751, bringing back r256105.

The problem the assert found was fixed in r257915.

Original commit message:

Assert that we have all use/users in the getters.

An error that is pretty easy to make is to use the lazy bitcode reader
and then do something like

if (V.use_empty())

The problem is that uses in unmaterialized functions are not accounted
for.

This patch adds asserts that all uses are known.

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

8 years agoRevert "[ARM] Add ARMv8-M security extension instructions to ARMv8-M Baseline/Mainline"
Reid Kleckner [Fri, 15 Jan 2016 18:55:12 +0000 (18:55 +0000)]
Revert "[ARM] Add ARMv8-M security extension instructions to ARMv8-M Baseline/Mainline"

This reverts commit r257883.

Somehow this didn't make it into r257916.

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

8 years agoReapply r257800 with fix
Matthew Simpson [Fri, 15 Jan 2016 18:51:51 +0000 (18:51 +0000)]
Reapply r257800 with fix

The fix uniques the bundle of getelementptr indices we are about to vectorize
since it's possible for the same index to be used by multiple instructions.
The original commit message is below.

[SLP] Vectorize the index computations of getelementptr instructions.

This patch seeds the SLP vectorizer with getelementptr indices. The primary
motivation in doing so is to vectorize gather-like idioms beginning with
consecutive loads (e.g., g[a[0] - b[0]] + g[a[1] - b[1]] + ...). While these
cases could be vectorized with a top-down phase, seeding the existing bottom-up
phase with the index computations avoids the complexity, compile-time, and
phase ordering issues associated with a full top-down pass. Only bundles of
single-index getelementptrs with non-constant differences are considered for
vectorization.

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

8 years ago# This is a combination of 2 commits.
Reid Kleckner [Fri, 15 Jan 2016 18:31:29 +0000 (18:31 +0000)]
# This is a combination of 2 commits.
# The first commit's message is:

Revert "[ARM] Add DSP build attribute and extension targeting"

This reverts commit b11cc50c0b4a7c8cdb628abc50b7dc226ff583dc.

# This is the 2nd commit message:

Revert "[ARM] Add new system registers to ARMv8-M Baseline/Mainline"

This reverts commit 837d08454e3e5beb8581951ac26b22fa07df3cd5.

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

8 years agoDon't try to check all uses if lazy loading.
Rafael Espindola [Fri, 15 Jan 2016 18:23:46 +0000 (18:23 +0000)]
Don't try to check all uses if lazy loading.

This means that LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN will not be set
in a few cases.

This should have no impact in ld64 since it doesn't use lazy loading
when merging modules and that is when it checks
LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN.

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

8 years agoRecommit r257912
George Rimar [Fri, 15 Jan 2016 18:21:34 +0000 (18:21 +0000)]
Recommit r257912
Added forgotten ELFDumper.cpp to commit.

Initial commit message:
[llvm-readobj] Add support for TLSDESC_PLT and TLSDESC_GOT dynamic section tags to the llvm-readobj.

If module uses uses lazy TLSDESC relocations it should define DT_TLSDESC_PLT and DT_TLSDESC_GOT entries.
They were unknown for llvm-readobj before this patch.

Differential revision: http://reviews.llvm.org/D16224

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

8 years agoRevert r257912 - forgot to commit one file.
George Rimar [Fri, 15 Jan 2016 18:19:06 +0000 (18:19 +0000)]
Revert r257912 - forgot to commit one file.

Initial commit message:
[llvm-readobj] Add support for TLSDESC_PLT and TLSDESC_GOT dynamic section tags to the llvm-readobj.

If module uses uses lazy TLSDESC relocations it should define DT_TLSDESC_PLT and DT_TLSDESC_GOT entries.
They were unknown for llvm-readobj before this patch.

Differential revision: http://reviews.llvm.org/D16224
----
Added : /llvm/trunk/test/tools/llvm-readobj/Inputs/dynamic-table-so.aarch64
Modified : /llvm/trunk/test/tools/llvm-readobj/Inputs/dynamic-table.c
Modified : /llvm/trunk/test/tools/llvm-readobj/dynamic.test

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

8 years ago[llvm-readobj] Add support for TLSDESC_PLT and TLSDESC_GOT dynamic section tags to...
George Rimar [Fri, 15 Jan 2016 18:13:59 +0000 (18:13 +0000)]
[llvm-readobj] Add support for TLSDESC_PLT and TLSDESC_GOT dynamic section tags to the llvm-readobj.

If module uses uses lazy TLSDESC relocations it should define DT_TLSDESC_PLT and DT_TLSDESC_GOT entries.
They were unknown for llvm-readobj before this patch.

Differential revision: http://reviews.llvm.org/D16224

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

8 years ago[Support/ELF] - Added DT_TLSDESC_PLT and DT_TLSDESC_GOT constants.
George Rimar [Fri, 15 Jan 2016 18:09:27 +0000 (18:09 +0000)]
[Support/ELF] - Added DT_TLSDESC_PLT and DT_TLSDESC_GOT constants.

Added 2 constants:

DT_TLSDESC_PLT = 0x6FFFFEF6, Location of PLT entry for TLS descriptor resolver calls.
DT_TLSDESC_GOT = 0x6FFFFEF7, Location of GOT entry used by TLS descriptor resolver PLT entry.

Constants were taken from "Thread-Local Storage Descriptors for IA32 and AMD64/EM64T Version 0.9.5" http://www.fsfla.org/~lxoliva/writeups/TLS/RFC-TLSDESC-x86.txt

Differential revision: http://reviews.llvm.org/D16185

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

8 years ago[codeview] Dump the file checksum substream
Reid Kleckner [Fri, 15 Jan 2016 18:06:25 +0000 (18:06 +0000)]
[codeview] Dump the file checksum substream

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

8 years ago[CMake] Need to install VersionFromVCS.cmake as part of LLVM's CMake modules
Chris Bieneman [Fri, 15 Jan 2016 17:49:46 +0000 (17:49 +0000)]
[CMake] Need to install VersionFromVCS.cmake as part of LLVM's CMake modules

This is required to support clang --version detecting the clang repository information.

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

8 years agotest-release.sh: Fix clang-tools-extra symlink for CMake build
Hans Wennborg [Fri, 15 Jan 2016 17:04:45 +0000 (17:04 +0000)]
test-release.sh: Fix clang-tools-extra symlink for CMake build

The CMake and Autoconf builds want the symlink set up differently.

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

8 years agoAdd a test showing when ld64 can hide linkonce_odr symbols.
Rafael Espindola [Fri, 15 Jan 2016 16:40:20 +0000 (16:40 +0000)]
Add a test showing when ld64 can hide linkonce_odr symbols.

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

8 years agoStop increasing alignment of externally-visible globals on ELF
James Y Knight [Fri, 15 Jan 2016 16:33:06 +0000 (16:33 +0000)]
Stop increasing alignment of externally-visible globals on ELF
platforms.

With ELF, the alignment of a global variable in a shared library will
get copied into an executables linked against it, if the executable even
accesss the variable. So, it's not possible to implicitly increase
alignment based on access patterns, or you'll break existing binaries.

This happened to affect libc++'s std::cout symbol, for example. See
thread: http://thread.gmane.org/gmane.comp.compilers.clang.devel/45311

(This is a re-commit of r257719, without the bug reported in
PR26144. I've tweaked the code to not assert-fail in
enforceKnownAlignment when computeKnownBits doesn't recurse far enough
to find the underlying Alloca/GlobalObject value.)

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

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

8 years agoMake sure this test is actually executed.
Rafael Espindola [Fri, 15 Jan 2016 16:16:46 +0000 (16:16 +0000)]
Make sure this test is actually executed.

Before it was always unsupported.

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

8 years agoRe-commit r257064, after it was reverted in r257340.
Silviu Baranga [Fri, 15 Jan 2016 15:52:05 +0000 (15:52 +0000)]
Re-commit r257064, after it was reverted in r257340.

This contains a fix for the issue that caused the revert:
we no longer assume that we can insert instructions after the
instruction that produces the base pointer. We previously
assumed that this would be ok, because the instruction produces
a value and therefore is not a terminator. This is false for invoke
instructions. We will now insert these new instruction directly
at the location of the users.

Original commit message:

[InstCombine] Look through PHIs, GEPs, IntToPtrs and PtrToInts to expose more constants when comparing GEPs

Summary:
When comparing two GEP instructions which have the same base pointer
and one of them has a constant index, it is possible to only compare
indices, transforming it to a compare with a constant. This removes
one use for the GEP instruction with the constant index, can reduce
register pressure and can sometimes lead to removing the comparisson
entirely.

InstCombine was already doing this when comparing two GEPs if the base
pointers were the same. However, in the case where we have complex
pointer arithmetic (GEPs applied to GEPs, PHIs of GEPs, conversions to
or from integers, etc) the value of the original base pointer will be
hidden to the optimizer and this transformation will be disabled.

This change detects when the two sides of the comparison can be
expressed as GEPs with the same base pointer, even if they don't
appear as such in the IR. The transformation will convert all the
pointer arithmetic to arithmetic done on indices and all the relevant
uses of GEPs to GEPs with a common base pointer. The GEP comparison
will be converted to a comparison done on indices.

Reviewers: majnemer, jmolloy

Subscribers: hfinkel, jevinskie, jmolloy, aadg, llvm-commits

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

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

8 years agoChange isSafeToLoadUnconditionally arguments order. Separated from http://reviews...
Artur Pilipenko [Fri, 15 Jan 2016 15:27:46 +0000 (15:27 +0000)]
Change isSafeToLoadUnconditionally arguments order. Separated from reviews.llvm.org/D10920.

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

8 years ago[InstructionsTest] delete via unique_ptr (NFC)
Joseph Tremoulet [Fri, 15 Jan 2016 15:08:36 +0000 (15:08 +0000)]
[InstructionsTest] delete via unique_ptr (NFC)

Summary:
Simplify the memory management of mock IR in test AlterInvokeBundles.

Reviewers: dblaikie

Subscribers: llvm-commits

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

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

8 years ago[Hexagon] Generate CONST64 when optimizing for size in copy-to-combine
Krzysztof Parzyszek [Fri, 15 Jan 2016 14:08:31 +0000 (14:08 +0000)]
[Hexagon] Generate CONST64 when optimizing for size in copy-to-combine

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

8 years ago[Hexagon] Handle DBG_VALUE instructions in copy-to-combine
Krzysztof Parzyszek [Fri, 15 Jan 2016 13:55:57 +0000 (13:55 +0000)]
[Hexagon] Handle DBG_VALUE instructions in copy-to-combine

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

8 years agoRevert "[SLP] Vectorize the index computations of getelementptr instructions."
Matthew Simpson [Fri, 15 Jan 2016 13:10:46 +0000 (13:10 +0000)]
Revert "[SLP] Vectorize the index computations of getelementptr instructions."

This reverts commit r257800.

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

8 years ago[CodeGenPrepare] Try and appease sanitizers
James Molloy [Fri, 15 Jan 2016 10:36:01 +0000 (10:36 +0000)]
[CodeGenPrepare] Try and appease sanitizers

dupRetToEnableTailCallOpts(BB) can invalidate BB. It must run *after* we iterate across BB!

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

8 years ago[ARM] Add DSP build attribute and extension targeting
Bradley Smith [Fri, 15 Jan 2016 10:28:25 +0000 (10:28 +0000)]
[ARM] Add DSP build attribute and extension targeting

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

8 years ago[ARM] Add new system registers to ARMv8-M Baseline/Mainline
Bradley Smith [Fri, 15 Jan 2016 10:28:03 +0000 (10:28 +0000)]
[ARM] Add new system registers to ARMv8-M Baseline/Mainline

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

8 years ago[ARM] Add ARMv8-M security extension instructions to ARMv8-M Baseline/Mainline
Bradley Smith [Fri, 15 Jan 2016 10:27:14 +0000 (10:27 +0000)]
[ARM] Add ARMv8-M security extension instructions to ARMv8-M Baseline/Mainline

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

8 years ago[ARM] Add ARMv8-A semaphore/atomic instructions to ARMv8-M Baseline/Mainline
Bradley Smith [Fri, 15 Jan 2016 10:26:51 +0000 (10:26 +0000)]
[ARM] Add ARMv8-A semaphore/atomic instructions to ARMv8-M Baseline/Mainline

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

8 years ago[ARM] Add B.W and CBZ instructions to ARMv8-M Baseline
Bradley Smith [Fri, 15 Jan 2016 10:26:17 +0000 (10:26 +0000)]
[ARM] Add B.W and CBZ instructions to ARMv8-M Baseline

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

8 years ago[ARM] Add SDIV/UDIV instructions to ARMv8-M Baseline
Bradley Smith [Fri, 15 Jan 2016 10:25:35 +0000 (10:25 +0000)]
[ARM] Add SDIV/UDIV instructions to ARMv8-M Baseline

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

8 years ago[ARM] Add MOVW/MOVT instructions to ARMv8-M Baseline/Mainline
Bradley Smith [Fri, 15 Jan 2016 10:25:14 +0000 (10:25 +0000)]
[ARM] Add MOVW/MOVT instructions to ARMv8-M Baseline/Mainline

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

8 years ago[ARM] Add ARMv8-M Baseline/Mainline LLVM targeting
Bradley Smith [Fri, 15 Jan 2016 10:24:39 +0000 (10:24 +0000)]
[ARM] Add ARMv8-M Baseline/Mainline LLVM targeting

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

8 years ago[ARM] Split out ARMv8-A semaphores and atomics and ARMv7 clrex as separate features
Bradley Smith [Fri, 15 Jan 2016 10:23:46 +0000 (10:23 +0000)]
[ARM] Split out ARMv8-A semaphores and atomics and ARMv7 clrex as separate features

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

8 years ago[X86][SSE] Added more exhaustive merge consecutive load tests
Simon Pilgrim [Fri, 15 Jan 2016 09:52:50 +0000 (09:52 +0000)]
[X86][SSE] Added more exhaustive merge consecutive load tests

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

8 years ago[InstCombine] Rewrite bswap/bitreverse handling completely.
James Molloy [Fri, 15 Jan 2016 09:20:19 +0000 (09:20 +0000)]
[InstCombine] Rewrite bswap/bitreverse handling completely.

There are several requirements that ended up with this design;
  1. Matching bitreversals is too heavyweight for InstCombine and doesn't really need to be done so early.
  2. Bitreversals and byteswaps are very related in their matching logic.
  3. We want to implement support for matching more advanced bswap/bitreverse patterns like partial bswaps/bitreverses.
  4. Bswaps are best matched early in InstCombine.

The result of these is that a new utility function is created in Transforms/Utils/Local.h that can be configured to search for bswaps, bitreverses or both. InstCombine uses it to find only bswaps, CGP uses it to find only bitreversals.

We can then extend the matching logic in one place only.

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

8 years ago[SystemZ] Fix bad instruction name
Jonas Paulsson [Fri, 15 Jan 2016 07:12:09 +0000 (07:12 +0000)]
[SystemZ] Fix bad instruction name

SLGBR -> SLBGR

Reviewed by Ulrich Weigand

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

8 years ago[libFuzzer] do mutations based on memcmp/strcmp interceptors under a separate flag...
Kostya Serebryany [Fri, 15 Jan 2016 06:24:05 +0000 (06:24 +0000)]
[libFuzzer] do mutations based on memcmp/strcmp interceptors under a separate flag (-use_memcmp, default=1)

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

8 years ago[docs] Document LLVM_{BUILD,LINK}_LLVM_DYLIB
Andrew Wilkins [Fri, 15 Jan 2016 03:33:35 +0000 (03:33 +0000)]
[docs] Document LLVM_{BUILD,LINK}_LLVM_DYLIB

Summary:
Document the LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB
CMake options, move BUILD_SHARED_LIBS out of frequently-used,
and add a note/warning to BUILD_SHARED_LIBS.

Reviewers: beanz, delcypher, mjacob

Subscribers: mjacob, llvm-commits

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

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

8 years agoDelete MCRelocationInfo::createExprForRelocation.
Pete Cooper [Fri, 15 Jan 2016 02:24:12 +0000 (02:24 +0000)]
Delete MCRelocationInfo::createExprForRelocation.

This method has no callers.

Also remove X86ELFRelocationInfo.cpp and X86MachORelocationInfo.cpp
which only existed to provide an implementation of that method.

Ok'd by Rafael and Jim.

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

8 years agolli: use llvm::utostr() instead of std::to_string().
NAKAMURA Takumi [Fri, 15 Jan 2016 02:14:46 +0000 (02:14 +0000)]
lli: use llvm::utostr() instead of std::to_string().

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

8 years ago[autoconf] Install VersionFromVCS.cmake, too. clang/CMakeLists.txt requires it.
NAKAMURA Takumi [Fri, 15 Jan 2016 02:13:04 +0000 (02:13 +0000)]
[autoconf] Install VersionFromVCS.cmake, too. clang/CMakeLists.txt requires it.

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

8 years agoOnce again revert debug info verifier changes
Keno Fischer [Fri, 15 Jan 2016 02:12:38 +0000 (02:12 +0000)]
Once again revert debug info verifier changes

Yet another wave of buildbot failures (though fewer this time).
I'm only reverting the Verifier changes, as the test cases
will be fine without them as well, and touching them as often
just introduces unnecessary churn.

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

8 years agoReapply r257105 "[Verifier] Check that debug values have proper size"
Keno Fischer [Fri, 15 Jan 2016 00:46:17 +0000 (00:46 +0000)]
Reapply r257105 "[Verifier] Check that debug values have proper size"

I originally reapplied this in 257550, but had to revert again due to bot
breakage. The only change in this version is to allow either the TypeSize
or the TypeAllocSize of the variable to be the one represented in debug info
(hopefully in the future we can figure out how to encode the difference).
Additionally, several bot failures following r257550, were due to
optimizer bugs now fixed in r257787 and r257795.

r257550 commit message was:

```
The follow extra changes were made to test cases:

Manually making the variable be the actual type instead of a pointer
to avoid pointer-size differences in generic code:

    LLVM :: DebugInfo/Generic/2010-03-24-MemberFn.ll
    LLVM :: DebugInfo/Generic/2010-04-06-NestedFnDbgInfo.ll
    LLVM :: DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
    LLVM :: DebugInfo/Generic/varargs.ll

Delete sizing information from debug info for the same reason
(but the presence of the pointer was important to the test case):

    LLVM :: DebugInfo/Generic/restrict.ll
    LLVM :: DebugInfo/Generic/tu-composite.ll
    LLVM :: Linker/type-unique-type-array-a.ll
    LLVM :: Linker/type-unique-simple2.ll

Fixing an incorrect DW_OP_deref

    LLVM :: DebugInfo/Generic/2010-05-03-OriginDIE.ll

Fixing a missing DW_OP_deref

    LLVM :: DebugInfo/Generic/incorrect-variable-debugloc.ll

Additionally, clang should no longer complain during bootstrap should no
longer happen after r257534.

The original commit message was:
``
Summary:
Teach the Verifier to make sure that the storage size given to llvm.dbg.declare
or the value size given to llvm.dbg.value agree with what is declared in
DebugInfo. This is implicitly assumed in a number of passes (e.g. in SROA).
Additionally this catches a number of common mistakes, such as passing a
pointer when a value was intended or vice versa.

One complication comes from stack coloring which modifies the original IR when
it merges allocas in order to make sure that if AA falls back to the IR it gets
the correct result. However, given this new invariant, indiscriminately
replacing one alloca by a different (differently sized one) is no longer valid.
Fix this by just undefing out any use of the alloca in a dbg.declare in this
case.

Additionally, I had to fix a number of test cases. Of particular note:
- I regenerated dbg-changes-codegen-branch-folding.ll from the given source as
  it was affected by the bug fixed in r256077
- two-cus-from-same-file.ll was changed to avoid having a variable-typed debug
  variable as that would depend on the target, even though this test is
  supposed to be generic
- I had to manually declared size/align for reference type. See also the
  discussion for D14275/r253186.
- fpstack-debuginstr-kill.ll required changing `double` to `long double`
- most others were just a question of adding OP_deref
``

```

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

8 years agoLLVMRunStaticConstructors can be called before object is finalized, #24028
Amaury Sechet [Fri, 15 Jan 2016 00:23:34 +0000 (00:23 +0000)]
LLVMRunStaticConstructors can be called before object is finalized, #24028

Summary: Since you cannot call finalizeObject manually through the C-API and other functions from the C-API automatically call it, LLVMRunStaticConstructors should also call it or otherwise you cannot call it without first calling a workaround function (or call any other function from the C-API which implicitly finalizes the object).

Reviewers: dnovillo, spatel, bkramer, deadalnix, joker.eph, echristo, lhames

Subscribers: llvm-commits

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

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

8 years ago[libFuzzer] use custom stol; also introduce __libfuzzer_is_present so that users...
Kostya Serebryany [Fri, 15 Jan 2016 00:17:37 +0000 (00:17 +0000)]
[libFuzzer] use custom stol; also introduce __libfuzzer_is_present so that users can check for its presence.

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

8 years ago[docs] Restructure description of records created by Statepoints
Philip Reames [Fri, 15 Jan 2016 00:13:39 +0000 (00:13 +0000)]
[docs] Restructure description of records created by Statepoints

The previous text was hard to understand even for me and I wrote it.  Hopefully the new structure makes it a bit more clear what's going on.  If anyone has word smithing suggestion or clarification questions, please let me know.

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

8 years ago[codeview] Translate file table offsets to filenames and print them
Reid Kleckner [Fri, 15 Jan 2016 00:11:21 +0000 (00:11 +0000)]
[codeview] Translate file table offsets to filenames and print them

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

8 years agorangify; NFCI
Sanjay Patel [Fri, 15 Jan 2016 00:08:10 +0000 (00:08 +0000)]
rangify; NFCI

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

8 years agoFix AArch64ConditionOptimizer
Weiming Zhao [Fri, 15 Jan 2016 00:06:58 +0000 (00:06 +0000)]
Fix AArch64ConditionOptimizer

Summary:
This pass may modify the Cmp operands. However, the flag reg may be used by both the branch and CSEL.
Modifying CMP will have side effect on CSEL.

Reviewers: t.p.northover

Subscribers: llvm-commits, aemerson, rengolin

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

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

8 years ago[docs] Update Statepoint docs to clarify format for recent changes
Philip Reames [Thu, 14 Jan 2016 23:58:18 +0000 (23:58 +0000)]
[docs] Update Statepoint docs to clarify format for recent changes

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

8 years agoOrc: Simplify some things with NSDMIs and some braced init.
David Blaikie [Thu, 14 Jan 2016 23:33:43 +0000 (23:33 +0000)]
Orc: Simplify some things with NSDMIs and some braced init.

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

8 years agoremove duplicate documentation comments (already in the header file) ; NFC
Sanjay Patel [Thu, 14 Jan 2016 23:23:04 +0000 (23:23 +0000)]
remove duplicate documentation comments (already in the header file) ; NFC

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

8 years agoRefactor threshold computation for inline cost analysis
Easwaran Raman [Thu, 14 Jan 2016 23:16:29 +0000 (23:16 +0000)]
Refactor threshold computation for inline cost analysis

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

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

8 years ago[CMake] Add support for populating LLVM_REPOSITORY from CMake.
Chris Bieneman [Thu, 14 Jan 2016 22:44:29 +0000 (22:44 +0000)]
[CMake] Add support for populating LLVM_REPOSITORY from CMake.

Autoconf does this in the GetRepositoryPath script, CMake's VersionFromVCS does grab the SVN_REVISION, but doesn't populate the repository URL.

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

8 years ago[Verifier] Check parentage of GVs in dbg metadata
Keno Fischer [Thu, 14 Jan 2016 22:42:02 +0000 (22:42 +0000)]
[Verifier] Check parentage of GVs in dbg metadata

Summary:
Before this the Verifier didn't complain if the GlobalVariable
referenced from a DIGlobalVariable was not in fact in the correct
module (it would crash while writing bitcode though). Fix this by
always checking parantage of GlobalValues while walking constant
expressions and changing the DIGlobalVariable visitor to also
visit the constant it contains.

Reviewers: rafael
Differential Revision: http://reviews.llvm.org/D16059

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

8 years ago[sancov] html report
Mike Aizatsky [Thu, 14 Jan 2016 22:34:11 +0000 (22:34 +0000)]
[sancov] html report

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

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

8 years ago[Verifier] Verify that a GlobalValue is only used in this Module
Keno Fischer [Thu, 14 Jan 2016 22:20:56 +0000 (22:20 +0000)]
[Verifier] Verify that a GlobalValue is only used in this Module

Summary:
We already have the inverse verification that we only use globals
that are defined in this module. This essentially catches the
same mistake, but when verifying the module that contains the
definition.

Reviewers: rafael
Differential Revision: http://reviews.llvm.org/D15272

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

8 years ago[PGO] Move profile summary interface/impl into InstrProf.[*] /NFC
Xinliang David Li [Thu, 14 Jan 2016 22:10:49 +0000 (22:10 +0000)]
[PGO] Move profile summary interface/impl into InstrProf.[*] /NFC

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

8 years ago[Orc] Add support for EH-frame registration to the Orc Remote Target utility
Lang Hames [Thu, 14 Jan 2016 22:02:03 +0000 (22:02 +0000)]
[Orc] Add support for EH-frame registration to the Orc Remote Target utility
classes.

OrcRemoteTargetClient::RCMemoryManager will now register EH frames with the
server automatically. This allows remote-execution of code that uses exceptions.

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

8 years ago[Hexagon] Use S2_lsr_i_r instead of S2_extractu to obtain upper halfword
Krzysztof Parzyszek [Thu, 14 Jan 2016 21:59:22 +0000 (21:59 +0000)]
[Hexagon] Use S2_lsr_i_r instead of S2_extractu to obtain upper halfword

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

8 years ago[codeview] Dump function callees and add more labels to inlinee info
Reid Kleckner [Thu, 14 Jan 2016 21:50:05 +0000 (21:50 +0000)]
[codeview] Dump function callees and add more labels to inlinee info

I kept forgetting which number is the line delta and which is the code
delta.

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

8 years ago[Hexagon] Handle HVX registers in bit simplification
Krzysztof Parzyszek [Thu, 14 Jan 2016 21:45:43 +0000 (21:45 +0000)]
[Hexagon] Handle HVX registers in bit simplification

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

8 years ago[Packetizer] Code cleanup, NFC
Krzysztof Parzyszek [Thu, 14 Jan 2016 21:17:04 +0000 (21:17 +0000)]
[Packetizer] Code cleanup, NFC

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

8 years agoUpdate to use new name alignTo().
Rui Ueyama [Thu, 14 Jan 2016 21:06:47 +0000 (21:06 +0000)]
Update to use new name alignTo().

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

8 years agoHandle offsets larger than 32 bits.
Rafael Espindola [Thu, 14 Jan 2016 21:03:06 +0000 (21:03 +0000)]
Handle offsets larger than 32 bits.

David Majnemer noticed that it was not obvious what the behavior would
be if B.Offset - A.Offset could not fit in an int.

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

8 years ago[SLP] Vectorize the index computations of getelementptr instructions.
Matthew Simpson [Thu, 14 Jan 2016 20:46:27 +0000 (20:46 +0000)]
[SLP] Vectorize the index computations of getelementptr instructions.

This patch seeds the SLP vectorizer with getelementptr indices. The primary
motivation in doing so is to vectorize gather-like idioms beginning with
consecutive loads (e.g., g[a[0] - b[0]] + g[a[1] - b[1]] + ...). While these
cases could be vectorized with a top-down phase, seeding the existing bottom-up
phase with the index computations avoids the complexity, compile-time, and
phase ordering issues associated with a full top-down pass. Only bundles of
single-index getelementptrs with non-constant differences are considered for
vectorization.

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

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

8 years ago[Support] Rename RoundUpToAlignment -> alignTo.
Rui Ueyama [Thu, 14 Jan 2016 20:43:11 +0000 (20:43 +0000)]
[Support] Rename RoundUpToAlignment -> alignTo.

Rounding up an integer m to a nearest multiple of n where n is a power
of 2 is used very often if you are writing code to emit binary files.
RoundUpToAlignment is a small function to do that. But we found that the
function has a small but annoying issue; the name is a bit too long.
Because it is used quite often, that hurts readability.

This patch is to rename the function. The original name is kept as a
forwarder, so that submitting this patch won't immediately break Clang
and other LLVM projects. Once I update all occurrences of RoundUpToAlignment,
I'll remove the old name entirely.

http://reviews.llvm.org/D16162

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

8 years agoAssert that a cmp function defines a total order.
Rafael Espindola [Thu, 14 Jan 2016 20:28:25 +0000 (20:28 +0000)]
Assert that a cmp function defines a total order.

Thanks to David Blaikie for noticing it.

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

8 years ago[SROA] Also insert a bit piece expression if only one piece is needed
Keno Fischer [Thu, 14 Jan 2016 20:06:34 +0000 (20:06 +0000)]
[SROA] Also insert a bit piece expression if only one piece is needed

Summary: If SROA creates only one piece (e.g. because the other is not needed),
it still needs to create a bit_piece expression if that bit piece is smaller
than the original size of the alloca.

Reviewers: aprantl

Subscribers: llvm-commits

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

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

8 years ago[CodeGen] Don't assume fp_to_fp16 produces i16 when legalizing it.
Ahmed Bougacha [Thu, 14 Jan 2016 19:45:36 +0000 (19:45 +0000)]
[CodeGen] Don't assume fp_to_fp16 produces i16 when legalizing it.

Since r230276, we support an improved legalization for f64->f16,
which goes through a temporary f32, improving codegen when
f32->f16 is legal but not f64->f16. This requires unsafe-fp-math.

However, that legalization assumed that the second step, producing
a pseudo-softened f16, had type i16. That's not true on targets
with illegal i16, such as ARM.

Use the initial f64->f16 result type instead.

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

8 years agoInclude TypeIndex. Again, the "check" target is not enough to catch this currently
Reid Kleckner [Thu, 14 Jan 2016 19:40:27 +0000 (19:40 +0000)]
Include TypeIndex. Again, the "check" target is not enough to catch this currently

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

8 years agoRename WinCodeViewLineTables to CodeViewDebug, similar to DwarfDebug
Reid Kleckner [Thu, 14 Jan 2016 19:25:04 +0000 (19:25 +0000)]
Rename WinCodeViewLineTables to CodeViewDebug, similar to DwarfDebug

Soon it will be responsible for more than line tables.

Reviewers: majnemer

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

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

8 years agoExclude test-suite from CMake builds in test-release.sh
Hans Wennborg [Thu, 14 Jan 2016 19:21:14 +0000 (19:21 +0000)]
Exclude test-suite from CMake builds in test-release.sh

It's broken. In 3.7 there wasn't a CMake build for test-suite at all,
so we're not losing something we had before.

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

8 years ago[codeview] Dump CodeView inlinee lines subsection
Reid Kleckner [Thu, 14 Jan 2016 19:20:17 +0000 (19:20 +0000)]
[codeview] Dump CodeView inlinee lines subsection

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

8 years ago[Utils] Fix incorrect dbg.declare store conversion
Keno Fischer [Thu, 14 Jan 2016 19:12:27 +0000 (19:12 +0000)]
[Utils] Fix incorrect dbg.declare store conversion

Summary: The dbg.declare -> dbg.value conversion did not check which operand of
the store instruction the alloca was passed to. As a result code that stored the
address of an alloca, rather than storing to the alloca, would still trigger
the conversion routine, leading to the insertion of an incorrect dbg.value
intrinsic.

Reviewers: aprantl

Subscribers: llvm-commits

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

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

8 years agodsymutil: Provide better warnings when clang modules cannot be found.
Adrian Prantl [Thu, 14 Jan 2016 18:31:07 +0000 (18:31 +0000)]
dsymutil: Provide better warnings when clang modules cannot be found.

rdar://problem/22823264

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