platform/upstream/llvm.git
8 years agoObjC: add getter/setter for class properties to global pool.
Manman Ren [Wed, 23 Mar 2016 21:39:31 +0000 (21:39 +0000)]
ObjC: add getter/setter for class properties to global pool.

rdar://problem/25323072

llvm-svn: 264196

8 years ago[sanitizer] Add strnlen to the common interceptors
Derek Bruening [Wed, 23 Mar 2016 21:24:28 +0000 (21:24 +0000)]
[sanitizer] Add strnlen to the common interceptors

Summary:
Adds strnlen to the common interceptors, under the existing flag
intercept_strlen.

Removes the now-duplicate strnlen interceptor from asan and msan.
This adds strnlen to tsan, which previously did not intercept it.

Adds a new test of strnlen to the sanitizer_common test cases.

Reviewers: samsonov

Subscribers: zhaoqin, llvm-commits, kcc

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

llvm-svn: 264195

8 years agoMore more change need as part of r264187 where ErrorOr<> was added
Kevin Enderby [Wed, 23 Mar 2016 21:20:16 +0000 (21:20 +0000)]
More more change need as part of r264187 where ErrorOr<> was added
to getSymbolType().

llvm-svn: 264194

8 years agoELF: Split BitcodeCompiler::compile.
Rui Ueyama [Wed, 23 Mar 2016 21:19:27 +0000 (21:19 +0000)]
ELF: Split BitcodeCompiler::compile.

http://reviews.llvm.org/D18410

llvm-svn: 264193

8 years agoFix logic for which symbols to keep with comdats.
Rafael Espindola [Wed, 23 Mar 2016 21:16:33 +0000 (21:16 +0000)]
Fix logic for which symbols to keep with comdats.

If a comdat is dropped, all symbols in it are dropped.
If a comdat is kept, the symbols survive to pass regular symbol
resolution.
With this patch we do that for all global symbols.

The added test is a copy of test/tools/gold/X86/comdat.ll that we now
pass.

llvm-svn: 264192

8 years agoGuard a number of tests relying on threads support when built in
Richard Barton [Wed, 23 Mar 2016 21:04:11 +0000 (21:04 +0000)]
Guard a number of tests relying on threads support when built in
single-threaded mode.

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

llvm-svn: 264191

8 years ago[asan] Export new and delete operators on Windows
Reid Kleckner [Wed, 23 Mar 2016 20:45:52 +0000 (20:45 +0000)]
[asan] Export new and delete operators on Windows

This is necessary to support the dynamic CRT (/MD) with VS2015. In
VS2015, these symbols are no longer imported from a DLL, they provided
statically by msvcrt.lib. This means our approach of hotpatching the DLL
no longer works.

By exporting the symbols, we end up relying on the same mechanism that
we use to intercept symbols in the static CRT (/MT) case. The ASan
runtime always needs to appear first on the link line, and the linker
searches for symbol definitions from left to right. This means we can
stop hotpatching operator new and delete in the CRT, which is nice.

I think that the only reason we weren't exporting the symbols already is
because MSVC doesn't allow you to do it directly with
__declspec(dllexport). Instead, we can use
`#pragma comment(linker, "/export:foo")`, which is most of what the
attribute does under the hood. It does mean we have to write down the
mangled names of the operators, but that's not too bad.

llvm-svn: 264190

8 years agoMake SemaAccess smarter about determining when a dependent class might
Richard Smith [Wed, 23 Mar 2016 20:39:06 +0000 (20:39 +0000)]
Make SemaAccess smarter about determining when a dependent class might
instantiate to match a friend class declaration. It's still pretty dumb,
though.

llvm-svn: 264189

8 years agoAdd the needed lld change for r264187 in llvm.
Kevin Enderby [Wed, 23 Mar 2016 20:37:23 +0000 (20:37 +0000)]
Add the needed lld change for r264187 in llvm.

Sorry had this fixed in my check out but failed mention it in my
commit message for r264187.

llvm-svn: 264188

8 years agoFix a crash in running llvm-objdump -t with an invalid Mach-O file already
Kevin Enderby [Wed, 23 Mar 2016 20:27:00 +0000 (20:27 +0000)]
Fix a crash in running llvm-objdump -t with an invalid Mach-O file already
in the test suite. While this is not really an interesting tool and option to run
on a Mach-O file to show the symbol table in a generic libObject format
it shouldn’t crash.

The reason for the crash was in MachOObjectFile::getSymbolType() when it was
calling MachOObjectFile::getSymbolSection() without checking its return value
for the error case.

What makes this fix require a fair bit of diffs is that the method getSymbolType() is
in the class ObjectFile defined without an ErrorOr<> so I needed to add that all
the sub classes.  And all of the uses needed to be updated and the return value
needed to be checked for the error case.

The MachOObjectFile version of getSymbolType() “can” get an error in trying to
come up with the libObject’s internal SymbolRef::Type when the Mach-O symbol
symbol type is an N_SECT type because the code is trying to select from the
SymbolRef::ST_Data or SymbolRef::ST_Function values for the SymbolRef::Type.
And it needs the Mach-O section to use isData() and isBSS to determine if
it will return SymbolRef::ST_Data.

