133996 Commits

Author SHA1 Message Date
Reid Kleckner
83b162c3b2 [codeview] Fix the alignment padding that we add to list records
Tweak the big-types.ll test case to catch this bug. We just need an
enumerator name that doesn't have a length that is a multiple of 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273477 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:59:17 +00:00
Davide Italiano
90107652c0 [IRObjectFile] Propagate .weak attribute correctly for ASM symbols.
PR: 28256
Differential Revision:  http://reviews.llvm.org/D21616


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273474 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:48:15 +00:00
Daniel Berlin
c81dea1072 Update header documentation for API deliberately made public
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273473 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:31:12 +00:00
Peter Collingbourne
277258478e IR: Introduce Module::global_objects().
This is a convenience iterator that allows clients to enumerate the
GlobalObjects within a Module.

Also start using it in a few places where it is obviously the right thing
to use.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273470 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:29:42 +00:00
Matt Arsenault
e46cd3a4c3 AMDGPU: Run verifier after 2nd run of SIShrinkInstructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273469 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:26:24 +00:00
Matt Arsenault
e22857013f AMDGPU: Fix verifier errors in SILowerControlFlow
The main sin this was committing was using terminator
instructions in the middle of the block, and then
not updating the block successors / predecessors.
Split the blocks up to avoid this and introduce new
pseudo instructions for branches taken with exec masking.

Also use a pseudo instead of emitting s_endpgm and erasing
it in the special case of a non-void return.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273467 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:15:28 +00:00
Krzysztof Parzyszek
c7a10fc5ed [Hexagon] Add SDAG preprocessing step to expose shifted addressing modes
Transform: (store ch addr (add x (add (shl y c) e)))
       to: (store ch addr (add x (shl (add y d) c))),