One other possible fix I considered is to simply return SymbolRef::ST_Other
when MachOObjectFile::getSymbolSection() returned an error.  But since in
the past when I did such changes that “ate an error in the libObject code” I
was asked instead to push the error out of the libObject code I chose not
to implement the fix this way.

As currently written both the COFF and ELF versions of getSymbolType()
can’t get an error.  But if isReservedSectionNumber() wanted to check for
the two known negative values rather than allowing all negative values or
the code wanted to add the same check as in getSymbolAddress() to use
getSection() and check for the error then these versions of getSymbolType()
could return errors.

At the end of the day the error printed now is the generic “Invalid data was
encountered while parsing the file” for object_error::parse_failed.  In the
future when we thread Lang’s new TypedError for recoverable error handling
though libObject this will improve.  And where the added // Diagnostic(…
comment is, it would be changed to produce and error message
like “bad section index (42) for symbol at index 8” for this case.

llvm-svn: 264187

8 years ago[x86] make peekThroughBitcasts() a helper function
Sanjay Patel [Wed, 23 Mar 2016 20:16:37 +0000 (20:16 +0000)]
[x86] make peekThroughBitcasts() a helper function

This should be hoisted further up so it can be used in DAGCombiner and other backends,
but I'm limiting the scope in the interest of patch minimalism.

It's not quite NFC because some of the replaced code was using an 'if' check rather
than a 'while' loop, so those cases would only look through a single bitcast.

llvm-svn: 264186

8 years ago[AArch64] Replace return 0 with return false. NFC.
Chad Rosier [Wed, 23 Mar 2016 20:07:28 +0000 (20:07 +0000)]
[AArch64] Replace return 0 with return false. NFC.

llvm-svn: 264185

8 years agoMake sure to perform dependent access checks when instantiating a
Richard Smith [Wed, 23 Mar 2016 20:07:07 +0000 (20:07 +0000)]
Make sure to perform dependent access checks when instantiating a
lambda-expression. We don't actually instantiate the closure type / operator()
in the template in order to produce the closure type / operator() in the
instantiation, so this isn't caught by the normal path.

llvm-svn: 264184

8 years agoCodegen: [PPC] Word Rotates are Zero Extending.
Kyle Butt [Wed, 23 Mar 2016 19:51:22 +0000 (19:51 +0000)]
Codegen: [PPC] Word Rotates are Zero Extending.

Add Word rotates to the list of instructions that are zero extending.
This allows them to be used in dot form to compare with zero.

llvm-svn: 264183

8 years agoclang-cl: Fix remaining bugs in interaction of /Yc and /FI /showIncludes.
Nico Weber [Wed, 23 Mar 2016 18:46:57 +0000 (18:46 +0000)]
clang-cl: Fix remaining bugs in interaction of /Yc and /FI /showIncludes.

Instead of putting the /Yc header into ExtraDeps, give DependencyOutputOptions
a dedicated field for /Yc mode, and let HeaderIncludesCallback hang on to the
full DependencyOutputOptions object, not just ExtraDeps.

Reverts parts of r263352 that are now no longer needed.

llvm-svn: 264182

8 years ago[LTO] Keep linkonce symbols when required.
Davide Italiano [Wed, 23 Mar 2016 18:41:48 +0000 (18:41 +0000)]
[LTO] Keep linkonce symbols when required.

Similarly to how we do with linkonce_odr symbols already, but
change their linkage to weak.

llvm-svn: 264181

8 years agoFix bugs in the MemorySSA walker.
George Burgess IV [Wed, 23 Mar 2016 18:31:55 +0000 (18:31 +0000)]
Fix bugs in the MemorySSA walker.

There are a few bugs in the walker that this patch addresses.
Primarily:
- Caching can break when we have multiple BBs without phis
- We weren't optimizing some phis properly
- Because of how the DFS iterator works, there were times where we
  wouldn't cache any results of our DFS

I left the test cases with FIXMEs in, because I'm not sure how much
effort it will take to get those to work (read: We'll probably
ultimately have to end up redoing the walker, or we'll have to come up
with some creative caching tricks), and more test coverage = better.

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

llvm-svn: 264180

8 years agoAdd getBlockProfileCount method to BlockFrequencyInfo
Easwaran Raman [Wed, 23 Mar 2016 18:18:26 +0000 (18:18 +0000)]
Add getBlockProfileCount method to BlockFrequencyInfo

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

llvm-svn: 264179

8 years agoclang-cl: Add more tests for the interaction of /FI and /Yc /Yu.
Nico Weber [Wed, 23 Mar 2016 18:17:02 +0000 (18:17 +0000)]
clang-cl: Add more tests for the interaction of /FI and /Yc /Yu.

Most things even work; see the included FIXMEs for things that need polishing.

Also don't warn about unused flags for the `/Yuh2.h /FIh1.h /FIh2.h`.  The
common case is that the pch was built with `/Ych2.h /FIh1.h /FIh2.h`, so h1.h
is in the PCH, and we shouldn't warn about /FIh1.h not having an effect.
(If we wanted to get fancy, we could store the list of -include flags in the
pch and then check that it matches later on.)

llvm-svn: 264178

8 years agoSelectionDAG: Remove a tautological dyn_cast. NFC
Justin Bogner [Wed, 23 Mar 2016 18:15:33 +0000 (18:15 +0000)]
SelectionDAG: Remove a tautological dyn_cast. NFC

Index is already a StoreSDNode, so this dyn_cast doesn't do anything.

llvm-svn: 264177

8 years ago[LTO/Tests] Fix typo. Visibility -> Linkage. Pointy-hat to me.
Davide Italiano [Wed, 23 Mar 2016 18:15:06 +0000 (18:15 +0000)]
[LTO/Tests] Fix typo. Visibility -> Linkage. Pointy-hat to me.

llvm-svn: 264176

8 years ago[LTO/tests] Check optimized bitcode instead of produced shared library.
Davide Italiano [Wed, 23 Mar 2016 18:13:32 +0000 (18:13 +0000)]
[LTO/tests] Check optimized bitcode instead of produced shared library.

As requested by Rafael.

llvm-svn: 264175

8 years agoclang-cl: Include /FI headers in /showIncludes output.
Nico Weber [Wed, 23 Mar 2016 18:00:22 +0000 (18:00 +0000)]
clang-cl: Include /FI headers in /showIncludes output.

-H in gcc mode doesn't print -include headers, but they are included in
depfiles written by MMD and friends. Since /showIncludes is what's used instead
of depfiles, printing /FI there seems important (and matches cl.exe).

Instead of giving HeaderIncludeGen more options, just switch on ShowAllHeaders
in clang-cl mode and let clang::InitializePreprocessor() not put -include flags
in the <command line> block. This changes the behavior of -E slightly, and it
removes the <command line> flag from the output triggered by setting the
obscure CC_PRINT_HEADERS=1 env var to true while running clang. Both of these
seem ok to change.

http://reviews.llvm.org/D18401

llvm-svn: 264174

8 years agoImplement ObjectFilePECOFF::GetEntryPointAddress.
Stephane Sezer [Wed, 23 Mar 2016 18:00:13 +0000 (18:00 +0000)]
Implement ObjectFilePECOFF::GetEntryPointAddress.

Reviewers: zturner, clayborg

Subscribers: lldb-commits

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

llvm-svn: 264173

8 years agoCopy MachO struct to temporary to avoid unaligned load UB.
Pete Cooper [Wed, 23 Mar 2016 18:00:10 +0000 (18:00 +0000)]
Copy MachO struct to temporary to avoid unaligned load UB.

We were already copying this data to a temporary for endian swaps.  Now
we just always copy it, but still only do the endian swaps when needed.

llvm-svn: 264172

8 years ago[LTO] Only change linkage if we keep the symbol.
Davide Italiano [Wed, 23 Mar 2016 17:59:07 +0000 (17:59 +0000)]
[LTO] Only change linkage if we keep the symbol.

llvm-svn: 264171

8 years ago[NFC] Delete an unused function parameter from a static function
Faisal Vali [Wed, 23 Mar 2016 17:39:51 +0000 (17:39 +0000)]
[NFC] Delete an unused function parameter from a static function

llvm-svn: 264170

8 years agoVisualize fields of records as they were declared in Visual Studio debugger
Mike Spertus [Wed, 23 Mar 2016 17:29:42 +0000 (17:29 +0000)]
Visualize fields of records as they were declared in Visual Studio debugger

llvm-svn: 264169

8 years agoFollow-up for r264162 to fix the CMake build (update LLDBDependencies.cmake).
Kuba Brecka [Wed, 23 Mar 2016 16:54:23 +0000 (16:54 +0000)]
Follow-up for r264162 to fix the CMake build (update LLDBDependencies.cmake).

llvm-svn: 264168

8 years agoObjC: Handle boolean fixed type for enum.
Manman Ren [Wed, 23 Mar 2016 16:28:28 +0000 (16:28 +0000)]
ObjC: Handle boolean fixed type for enum.

Before this commit, we assert failure in ImplicitCastExpr
"unheralded conversion to bool". This commit fixes the assertion by using
the correct cast type when the fixed type is boolean.

This commit also fixes the behavior for Microsoft mode as well, since
Obj-C and Microsoft mode share the same code path.

rdar://24999533

llvm-svn: 264167

8 years agoFix Visual Studio builds
Jonathan Peyton [Wed, 23 Mar 2016 16:27:25 +0000 (16:27 +0000)]
Fix Visual Studio builds

Have Visual Studio use MemoryBarrier() instead of _mm_mfence() and remove
__declspec align attribute from function parameters in kmp_atomic.h

llvm-svn: 264166

8 years agoReplace a string comparison in ARMSubtarget.h with a tablegen entry in ARM.td (NFC)
Artyom Skrobov [Wed, 23 Mar 2016 16:18:13 +0000 (16:18 +0000)]
Replace a string comparison in ARMSubtarget.h with a tablegen entry in ARM.td (NFC)

Reviewers: rengolin, t.p.northover

Subscribers: aemerson, llvm-commits, rengolin

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

llvm-svn: 264165

8 years ago[analyzer] Fix typo s/initalize/initialize/
Chih-Hung Hsieh [Wed, 23 Mar 2016 16:14:12 +0000 (16:14 +0000)]
[analyzer] Fix typo s/initalize/initialize/

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

llvm-svn: 264164