where e = (shl d c) for some integer d.
The purpose of this is to enable generation of loads/stores with
shifted addressing mode, i.e. mem(x+y<<#c). For that, the shift
value c must be 0, 1 or 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273466 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 20:08:27 +00:00
Davide Italiano
e93d6b14f7 [UpdateCompilerUsed] API rename and cleanup, suggested by Rafaael.
* UpdateCompilerUsed() -> updateCompilerUsed()
* ThinLTO doesn't use the API so we can remove the include
* Clean up unused #include <functional> from the header
* Rename #ifdef guard comment to be correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273461 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 19:50:42 +00:00
Xinliang David Li
9e588d89c5 [MBFI]: Add a new suboption for graph viewer
-view-machine-block-freq-propagation-dags currently
support integer and fraction as the suboptions. This
patch adds the 'count' suboption to display actual
profile count if available.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273460 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 19:26:44 +00:00
Sanjay Patel
efa1f7f367 [ValueTracking] improve ComputeNumSignBits for vector constants
This is similar to the computeKnownBits improvement in rL268479. 
There's probably more we can do for vector logic instructions, but 
this should let us see non-splat constant masking ops that can
become vector selects instead of and/andn/or sequences.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273459 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 19:20:59 +00:00
Chad Rosier
577fa41d50 [AArch64] Remove an overly aggressive assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273458 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 19:18:52 +00:00
Rafael Espindola
5e5a33df9e Start using shouldAssumeDSOLocal on Hexagon.
Include a token test showing that access to private is now the same as
to internal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273457 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 19:09:14 +00:00
Nirav Dave
123be93bcd Preserve DebugInfo when replacing values in DAGCombiner
Recommiting after fixing over-aggressive assertion

[DAG] Previously debug values would transfer debuginfo for the selected
start node for a replacement which allows for debug to be dropped.

Push debug value transfer to occur with node/value replacement in
SelectionDAG, remove now extraneous transfers of debug values.

This refixes PR9817 which was being incompletely checked in the
testsuite.

Reviewers: jyknight

Subscribers: dblaikie, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273456 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 19:03:26 +00:00
Wei Ding
ef86963806 AMDGPU: Add convergent flag to INLINEASM instruction.
Differential Revision: http://reviews.llvm.org/D21214

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273455 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 18:51:08 +00:00
Reid Kleckner
2ec3f6d303 [codeview] Add IntroducingVirtual debug info flag
CodeView needs to know if a virtual method was introduced in the current
class, and base classes may not have complete type information, so we
need to thread this bit through from the frontend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273453 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 18:31:14 +00:00
Jason Henline
f3416e6a87 Removing whitespace from test commit rL273447
Undoing the trivial change I introduced in rL273447.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273449 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 18:01:11 +00:00
Matt Arsenault
6ef04515db AMDGPU: Make FrameLowering stack alignment 16
We don't need it to be that high. The natural alignment
for a single workitem's stack is 16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273448 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 17:47:39 +00:00
Jason Henline
b92f7d2bfc Add whitespace to check commit access
No functional changes. Just adding whitespace in a comment in order to
check that I am able to push a commit to the repo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273447 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 17:40:02 +00:00
Reid Kleckner
b0625ca074 [codeview] Fix trivial bug in OneMethodRecord::isIntroducingVirtual
These should be equality comparisons. Fixes assertions while
self-hosting clang with codeview debug info.

Ultimately this is going to be covered by real tests for virtual method
emission, so I'm not adding a "don't crash on this input" test that I'll
remove soon afterwards.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273446 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 17:32:59 +00:00
Vedant Kumar
f317b6e2b1 [asan] Do not instrument accesses to profiling globals
It's only useful to asan-itize profiling globals while debugging llvm's
profiling instrumentation passes. Enabling asan along with instrprof or
gcov instrumentation shouldn't incur extra overhead.

This patch is in the same spirit as r264805 and r273202, which disabled
tsan instrumentation of instrprof/gcov globals.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273444 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 17:30:58 +00:00
Reid Kleckner
fefbc8fc7e [codeview] Defer emission of all referenced complete records
This is the motivating example:
  struct B { int b; };
  struct A { B *b; };
  int f(A *p) { return p->b->b; }

Clang emits complete types for both A and B because they are required to
be complete, but our CodeView emission would only emit forward
declarations of A and B. This was a consequence of the fact that the A*
type must reference the forward declaration of A, which doesn't
reference B at all.

We can't eagerly emit complete definitions of A and B when we request
the forward declaration's type index because of recursive types like
linked lists. If we did that, our stack usage could get out of hand, and
it would be possible to lower a type while attempting to lower a type,
and we would need to double check if our type is already present in the
TypeIndexMap after all recursive getTypeIndex calls.

Instead, defer complete type emission until after all type lowering has
completed. This ensures that all referenced complete types are emitted,
and that type lowering is not re-entrant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273443 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 17:15:28 +00:00
Xinliang David Li
7f4f1f640d [BFI]: NFC refactoring
move getBlockProfileCount implementation to the
base class so that MBFI can share too.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273442 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 17:12:12 +00:00
Zhan Jun Liau
464847757f [SystemZ] Recognize RISBG opportunities involving a truncate
Summary:
Recognize RISBG opportunities where the end result is narrower than the
original input - where a truncate separates the shift/and operations.

The motivating case is some code in postgres which looks like:

	srlg	%r2, %r0, 11
	nilh	%r2, 255

Reviewers: uweigand

Author: RolandF

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273433 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 16:16:27 +00:00
Krzysztof Parzyszek
065537a5a0 [Hexagon] Handle expansion of cmpxchg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273432 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 16:07:10 +00:00
Reid Kleckner
924722175f [codeview] Remove ClassInfoMap
From a design perspective, complete record type emission should not
depend on information from other complete record types.

Currently this map is unused, and needlessly accumulates data throughout
compilation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273431 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 16:06:42 +00:00
Xinliang David Li
27717d0f19 [MBFI]: show branch probability in DOT graph
Differential Revision:  http://reviews.llvm.org/D21596


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273430 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 16:04:51 +00:00
Saleem Abdulrasool
126491ead4 llvm-ar: reduce some duplication, NFC
Improve the previous change by using a local function to reduce the duplication
of the object file scanning.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273429 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 15:44:25 +00:00
Artur Pilipenko
b2b7d8b579 Upgrade old memset/memcpy signatures (without isVolatile argument) in tests
We no longer have corresponding code in autoupgrade and the vast majority of the tests were fixed long time ago. Fix the remaining few. One of the verifier test cases is marked as XFAIL because it was passing only because the signature was incorrect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273428 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 15:16:06 +00:00
Artur Pilipenko
5e371d9c0c NFC. Move Verifier::verifyIntrinsicType to Intrinsics.h
Move Verifier::verifyIntrinsicType to Intrinsics::matchIntrinsicsType. Will be used to accumulate overloaded types of a given intrinsic by the upcoming patch to fix intrinsics names when overloaded types are renamed.
    
Reviewed By: reames
    
Differential Revision: http://reviews.llvm.org/D19372


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273424 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 14:56:33 +00:00
Sanjay Patel
0993083d68 [InstSimplify] add ashr tests including vector types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273421 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 14:18:04 +00:00
Simon Pilgrim
bb348ab166 [SLPVectorizer][X86] Added ceil/floor/nearbyint/rint/trunc vectorization tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273420 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 14:07:46 +00:00
Sanjay Patel
525981004f [InstSimplify] regenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273419 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 14:00:16 +00:00
George Rimar
a4c44066ce [llvm-readobj] - Teach llvm-readobj to print dependencies of SHT_GNU_verdef and refactor dumping method.
This patch changes single method of llvm-readobj.
It teaches SHT_GNU_verdef dumper to print version dependencies,
also it removes few fields from output that can be dumped with other keys
and slightly refactors code.
Testcase was also modified to match the changes.
Change is required for testcases of upcoming lld patches.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273417 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 13:43:38 +00:00
Simon Pilgrim
ccfdf6d851 Regenerated test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273404 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 12:58:15 +00:00
Krzysztof Parzyszek
d140aab2ca [SDAG] Remove FixedArgs parameter from CallLoweringInfo::setCallee
The setCallee function will set the number of fixed arguments based
on the size of the argument list. The FixedArgs parameter was often
explicitly set to 0, leading to a lack of consistent value for non-
vararg functions.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273403 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 12:54:25 +00:00
Rafael Espindola
117a36f8b1 Delete more dead code.
Found by gcc 6.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273402 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 12:44:16 +00:00
Davide Italiano
e5ebd46f63 [LTO] Move UpdateCompilerUsed.h from lib/ to include/
I plan to use it in lld soon.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273380 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 04:52:43 +00:00
Craig Topper
8d6ae3340f [X86] Remove GCC builtins from masked integer cmp and ucmp instrinsics so we can emit native IR in clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273376 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 04:47:42 +00:00
Saleem Abdulrasool
d319cd64a4 llvm-ar: be more clever about default format
Try to be more clever about selecting the default format.  When an existing
archive is used, use the type of the archive to determine the format.  When
existing members are present, use the first member's format to determine the
format to use.  If we are creating an empty archive (MRI mode) or are adding
non-object members, default to the current behaviour of using the host type due
to the lack of a better alternative.  This aids in cross-compilation on Darwin
to non-Darwin platforms which rely on GNU format archives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273373 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 04:03:28 +00:00
Peter Zotov
98c9164467 [OCaml] Add functions for accessing metadata nodes.
Patch by Xinyu Zhuang.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273370 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 03:30:24 +00:00
Xinliang David Li
06dbef9677 Add an option to enable MBFI dot viewer for a given function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273366 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 02:12:54 +00:00
Matt Arsenault
2816573cb7 AMDGPU: Fix gcc warnings
Mostly removing dead code. Apparently gcc's warning
for unused functions is better

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273363 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 01:53:49 +00:00
Reid Kleckner
41bcea90ec [codeview] Improve names of types in scopes and member function ids
We now include namespace scope info in LF_FUNC_ID records and we emit
LF_MFUNC_ID records for member functions as we should.

Class names are now fully qualified, which is what MSVC does.

Add a little bit of scaffolding to handle ThisAdjustment when it arrives
in DISubprogram.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273358 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 01:32:56 +00:00
Reid Kleckner
8e1c16dd86 [codeview] Add missing test from r273294
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273355 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 01:17:05 +00:00
Anna Zaks
b523d2b232 [asan] Do not instrument pointers with address space attributes
Do not instrument pointers with address space attributes since we cannot track
them anyway. Instrumenting them results in false positives in ASan and a
compiler crash in TSan. (The compiler should not crash in any case, but that's
a different problem.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273339 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-22 00:15:52 +00:00
Peter Collingbourne
99e2e27b37 IR: Allow metadata attachments on declarations, and fix lazy loaded metadata issue with globals.
This change is motivated by an upcoming change to the metadata representation
used for CFI. The indirect function call checker needs type information for
external function declarations in order to correctly generate jump table
entries for such declarations. We currently associate such type information
with declarations using a global metadata node, but I plan [1] to move all
such metadata to global object attachments.

In bitcode, metadata attachments for function declarations appear in the
global metadata block. This seems reasonable to me because I expect metadata
attachments on declarations to be uncommon. In the long term I'd also expect
this to be the case for CFI, because we'd want to use some specialized bitcode
format for this metadata that could be read as part of the ThinLTO thin-link
phase, which would mean that it would not appear in the global metadata block.

To solve the lazy loaded metadata issue I was seeing with D20147, I use the
same bitcode representation for metadata attachments for global variables as I
do for function declarations. Since there's a use case for metadata attachments
in the global metadata block, we might as well use that representation for
global variables as well, at least until we have a mechanism for lazy loading
global variables.

In the assembly format, the metadata attachments appear after the "declare"
keyword in order to avoid a parsing ambiguity.

[1] http://lists.llvm.org/pipermail/llvm-dev/2016-June/100462.html

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273336 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-21 23:42:48 +00:00
Xinliang David Li
3071cc9727 Clang format change /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273335 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-21 23:36:12 +00:00
Artem Belevich
38ae857b16 [build] Fixed build break for OCaml bindings.
After r273302 LLVM_SYSTEM_LIBS may have entries that already have
-l prefix and we need to deal with that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273333 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-21 23:10:37 +00:00
Matt Arsenault
b24e29e8a8 Make DeadMachineInstructionElim preserve CFG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273330 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-21 23:01:17 +00:00
Haicheng Wu
1fb090e593 [Kryo] Enable loop prefetcher.
Differential Revision: http://reviews.llvm.org/D21535

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273329 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-21 22:47:56 +00:00