8 years agoclang-cl: Don't warn about /Oy- being unused in 64-bit builds.
Nico Weber [Wed, 23 Mar 2016 15:37:41 +0000 (15:37 +0000)]
clang-cl: Don't warn about /Oy- being unused in 64-bit builds.

http://reviews.llvm.org/D18392

llvm-svn: 264163

8 years agoAdd ThreadSanitizer debugging support.
Kuba Brecka [Wed, 23 Mar 2016 15:36:22 +0000 (15:36 +0000)]
Add ThreadSanitizer debugging support.

This patch adds ThreadSanitizer support into LLDB:
- Adding a new InstrumentationRuntime plugin, ThreadSanitizerRuntime, in the same way ASan is implemented.
- A breakpoint stops in `__tsan_on_report`, then we extract all sorts of information by evaluating an expression. We then populate this into StopReasonExtendedInfo.
- SBThread gets a new API, SBThread::GetStopReasonExtendedBacktraces(), which returns TSan’s backtraces in the form of regular SBThreads. Non-TSan stop reasons return an empty collection.
- Added some test cases.

Reviewed by Greg Clayton.

llvm-svn: 264162

8 years ago[SCEV] Change the SCEV Predicates interfaces for conversion to AddRecExpr to return...
Silviu Baranga [Wed, 23 Mar 2016 15:29:30 +0000 (15:29 +0000)]
[SCEV] Change the SCEV Predicates interfaces for conversion to AddRecExpr to return SCEVAddRecExpr* instead of SCEV*

Summary:
This changes the conversion functions from SCEV * to SCEVAddRecExpr from
ScalarEvolution and PredicatedScalarEvolution to return a SCEVAddRecExpr*
instead of a SCEV* (which removes the need of most clients to do a
dyn_cast right after calling these functions).

We also don't add new predicates if the transformation was not successful.

This is not entirely a NFC (as it can theoretically remove some predicates
from LAA when we have an unknown dependece), but I couldn't find an obvious
regression test for it.

Reviewers: sanjoy

Subscribers: sanjoy, mzolotukhin, llvm-commits

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

llvm-svn: 264161

8 years agoNot every x86 relocation is relative.
Rafael Espindola [Wed, 23 Mar 2016 14:58:25 +0000 (14:58 +0000)]
Not every x86 relocation is relative.

Without this predicate we were not producing R_386_RELATIVE relocations.

llvm-svn: 264160

8 years agoUse an enum instead of hardcoded indices. NFC.
Alexander Kornienko [Wed, 23 Mar 2016 14:28:52 +0000 (14:28 +0000)]
Use an enum instead of hardcoded indices. NFC.

llvm-svn: 264158

8 years ago[X86] Regenerated WidenArith test
Simon Pilgrim [Wed, 23 Mar 2016 14:00:28 +0000 (14:00 +0000)]
[X86] Regenerated WidenArith test

llvm-svn: 264157

8 years ago[AArch64] Replace some uses of report_fatal_error with reportError in AArch64 ELF...
Oliver Stannard [Wed, 23 Mar 2016 13:45:03 +0000 (13:45 +0000)]
[AArch64] Replace some uses of report_fatal_error with reportError in AArch64 ELF object writer

If we can't handle a relocation type, report it as an error in the source,
rather than asserting. I've added a more descriptive message and a test for the
only cases of this that I've been able to trigger.

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

llvm-svn: 264156

8 years agoCombine identical check-prefixes in Clang test/Preprocessor/arm-target-features.c
Artyom Skrobov [Wed, 23 Mar 2016 13:32:33 +0000 (13:32 +0000)]
Combine identical check-prefixes in Clang test/Preprocessor/arm-target-features.c

Reviewers: rengolin, t.p.northover

Subscribers: aemerson, cfe-commits, rengolin

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

llvm-svn: 264155

8 years agoDrop explicit -polly-delinearize parameter
Tobias Grosser [Wed, 23 Mar 2016 13:21:02 +0000 (13:21 +0000)]
Drop explicit -polly-delinearize parameter

Delinearization is now enabled by default and does not need to explicitly need
to be enabled in our tests.

llvm-svn: 264154

8 years ago[cmake] fix libgo-llgo paths in install target
Andrew Wilkins [Wed, 23 Mar 2016 12:39:21 +0000 (12:39 +0000)]
[cmake] fix libgo-llgo paths in install target

llvm-svn: 264153

8 years agoRevert "[tsan] Disable randomized address space on linux aarch64."
Renato Golin [Wed, 23 Mar 2016 11:24:30 +0000 (11:24 +0000)]
Revert "[tsan] Disable randomized address space on linux aarch64."

This reverts commits r264068 and r264079, and they were breaking the build and
weren't reverted in time, nor they exhibited expected behaviour from the
reviewers. There is more to discuss than just a test fix.

llvm-svn: 264150

8 years ago[X86] Add "x87" in x86 target feature map.
Andrey Turetskiy [Wed, 23 Mar 2016 11:15:10 +0000 (11:15 +0000)]
[X86] Add "x87" in x86 target feature map.

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

llvm-svn: 264149

8 years ago[X86] Introduction of FeatureX87.
Andrey Turetskiy [Wed, 23 Mar 2016 11:13:54 +0000 (11:13 +0000)]
[X86] Introduction of FeatureX87.

Add FeatureX87 in X86 backend to be able to define CPUs which doesn't have x87.

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

llvm-svn: 264148

8 years ago[mips][microMIPS] Delay slot filler modifications
Hrvoje Varga [Wed, 23 Mar 2016 10:29:38 +0000 (10:29 +0000)]
[mips][microMIPS] Delay slot filler modifications
Differential Revision: http://reviews.llvm.org/D18181

llvm-svn: 264147

8 years agoAdd check for unneeded copies of locals
Haojian Wu [Wed, 23 Mar 2016 09:33:07 +0000 (09:33 +0000)]
Add check for unneeded copies of locals

Summary: Extends the UnnecessaryCopyInitialization to detect copies of local variables and parameters that are unneeded.

Patch by Matt Kulukundis!

Reviewers: alexfh, hokein

Subscribers: cfe-commits

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

llvm-svn: 264146

8 years ago[ELF][MIPS] Add comment with MIPS GOT relocations handling description. NFC.
Simon Atanasyan [Wed, 23 Mar 2016 09:28:02 +0000 (09:28 +0000)]
[ELF][MIPS] Add comment with MIPS GOT relocations handling description. NFC.

llvm-svn: 264145

8 years agowww: Drop one more </div>
Tobias Grosser [Wed, 23 Mar 2016 09:27:41 +0000 (09:27 +0000)]
www: Drop one more </div>

llvm-svn: 264144

8 years agowww: Drop polyhedral news reference.
Tobias Grosser [Wed, 23 Mar 2016 09:26:39 +0000 (09:26 +0000)]
www: Drop polyhedral news reference.

The feed2html service used has been unavailable a couple of times and always
causes the polly website to fail to load correctly.

llvm-svn: 264143

8 years agoCodegen:Do not invalidate dominator tree when bailing out during code generation
Tobias Grosser [Wed, 23 Mar 2016 06:57:51 +0000 (06:57 +0000)]
Codegen:Do not invalidate dominator tree when bailing out during code generation

When codegenerating invariant loads in some rare cases we cannot generate code
and bail out. This change ensures that we maintain a valid dominator tree
in these situations. This fixes llvm.org/PR26736

Contributed-by: Matthias Reisinger <d412vv1n@gmail.com>
llvm-svn: 264142

8 years agoFAQ: Remove the entire Build Problems section
Justin Bogner [Wed, 23 Mar 2016 06:54:42 +0000 (06:54 +0000)]
FAQ: Remove the entire Build Problems section

This is all horribly outdated, and is mostly about the autoconf build
system that doesn't even exist anymore. These questions aren't
frequent, and these answers aren't useful.

llvm-svn: 264141

8 years agoAdd option to disallow modref function calls in scops.
Tobias Grosser [Wed, 23 Mar 2016 06:40:15 +0000 (06:40 +0000)]
Add option to disallow modref function calls in scops.

This might be useful to evaluate the benefit of us handling modref funciton
calls. Also, a new bug that was triggered by modref function calls was
recently reported http://llvm.org/PR27035. To ensure the same issue does not
cause troubles for other people, we temporarily disable this until the bug
is resolved.

llvm-svn: 264140

8 years agoFAQ: We require GCC 4.7 - nobody's asking about build failures with 3.3.2
Justin Bogner [Wed, 23 Mar 2016 06:38:53 +0000 (06:38 +0000)]
FAQ: We require GCC 4.7 - nobody's asking about build failures with 3.3.2

llvm-svn: 264139

8 years ago[docs] Fix typo in ProgrammersManual.rst
Vedant Kumar [Wed, 23 Mar 2016 05:18:50 +0000 (05:18 +0000)]
[docs] Fix typo in ProgrammersManual.rst

Patch by Miod Vallat!

llvm-svn: 264138

8 years ago[AMDGPU] Fix missing assembler predicates.
Valery Pykhtin [Wed, 23 Mar 2016 04:27:26 +0000 (04:27 +0000)]
[AMDGPU] Fix missing assembler predicates.

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

llvm-svn: 264137

8 years ago[Tests] Remove the correct files.
Davide Italiano [Wed, 23 Mar 2016 03:20:46 +0000 (03:20 +0000)]
[Tests] Remove the correct files.

llvm-svn: 264136

8 years ago[Docs] Clarify boolean conversion for Error and Expected<T> in the Programmer's
Lang Hames [Wed, 23 Mar 2016 03:18:16 +0000 (03:18 +0000)]
[Docs] Clarify boolean conversion for Error and Expected<T> in the Programmer's
Manual.

llvm-svn: 264135

8 years ago[LTO] Remove dead code.
Davide Italiano [Wed, 23 Mar 2016 02:45:53 +0000 (02:45 +0000)]
[LTO] Remove dead code.

llvm-svn: 264133

8 years ago[Sema] Allow implicit conversions of &overloaded_fn in C.
George Burgess IV [Wed, 23 Mar 2016 02:33:58 +0000 (02:33 +0000)]
[Sema] Allow implicit conversions of &overloaded_fn in C.

Also includes a minor ``enable_if`` docs update.

Currently, our address-of overload machinery will only allow implicit
conversions of overloaded functions to void* in C. For example:

```
void f(int) __attribute__((overloadable));
void f(double) __attribute__((overloadable, enable_if(0, "")));

void *fp = f; // OK. This is C and the target is void*.
void (*fp2)(void) = f; // Error. This is C, but the target isn't void*.
```

This patch makes the assignment of `fp2` select the `f(int)` overload,
rather than emitting an error (N.B. you'll still get a warning about the
`fp2` assignment if you use -Wincompatible-pointer-types).

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

llvm-svn: 264132

8 years agoRemove stale comment
Sanjoy Das [Wed, 23 Mar 2016 02:28:35 +0000 (02:28 +0000)]
Remove stale comment

llvm-svn: 264131

8 years ago[StatepointLowering] Don't do two DenseMap lookups; nfci
Sanjoy Das [Wed, 23 Mar 2016 02:24:15 +0000 (02:24 +0000)]
[StatepointLowering] Don't do two DenseMap lookups; nfci

llvm-svn: 264130

8 years ago[StatepointLowering] Minor NFC cleanups
Sanjoy Das [Wed, 23 Mar 2016 02:24:13 +0000 (02:24 +0000)]
[StatepointLowering] Minor NFC cleanups

 - Use auto
 - Name variables in LLVM style
 - Use llvm::find instead of std::find
 - Blank lines between declarations

llvm-svn: 264129

8 years ago[StatepointLowering] Minor nfc refactoring
Sanjoy Das [Wed, 23 Mar 2016 02:24:10 +0000 (02:24 +0000)]
[StatepointLowering] Minor nfc refactoring

Now that StatepointLoweringInfo represents base pointers, derived
pointers and gc relocates as SmallVectors and not ArrayRefs, we no
longer need to allocate "backing storage" on stack in LowerStatepoint.
So elide the backing storage, and inline the trivial body of
getIncomingStatepointGCValues.

llvm-svn: 264128

8 years ago[StatepointLowering] Schedule gc relocates before uniqueing them
Sanjoy Das [Wed, 23 Mar 2016 02:24:07 +0000 (02:24 +0000)]
[StatepointLowering] Schedule gc relocates before uniqueing them

Otherwise we can see an "unexpected" gc.relocate that we uniqued away.

llvm-svn: 264127

8 years agoAMDGPU: Cache information about register pressure sets
Tom Stellard [Wed, 23 Mar 2016 01:53:22 +0000 (01:53 +0000)]
AMDGPU: Cache information about register pressure sets

We can statically decide whether or not a register pressure set is for
SGPRs or VGPRs, so we don't need to re-compute this information in
SIRegisterInfo::getRegPressureSetLimit().

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

llvm-svn: 264126

8 years ago[Apple Clang] Expose llvm-config from stage2 builds in stage1
Chris Bieneman [Wed, 23 Mar 2016 01:47:05 +0000 (01:47 +0000)]
[Apple Clang] Expose llvm-config from stage2 builds in stage1

This exposes the stage2-llvm-config target though the stage1 build configuration.

llvm-svn: 264125

8 years agoMinor code cleanup. NFC.
Junmo Park [Wed, 23 Mar 2016 01:38:35 +0000 (01:38 +0000)]
Minor code cleanup. NFC.

llvm-svn: 264124

8 years agoChange 'apropos' such that it doesn't look into the "long help/syntax" strings for...
Enrico Granata [Wed, 23 Mar 2016 01:21:55 +0000 (01:21 +0000)]
Change 'apropos' such that it doesn't look into the "long help/syntax" strings for commands

This solves issues such as 'apropos foo' returning valid matches just because syntax examples happen to use 'foo' as a placeholder token

Fixes rdar://9043025

llvm-svn: 264123

8 years ago[ModuleUtils] Use range-based loop. NFC.
Davide Italiano [Wed, 23 Mar 2016 00:43:35 +0000 (00:43 +0000)]
[ModuleUtils] Use range-based loop. NFC.

llvm-svn: 264122

8 years ago[docs] Use reST link.
Sean Silva [Wed, 23 Mar 2016 00:31:21 +0000 (00:31 +0000)]
[docs] Use reST link.

llvm-svn: 264121

8 years agoBring back Makefile.sphinx
Sean Silva [Wed, 23 Mar 2016 00:30:57 +0000 (00:30 +0000)]
Bring back Makefile.sphinx

It is not part of autoconf and should not have been removed in r258861.

llvm-svn: 264120

8 years ago[docs] Clarify the sense of --compile-command
Sean Silva [Wed, 23 Mar 2016 00:25:13 +0000 (00:25 +0000)]
[docs] Clarify the sense of --compile-command

In retrospect, it seems "obvious" that the sense of the return code is
the same as if it crashed on "interesting" inputs. But that didn't stop
me from spending more time than I care to admit verifying this.

llvm-svn: 264119

8 years ago[ScopInfo] Fix domains after loops.
Michael Kruse [Tue, 22 Mar 2016 23:27:42 +0000 (23:27 +0000)]
[ScopInfo] Fix domains after loops.

ISL can conclude additional conditions on parameters from restrictions
on loop variables. Such conditions persist when leaving the loop and the
loop variable is projected out. This results in a narrower domain for
exiting the loop than entering it and is logically impossible for
non-infinite loops.

We fix this by not adding a lower bound i>=0 when constructing BB
domains, but defer it to when also the upper bound it computed, which
was done redundantly even before this patch.

This reduces the number of LNT fails with -polly-process-unprofitable
-polly-position=before-vectorizer from 8 to 6.

llvm-svn: 264118

8 years agoTidy up this test a bit.
Sean Silva [Tue, 22 Mar 2016 23:19:40 +0000 (23:19 +0000)]
Tidy up this test a bit.

llvm-svn: 264117

8 years agoMove empty atom check to target independent code. NFC.
Pete Cooper [Tue, 22 Mar 2016 23:07:34 +0000 (23:07 +0000)]
Move empty atom check to target independent code.  NFC.

Turns out that checking only x86 for empty atoms to fix UBSan then
requires the same code in the other targets too.  Better to just
check this in the main run loop instead of in each target.

Should be NFC, other than fixing UBSan failures.

llvm-svn: 264116

8 years agoAvoid memcpy from nullptr. NFC.
Pete Cooper [Tue, 22 Mar 2016 22:59:35 +0000 (22:59 +0000)]
Avoid memcpy from nullptr.  NFC.

This was caught by the UBSan bot.  When the atom has no size, we would
issue a memcpy with size0 and a nullptr for the source.

Also, this code should never have references inside an empty atom so
add an assert for that while we're here.

llvm-svn: 264115

8 years agoDon't memcpy from a null source. Found by UBSan
Pete Cooper [Tue, 22 Mar 2016 22:51:03 +0000 (22:51 +0000)]
Don't memcpy from a null source.  Found by UBSan

llvm-svn: 264114

8 years agoReverted a change in r264074 that made lldb-mi use lldb_private APIs.
Sean Callanan [Tue, 22 Mar 2016 22:42:42 +0000 (22:42 +0000)]
Reverted a change in r264074 that made lldb-mi use lldb_private APIs.

FileSystem::Fopen is a lldb_private API, but lldb-mi uses only the
public API.  Depending on lldb_private APIs makes Xcode builds fail.
I reverted the portion of r264074 that added such a dependency.

llvm-svn: 264113

8 years agoTest commit to verify repository access and fix a typo.
Derek Bruening [Tue, 22 Mar 2016 22:32:03 +0000 (22:32 +0000)]
Test commit to verify repository access and fix a typo.

llvm-svn: 264112

8 years ago[LTO] Keep linkonce_odr symbols when appropriate.
Davide Italiano [Tue, 22 Mar 2016 22:31:34 +0000 (22:31 +0000)]
[LTO] Keep linkonce_odr symbols when appropriate.

Ensure we keep the symbol we need to before it reaches
the Writer (and hit an assertion), changing its linkage
from linkonce_odr to weak. For a more detailed description
of the problem, see PR19901 where a similar problem was
fixed for the gold plugin. Thanks to Rafael for providing
a testcase.

llvm-svn: 264111

8 years agoTypo
Joerg Sonnenberger [Tue, 22 Mar 2016 22:24:52 +0000 (22:24 +0000)]
Typo

llvm-svn: 264110

8 years agoMC: Don't access the filesystem in MCContext's constructor
Justin Bogner [Tue, 22 Mar 2016 22:24:29 +0000 (22:24 +0000)]
MC: Don't access the filesystem in MCContext's constructor

MCContext shouldn't be accessing the filesystem - that's a gross
layering violation and makes it awkward to use as a library or in a
daemon where it may not even be allowed filesystem access.

The CWD lookup here is normally redundant anyway, since the calling
context either also looks up the CWD or sets this to something more
specific. Here, we fix up the one caller that doesn't already set up a
debug compilation dir and make it clear that the responsibility for
such set up is in the users of MCContext.

llvm-svn: 264109

8 years agoMake it so that a command alias can actually remove the help/long help from its paren...
Enrico Granata [Tue, 22 Mar 2016 22:12:59 +0000 (22:12 +0000)]
Make it so that a command alias can actually remove the help/long help from its parent command by setting itself to an empty help string

llvm-svn: 264108

8 years ago[NVVM] Remove noduplicate attribute from synchronizing intrinsics.
Justin Lebar [Tue, 22 Mar 2016 22:08:01 +0000 (22:08 +0000)]
[NVVM] Remove noduplicate attribute from synchronizing intrinsics.

Summary:
I've completed my audit of all the code that looks at noduplicate and
added handling of convergent where appropriate, so we no longer need
noduplicate on these intrinsics.

Reviewers: jholewinski

Subscribers: llvm-commits, jholewinski

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

llvm-svn: 264107

8 years ago[CUDA] Don't allow templated variadic functions.
Justin Lebar [Tue, 22 Mar 2016 22:06:19 +0000 (22:06 +0000)]
[CUDA] Don't allow templated variadic functions.

Reviewers: tra

Subscribers: cfe-commits

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

llvm-svn: 264106

8 years agoInvalidate scop on encountering a complex control flow
Tobias Grosser [Tue, 22 Mar 2016 22:05:32 +0000 (22:05 +0000)]
Invalidate scop on encountering a complex control flow

We bail out if current scop has a complex control flow as this could lead to
building of large domain conditions. This is to reduce compile time.  This
addresses r26382.

Contributed-by: Chris Jenneisch <chrisj@codeaurora.org>
Differential Revision: http://reviews.llvm.org/D18362

llvm-svn: 264105

8 years ago[lldb-mi] Uncomment a line in CMakeLists.txt to make linux build happy.
Siva Chandra [Tue, 22 Mar 2016 21:37:56 +0000 (21:37 +0000)]
[lldb-mi] Uncomment a line in CMakeLists.txt to make linux build happy.

Reviewers: zturner

Subscribers: lldb-commits

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

llvm-svn: 264104

8 years agoDrop comdats from the dst module if they are not selected.
Rafael Espindola [Tue, 22 Mar 2016 21:35:47 +0000 (21:35 +0000)]
Drop comdats from the dst module if they are not selected.

A really unfortunate design of llvm-link and related libraries is that
they operate one module at a time.

This means they can copy a GV to the destination module that should not
be there in the final result because a later bitcode file takes
precedence.

We already handled cases like a strong GV replacing a weak for example.

One case that is not currently handled is a comdat replacing another.
This doesn't happen in ELF, but with COFF largest selection kind it is
possible.

In "llvm-link a.ll b.ll" if the selected comdat was from a.ll,
everything will work and we will not copy the comdat from b.ll.

But if we run "llvm-link b.ll a.ll", we fail to delete the already
copied comdat from b.ll. This patch fixes that.

llvm-svn: 264103

8 years agoKeep CodeGenPrepare from preserving the domtree.
George Burgess IV [Tue, 22 Mar 2016 21:25:08 +0000 (21:25 +0000)]
Keep CodeGenPrepare from preserving the domtree.

CGP modifies the domtree in some cases, so saying that it preserves the
domtree is a lie. We'll be able to selectively preserve it with the new
pass manager.

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

llvm-svn: 264099

8 years agoUpdate cxx-features test to C++1z
JF Bastien [Tue, 22 Mar 2016 21:12:48 +0000 (21:12 +0000)]
Update cxx-features test to C++1z

Forked from the following patch:
  http://reviews.llvm.org/D17950

llvm-svn: 264098

8 years agoFix operator= on OwningAtomPtr to call destructor when needed.
Pete Cooper [Tue, 22 Mar 2016 21:08:39 +0000 (21:08 +0000)]
Fix operator= on OwningAtomPtr to call destructor when needed.

If the LHS of 'a = b' already had an atom in it then we wouldn't
call the destructor.  This happens when we use something like
std::remove_if which is done in the CompactUnwindPass.  Should fix
the leaks on the mach-o/unwind-info-simple-x86_64.yaml test case.

Lang and I are going to take a look at removing OwningAtomPtr in
favour of a std::unique_ptr but just trying to get the bots green
so we have a good baseline first.

llvm-svn: 264097

8 years agoFix a bug caused by my alias refactoring where, if an alias was defined in terms...
Enrico Granata [Tue, 22 Mar 2016 21:07:54 +0000 (21:07 +0000)]
Fix a bug caused by my alias refactoring where, if an alias was defined in terms of another alias, trying to run the nested command would actually cause a crash in the command interpreter

llvm-svn: 264096

8 years agoBackend support for top-level Clang epxressions
Sean Callanan [Tue, 22 Mar 2016 21:05:51 +0000 (21:05 +0000)]
Backend support for top-level Clang epxressions

This patch adds a new ExecutionPolicy, eExecutionPolicyTopLevel, which
tells the expression parser that the expression should be JITted as top
level code but nothing (except static initializers) should be run.  I
have modified the Clang expression parser to recognize this execution
policy.  On top of the existing patches that support storing IR and
maintaining a map of arbitrary Decls, this is mainly just patching up a
few places in the expression parser.

I intend to submit a patch for review that exposes this functionality
through the "expression" command and through the SB API.  That patch
also includes a testcase for all of this.

<rdar://problem/22864976>

llvm-svn: 264095

8 years agoMark SymbolBody::getSymbol as `const`.
Sean Silva [Tue, 22 Mar 2016 21:04:03 +0000 (21:04 +0000)]
Mark SymbolBody::getSymbol as `const`.

llvm-svn: 264094

8 years agoWe do not use libLTO, so fix the error.
Rui Ueyama [Tue, 22 Mar 2016 20:58:15 +0000 (20:58 +0000)]
We do not use libLTO, so fix the error.

llvm-svn: 264093

8 years agoD18325: Added mm_malloc module export.
John Thompson [Tue, 22 Mar 2016 20:57:51 +0000 (20:57 +0000)]
D18325: Added mm_malloc module export.

llvm-svn: 264092

8 years agoELF: Create LTO.{cpp,h} and move LTO-related code to that file.
Rui Ueyama [Tue, 22 Mar 2016 20:52:10 +0000 (20:52 +0000)]
ELF: Create LTO.{cpp,h} and move LTO-related code to that file.

The code for LTO has been growing, so now is probably a good time to
move it to its own file. SymbolTable.cpp is for symbol table, and
because compiling bitcode files are semantically not a part of
symbol table, this is I think a good thing to do.

http://reviews.llvm.org/D18370

llvm-svn: 264091

8 years ago[lto] Provide a file name for the combined LTO object.
Sean Silva [Tue, 22 Mar 2016 20:25:32 +0000 (20:25 +0000)]
[lto] Provide a file name for the combined LTO object.

Otherwise, we get diagnostics like:

    undefined symbol: foo in

Which isn't particularly useful.

llvm-svn: 264089