platform/upstream/llvm.git
10 years agoAllow per-file clang-tidy options.
Alexander Kornienko [Thu, 5 Jun 2014 13:31:45 +0000 (13:31 +0000)]
Allow per-file clang-tidy options.

Summary:
This patch makes it possible for clang-tidy clients to provide
different options for different translation units. The option, which doesn't
make sense to be file-dependent, was moved to a separate ClangTidyGlobalOptions
struct. Added parsing of ClangTidyOptions.

Reviewers: klimek

Reviewed By: klimek

Subscribers: cfe-commits

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

llvm-svn: 210260

10 years ago[asan] asan_device_setup: extend search path
Evgeniy Stepanov [Thu, 5 Jun 2014 12:49:35 +0000 (12:49 +0000)]
[asan] asan_device_setup: extend search path

In standalone build asan-rt is stored in yet another path.

llvm-svn: 210259

10 years ago[Mips] Make dynlib-dynsym.test self contained.
Simon Atanasyan [Thu, 5 Jun 2014 12:39:12 +0000 (12:39 +0000)]
[Mips] Make dynlib-dynsym.test self contained.

llvm-svn: 210258

10 years ago[asan] Add 'asan' to asan test deps.
Evgeniy Stepanov [Thu, 5 Jun 2014 12:31:22 +0000 (12:31 +0000)]
[asan] Add 'asan' to asan test deps.

This sound like a good idea in general.
Also, without this on Android we get add_lit_testsuite() with empty DEPENDS
list, and it does not work well.

llvm-svn: 210257

10 years ago[asan] Fix lit tests setup on Android.
Evgeniy Stepanov [Thu, 5 Jun 2014 12:29:47 +0000 (12:29 +0000)]
[asan] Fix lit tests setup on Android.

Pass cflags in a way that's compatible with standalone compiler-rt build.

llvm-svn: 210256

10 years ago[asan] Use -pthread instead of -lpthread in tests.
Evgeniy Stepanov [Thu, 5 Jun 2014 12:22:37 +0000 (12:22 +0000)]
[asan] Use -pthread instead of -lpthread in tests.

llvm-svn: 210255

10 years ago[mips] Fix triple.
Matheus Almeida [Thu, 5 Jun 2014 12:07:14 +0000 (12:07 +0000)]
[mips] Fix triple.

Mips2 is a 32-bit architecture.

llvm-svn: 210254

10 years agoFix driver warning about -pthread on Android.
Evgeniy Stepanov [Thu, 5 Jun 2014 11:41:39 +0000 (11:41 +0000)]
Fix driver warning about -pthread on Android.

-pthread is no-op on Android. Suppress the unused argument warning.

llvm-svn: 210253

10 years agoFix driver warning about -shared-libasan on Android.
Evgeniy Stepanov [Thu, 5 Jun 2014 11:14:00 +0000 (11:14 +0000)]
Fix driver warning about -shared-libasan on Android.

Asan runtime library is always shared on Android, and -shared-libasan is no-op.
Suppress the unused argument warning.

llvm-svn: 210252

10 years agoXCore target: Fix 'typestring' binding qualifier to the array and not the type
Robert Lytton [Thu, 5 Jun 2014 09:06:21 +0000 (09:06 +0000)]
XCore target: Fix 'typestring' binding qualifier to the array and not the type

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

llvm-svn: 210250

10 years agolld (build with configur and make) Enable build
Iain Sandoe [Thu, 5 Jun 2014 08:49:55 +0000 (08:49 +0000)]
lld (build with configur and make) Enable build

r210177 added Makefiles to the lld project.
This revision enables the automatic build of lld when the sources are found in tools/lld.

llvm-svn: 210245

10 years agoR600: Fix test. Using wrong check prefix.
Matt Arsenault [Thu, 5 Jun 2014 08:00:36 +0000 (08:00 +0000)]
R600: Fix test. Using wrong check prefix.

llvm-svn: 210244

10 years agoRevert "[PECOFF] Support COMDAT associative sections."
Rui Ueyama [Thu, 5 Jun 2014 07:40:59 +0000 (07:40 +0000)]
Revert "[PECOFF] Support COMDAT associative sections."

This reverts accidental commit r210240.

llvm-svn: 210243

10 years agoAdd SymbolTable::isCoalescedAway
Rui Ueyama [Thu, 5 Jun 2014 07:37:29 +0000 (07:37 +0000)]
Add SymbolTable::isCoalescedAway

isCoalescedAway(x) is faster than replacement(x) != x as the former
does not follow the replacement atom chain. Also it's easier to use.

llvm-svn: 210242

10 years agoPrint error message in LinkOnce handler.
Rui Ueyama [Thu, 5 Jun 2014 07:37:25 +0000 (07:37 +0000)]
Print error message in LinkOnce handler.

Rather than outside of the handler function to make the code simple.

llvm-svn: 210241

10 years ago[PECOFF] Support COMDAT associative sections.
Rui Ueyama [Thu, 5 Jun 2014 07:37:20 +0000 (07:37 +0000)]
[PECOFF] Support COMDAT associative sections.

COFF supports a feature similar to ELF's section groups. This
patch implements it.

In ELF, section groups are identified by their names, and they are
treated somewhat differently from regular symbols. In COFF, the
feature is realized in a more straightforward way. A section can
have an annotation saying "if Nth section is linked, link this
section too."

Implementing such feature is easy. We can add a reference from a
target atom to an original atom, so that if the target is linked,
the original atom is also linked. If not linked, both will be
dead-stripped. So they are treated as a group.

I added a new reference type, kindAssociate. It does nothing except
preventing referenced atoms from being dead-stripped.

No change to the Resolver is needed.

Reviewers: Bigcheese, shankarke, atanasyan

Subscribers: llvm-commits

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

llvm-svn: 210240

10 years agoFix coverage for files with global constructors again. Adds a testcase to the commit...
Nick Lewycky [Thu, 5 Jun 2014 04:31:43 +0000 (04:31 +0000)]
Fix coverage for files with global constructors again. Adds a testcase to the commit from r206671, as requested by David Blaikie.

llvm-svn: 210239

10 years agoChanging this line of code back to the way it was before Alp's config.h clean up...
Puyan Lotfi [Thu, 5 Jun 2014 04:29:21 +0000 (04:29 +0000)]
Changing this line of code back to the way it was before Alp's config.h clean up changes.
I've already spoken to Alp and he signed off on making this one change, so that our buildbots
go green in the short term.

llvm-svn: 210238

10 years agoRevert r210221 again, due to a crash Richard Smith has provided involving self-hostin...
David Blaikie [Thu, 5 Jun 2014 02:04:59 +0000 (02:04 +0000)]
Revert r210221 again, due to a crash Richard Smith has provided involving self-hosting LLVM with libc++.

Test case coming, once I reduce it.

llvm-svn: 210236

10 years agoRemove's uses of sys/timeb.h for Android.
Dan Albert [Thu, 5 Jun 2014 02:00:24 +0000 (02:00 +0000)]
Remove's uses of sys/timeb.h for Android.

Android is removing sys/timeb.h because it was removed in POSIX 2008.

llvm-svn: 210235

10 years agoDebugInfo: Reuse existing LexicalScope to retrieve the scope's MDNode, rather than...
David Blaikie [Thu, 5 Jun 2014 01:30:50 +0000 (01:30 +0000)]
DebugInfo: Reuse existing LexicalScope to retrieve the scope's MDNode, rather than looking it up through the DebugLoc.

No functional change intended, just streamlines the abstract variable
lookup/construction to use a common entry point.

llvm-svn: 210234

10 years agoDebugInfo: Roll argument insertion into variable insertion to ensure arguments are...
David Blaikie [Thu, 5 Jun 2014 01:04:20 +0000 (01:04 +0000)]
DebugInfo: Roll argument insertion into variable insertion to ensure arguments are correctly handled in all cases.

No functional change intended.

llvm-svn: 210233

10 years ago[Deadlock detector] Fix CMake build rules for shared runtime
Alexey Samsonov [Thu, 5 Jun 2014 00:58:28 +0000 (00:58 +0000)]
[Deadlock detector] Fix CMake build rules for shared runtime

llvm-svn: 210232

10 years agoPR19388: DebugInfo: Emit dead arguments in their originally declared order.
David Blaikie [Thu, 5 Jun 2014 00:51:35 +0000 (00:51 +0000)]
PR19388: DebugInfo: Emit dead arguments in their originally declared order.

Unused arguments were not being added to the argument list, but instead
treated as arbitrary scope variables. This meant they weren't carefully
added in the original argument order.

In this particular example, though, it turns out the argument is only
/mostly/ unused (well, actually it's entirely used, but in a specific
way). It's a struct that, due to ABI reasons, is decomposed into chunks
(exactly one chunk, since it has one member) and then passed. Since only
one of those chunks is used (SROA, etc, kill the original reconstitution
code) we don't have a location to describe the whole variable.

In this particular case, since the struct consists of just the one int,
once we have partial location information, this should have a location
that describes the entire variable (since the piece is the entirety of
the object).

And at some point we'll need to describe the location of even /entirely/
unused arguments so that they can at least be printed on function entry.

llvm-svn: 210231

10 years agoBugfix: don't assert if someone manages to declare an operator new/delete template...
Richard Smith [Thu, 5 Jun 2014 00:43:02 +0000 (00:43 +0000)]
Bugfix: don't assert if someone manages to declare an operator new/delete template before the builtin operator new/delete.

llvm-svn: 210230

10 years agoUse AArch64 instead of now removed ARM64 in test configs
Alexey Samsonov [Thu, 5 Jun 2014 00:25:30 +0000 (00:25 +0000)]
Use AArch64 instead of now removed ARM64 in test configs

llvm-svn: 210229

10 years agoDebugInfo: Add comments/assert description to r209674 based on Eric Christopher's...
David Blaikie [Thu, 5 Jun 2014 00:25:26 +0000 (00:25 +0000)]
DebugInfo: Add comments/assert description to r209674 based on Eric Christopher's post-commit review feedback.

llvm-svn: 210228

10 years agoWe've got a getSlotSize call already that we use everywhere else,
Eric Christopher [Thu, 5 Jun 2014 00:22:13 +0000 (00:22 +0000)]
We've got a getSlotSize call already that we use everywhere else,
use it here too.

llvm-svn: 210227

10 years agoR600/SI: Match rsq instructions
Matt Arsenault [Thu, 5 Jun 2014 00:15:55 +0000 (00:15 +0000)]
R600/SI: Match rsq instructions

llvm-svn: 210226

10 years agoFlush C stdio streams upon process termination
Reid Kleckner [Thu, 5 Jun 2014 00:13:43 +0000 (00:13 +0000)]
Flush C stdio streams upon process termination

Due to what can only be described as a CRT bug, stdout and amazingly
even stderr are not always flushed upon process termination, especially
when the system is under high threading pressure.  I have found two
repros for this:

1) In lib\Support\Threading.cpp, change sys::Mutex to an
std::recursive_mutex and run check-clang.  Usually between 30 and 40
tests will fail.

2) Add OutputDebugStrings in code that runs during static initialization
and static shutdown.  This will sometimes generate similar failures.

After a substantial amount of troubleshooting and debugging, I found
that I could reproduce this from the command line without running
check-clang.  Simply make the mutex change described in #1, then
manually run the following command many times by running it once, then
pressing Up -> Enter very quickly:

D:\src\llvm\build\vs2013\Debug\bin\c-index-test.EXE -cursor-at=D:\src\llvm\tools\clang\test\Index\targeted-preamble.h:2:15 D:\src\llvm\tools\clang\test\Index\targeted-cursor.c -include D:\src\llvm\build\vs2013\tools\clang\test\Index\Output\targeted-cursor.c.tmp.h -Xclang -error-on-deserialized-decl=NestedVar1      -Xclang -error-on-deserialized-decl=TopVar    | D:\src\llvm\build\vs2013\Debug\bin\FileCheck.EXE D:\src\llvm\tools\clang\test\Index\targeted-cursor.c -check-prefix=PREAMBLE-CURSOR1

Sporadically they will fail, and attaching a debugger to a failed
instance indicates that stdin of FileCheck.exe is empty.

Note that due to the repro in #2, we can rule out a bug in the STL's
mutex implementation, and instead conclude that this is a real flake in
the windows test harness.

Test Plan:
Without patch: Ran check-clang 10 times and saw over 30 Unexpected failures on every run.
With patch: Ran check-clang 10 times and saw 0 unexpected failures across all runs.

Reviewers: rnk

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

Patch by Zachary Turner!

llvm-svn: 210225

10 years ago80-columns.
Eric Christopher [Thu, 5 Jun 2014 00:09:08 +0000 (00:09 +0000)]
80-columns.

llvm-svn: 210224

10 years agoRemove uses of the TargetMachine from X86FrameLowering.
Eric Christopher [Thu, 5 Jun 2014 00:09:05 +0000 (00:09 +0000)]
Remove uses of the TargetMachine from X86FrameLowering.

llvm-svn: 210223

10 years agoUse nullptr
Matt Arsenault [Thu, 5 Jun 2014 00:01:12 +0000 (00:01 +0000)]
Use nullptr

llvm-svn: 210222

10 years agoDebugInfo: Reapply r209984 (reverted in r210143), asserting that abstract DbgVariable...
David Blaikie [Wed, 4 Jun 2014 23:50:52 +0000 (23:50 +0000)]
DebugInfo: Reapply r209984 (reverted in r210143), asserting that abstract DbgVariables have DIEs.

Abstract variables within abstract scopes that are entirely optimized
away in their first inlining are omitted because their scope is not
present so the variable is never created. Instead, we should ensure the
scope is created so the variable can be added, even if it's been
optimized away in its first inlining.

This fixes the incorrect debug info in missing-abstract-variable.ll
(added in r210143) and passes an asserts self-hosting build, so
hopefully there's not more of these issues left behind... *fingers
crossed*.

llvm-svn: 210221

10 years ago[ubsan] Don't add a --dynamic-list for ubsan symbols when building a shared
Richard Smith [Wed, 4 Jun 2014 23:28:46 +0000 (23:28 +0000)]
[ubsan] Don't add a --dynamic-list for ubsan symbols when building a shared
library. That results in the linker resolving all references to weak symbols in
the DSO to the definition from within that DSO. Ironically, this rarely causes
observable problems, except that it causes ubsan's own dynamic type check to
spuriously fail (because we fail to properly merge type_info object names).

llvm-svn: 210220

10 years agoFormatting cleanup.
Richard Smith [Wed, 4 Jun 2014 23:26:06 +0000 (23:26 +0000)]
Formatting cleanup.

llvm-svn: 210219

10 years agoExplain why we skip DbgInfoIntrinsics when looking at line numbers in .gcno file...
Nick Lewycky [Wed, 4 Jun 2014 21:47:19 +0000 (21:47 +0000)]
Explain why we skip DbgInfoIntrinsics when looking at line numbers in .gcno file emission.

llvm-svn: 210218

10 years agoDon't dynamically initialize dllimport vars (PR19933)
Hans Wennborg [Wed, 4 Jun 2014 21:09:46 +0000 (21:09 +0000)]
Don't dynamically initialize dllimport vars (PR19933)

They should be initialized when they're exported.

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

llvm-svn: 210217

10 years ago[asan] Add install rule for Android runtime
Greg Fitzgerald [Wed, 4 Jun 2014 21:05:01 +0000 (21:05 +0000)]
[asan] Add install rule for Android runtime

llvm-svn: 210216

10 years agoDon't emit structors for available_externally globals (PR19933)
Hans Wennborg [Wed, 4 Jun 2014 21:04:54 +0000 (21:04 +0000)]
Don't emit structors for available_externally globals (PR19933)

We would previously assert here when trying to figure out the section
for the global.

This makes us handle the situation more gracefully since the IR isn't
malformed.

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

llvm-svn: 210215

10 years agoRemove the overload of GetAddrOfConstantString method
Alexey Samsonov [Wed, 4 Jun 2014 20:25:57 +0000 (20:25 +0000)]
Remove the overload of GetAddrOfConstantString method

llvm-svn: 210214

10 years agoMove MemoryRegionInfo out of Target/Process.h into its own header.
Todd Fiala [Wed, 4 Jun 2014 20:13:37 +0000 (20:13 +0000)]
Move MemoryRegionInfo out of Target/Process.h into its own header.

lldb-gdbserver and NativeProcessProtocol will use MemoryRegionInfo
but don't want to pull in Process.h.  Pull this declaration and
definition out into its own header.

llvm-svn: 210213

10 years agoRefactor and generalize GetAddrOfConstantString and GetAddrOfConstantStringFromLiteral.
Alexey Samsonov [Wed, 4 Jun 2014 19:56:57 +0000 (19:56 +0000)]
Refactor and generalize GetAddrOfConstantString and GetAddrOfConstantStringFromLiteral.

Share mode code between these functions and re-structure them in a way
which shows how similar they actually are. The latter function works well
with literals of multi-byte chars and does a GlobalVariable name mangling
(if global strings are non-writable).

No functionality change.

llvm-svn: 210212

10 years agoUse __builtin_operator_new/__builtin_operator_delete when available. This
Richard Smith [Wed, 4 Jun 2014 19:54:15 +0000 (19:54 +0000)]
Use __builtin_operator_new/__builtin_operator_delete when available. This
allows allocations and deallocations to be optimized out.

llvm-svn: 210211

10 years agoHandle partial nanosleeps in this_thread::sleep_for
David Majnemer [Wed, 4 Jun 2014 19:43:20 +0000 (19:43 +0000)]
Handle partial nanosleeps in this_thread::sleep_for

Signals may result in nanosleep returning with only some of the
requested sleeping performed.

Utilize nanosleep's "time-remaining" out parameter to continue sleeping
when this occurs.

llvm-svn: 210210

10 years agoAdjust another test case to not access out of bounds
Tobias Grosser [Wed, 4 Jun 2014 19:41:47 +0000 (19:41 +0000)]
Adjust another test case to not access out of bounds

llvm-svn: 210208

10 years agoThis cast is not necessary any more (llvm api change).
Rafael Espindola [Wed, 4 Jun 2014 19:03:20 +0000 (19:03 +0000)]
This cast is not necessary any more (llvm api change).

llvm-svn: 210206

10 years agoAdd a Constant version of stripPointerCasts.
Rafael Espindola [Wed, 4 Jun 2014 19:01:48 +0000 (19:01 +0000)]
Add a Constant version of stripPointerCasts.

Thanks to rnk for the suggestion.

llvm-svn: 210205

10 years agoUpdate for llvm api change.
Rafael Espindola [Wed, 4 Jun 2014 18:51:46 +0000 (18:51 +0000)]
Update for llvm api change.

llvm-svn: 210204

10 years agoClauses in a landingpad are always Constant. Use a stricter type.
Rafael Espindola [Wed, 4 Jun 2014 18:51:31 +0000 (18:51 +0000)]
Clauses in a landingpad are always Constant. Use a stricter type.

llvm-svn: 210203

10 years ago[dfsan] Fix the declaration of dfsan_add_label.
Peter Collingbourne [Wed, 4 Jun 2014 17:54:51 +0000 (17:54 +0000)]
[dfsan] Fix the declaration of dfsan_add_label.

llvm-svn: 210202

10 years agoTwo small enhancements for the JIT.
Yaron Keren [Wed, 4 Jun 2014 17:35:28 +0000 (17:35 +0000)]
Two small enhancements for the JIT.

When JITting a large project such as Boost it's quite hard to figure out the problematic inline asm without debug location. This patch provides debug location printout before the JIT aborts due to inline asm. printDebugLoc() was exposed from MachineInstr.cpp and reused here.

If the JIT run with debug info, don't bomb on DBG_VALUE but ignore them.

http://reviews.llvm.org/D3416

llvm-svn: 210201

10 years agoXFAIL: test/DebugInfo/missing-abstract-variable.ll on mips and ppc64 due to an inline...
David Blaikie [Wed, 4 Jun 2014 17:05:23 +0000 (17:05 +0000)]
XFAIL: test/DebugInfo/missing-abstract-variable.ll on mips and ppc64 due to an inlined parameter that goes missing.

llvm-svn: 210200

10 years ago[sanitizer] Make LSan/MSan/TSan honor the "color" flag.
Sergey Matveev [Wed, 4 Jun 2014 16:57:03 +0000 (16:57 +0000)]
[sanitizer] Make LSan/MSan/TSan honor the "color" flag.

Based on a patch by Stephan Bergmann.

llvm-svn: 210199

10 years agoMS-ABI: Mangle empty template parameter packs correctly
David Majnemer [Wed, 4 Jun 2014 16:46:32 +0000 (16:46 +0000)]
MS-ABI: Mangle empty template parameter packs correctly

Tested for compatibility with VS2013.

llvm-svn: 210198

10 years agoMS-ABI: Implement user defined literals
David Majnemer [Wed, 4 Jun 2014 16:46:26 +0000 (16:46 +0000)]
MS-ABI: Implement user defined literals

Straightforward implementation of UDLs, it's compatible with VS "14".

This nearly completes our implementation of C++ name mangling for the
MS-ABI.

llvm-svn: 210197

10 years agoAdded gdb-remote $qMemoryRegionInfo tests for heap and stack.
Todd Fiala [Wed, 4 Jun 2014 16:42:12 +0000 (16:42 +0000)]
Added gdb-remote $qMemoryRegionInfo tests for heap and stack.

Added two new tests: one to verify that a test exe heap address
returned is readable and writeable, and a similar one to verify
a test exe stack address is readable and writeable.

Ran the main.cpp test exe code through the Xcode re-indenter.
I was using TextMate to edit the test's C++ code alongside the
Python code but last check-in found that it was not handling
tabs/indentation the way I am intending it.

Modified test exe to require C++11.

Refactored gdb remote python code's handling of memory region
info into more re-usable methods.

llvm-svn: 210196

10 years agoMake meta.trans.other/aligned_storage.pass.cpp pass on arm.
Nico Weber [Wed, 4 Jun 2014 16:25:58 +0000 (16:25 +0000)]
Make meta.trans.other/aligned_storage.pass.cpp pass on arm.

The maximum alignment on arm is 8, not 16 like on x86. Use alignof(max_align_t)
to make the test work in both cases.

llvm-svn: 210195

10 years agotools: fix parenthesis warning from GCC
Saleem Abdulrasool [Wed, 4 Jun 2014 16:03:20 +0000 (16:03 +0000)]
tools: fix parenthesis warning from GCC

Add parenthesis as suggested by GCC.

llvm-svn: 210194

10 years agotools: fix silly typo in llvm-readobj
Saleem Abdulrasool [Wed, 4 Jun 2014 16:03:18 +0000 (16:03 +0000)]
tools: fix silly typo in llvm-readobj

Case insensitive case preserving file systems are not a good choice for
development.

llvm-svn: 210193

10 years agotools: initial implementation of WoA EH decoding
Saleem Abdulrasool [Wed, 4 Jun 2014 15:47:15 +0000 (15:47 +0000)]
tools: initial implementation of WoA EH decoding

Add support to llvm-readobj to decode Windows ARM Exception Handling data.  This
uses the previously added datastructures to decode the information into a format
that can be used by tests.  This is a necessary step to add support for emitting
Windows on ARM exception handling information.

A fair amount of formatting inspiration is drawn from the Win64 EH printer as
well as the ARM EHABI printer.  This allows for a reasonably thorough look into
the encoded data.

llvm-svn: 210192

10 years agotools: introduce StreamWriter::printBoolean
Saleem Abdulrasool [Wed, 4 Jun 2014 15:47:11 +0000 (15:47 +0000)]
tools: introduce StreamWriter::printBoolean

Add a helper print method to print a boolean value as "Yes" or "No".  This is
intended to be used by the Windows ARM EH printer.

llvm-svn: 210191

10 years agoSupport: style/documentation cleanup for format
Saleem Abdulrasool [Wed, 4 Jun 2014 15:47:07 +0000 (15:47 +0000)]
Support: style/documentation cleanup for format

This is purely a documentation/whitespace cleanup for the format support
functions.

The current style does not duplicate the function/class names in the
documentation; conform to this style.

Additionally, there was a large amount of duplication of comments that added no
real value.  Use block comments for the related sets of functions which are used
for type deduction and parameter container classes.

No functional change.

llvm-svn: 210190

10 years agoSupport: add additional comment for ARM EH structure
Saleem Abdulrasool [Wed, 4 Jun 2014 15:47:04 +0000 (15:47 +0000)]
Support: add additional comment for ARM EH structure

Replicate the fact that ARM::WinEH::RuntimeFunction purposefully does not merge
functions to accommodate raw data access use cases in tools such as readobj.
Pointed out by Renato during post-commit review.

No functional change.

llvm-svn: 210189

10 years agoMake locales (and transitively, std::endl) work reliably with gcc.
Nico Weber [Wed, 4 Jun 2014 15:46:56 +0000 (15:46 +0000)]
Make locales (and transitively, std::endl) work reliably with gcc.

libc++ currently relies on undefined initialization order of global
initializers when using gcc:

1. __start_std_streams in iostream.cpp calls locale::id::_init, which assigns
   an id to each locale::facet in an initializer

2. Every facet has a static locale::id id, whose constructor sets the facet's
   id to 0

If 2 runs after 1, it clobbers the facet's assigned consecutive id, causing
exceptions to be thrown when e.g. running code like "cout << endl".

To fix this, let _LIBCPP_CONSTEXPR evaluate to "constexpr" instead of nothing
with gcc.  locale::id's constructor is marked _LIBCPP_CONSTEXPR, which ensures
that it won't get an initializer that could potentially run after the
iostream.cpp initializer. (This remains broken when building with msvc.)

Also switch constexpr-specific code in bitset to use __SIZEOF_SIZE_T__ instead
of __SIZE_WIDTH__, because gcc doesn't define the latter.

Pair-programmed/debugged with Dana Jansens.

llvm-svn: 210188

10 years agoAdd gdb-remote test for $qMemoryRegionInfo code querying.
Todd Fiala [Wed, 4 Jun 2014 15:44:33 +0000 (15:44 +0000)]
Add gdb-remote test for $qMemoryRegionInfo code querying.

Added test stub for collecting a code, heap and stack address.

Added test to verify that the code address returns a readable,
executable memory region and that the memory region range
was indeed the one that the code belonged to.

llvm-svn: 210187

10 years ago InstCombine: Improvement to check if signed addition overflows.
Rafael Espindola [Wed, 4 Jun 2014 15:39:14 +0000 (15:39 +0000)]
 InstCombine: Improvement to check if signed addition overflows.

This patch implements two things:

1. If we know one number is positive and another is negative, we return true as
    signed addition of two opposite signed numbers will never overflow.

2. Implemented TODO : If one of the operands only has one non-zero bit, and if
    the other operand has a known-zero bit in a more significant place than it
    (not including the sign bit) the ripple may go up to and fill the zero, but
    won't change the sign. e.x -  (x & ~4) + 1

We make sure that we are ignoring 0 at MSB.

Patch by Suyog Sarda.

llvm-svn: 210186

10 years agoAdd gdb-remote test to ensure $qMemoryRegionInfo is supported.
Todd Fiala [Wed, 4 Jun 2014 14:48:22 +0000 (14:48 +0000)]
Add gdb-remote test to ensure $qMemoryRegionInfo is supported.

llvm-svn: 210185

10 years ago[OPENMP] Parsing/Sema for OMPLasprivateClause.
Alexander Musman [Wed, 4 Jun 2014 13:06:39 +0000 (13:06 +0000)]
[OPENMP] Parsing/Sema for OMPLasprivateClause.
Parsing this clause, allowing it on directive ‘omp simd’ and semantic checks.

llvm-svn: 210184

10 years agoclang-format: Leave empty lines within UnwrappedLines.
Daniel Jasper [Wed, 4 Jun 2014 12:40:57 +0000 (12:40 +0000)]
clang-format: Leave empty lines within UnwrappedLines.

These are commonly used to structure things like enums or long braced
lists. There doesn't seem to be a good reason to have the behavior in
such structures be different from the behavior between statements.

llvm-svn: 210183

10 years ago[AArch64] clang-format the load/store optimizer.
Tilmann Scheller [Wed, 4 Jun 2014 12:40:35 +0000 (12:40 +0000)]
[AArch64] clang-format the load/store optimizer.

No change in functionality.

llvm-svn: 210182

10 years ago[AArch64] Fix some LLVM Coding Standards violations in the load/store optimizer.
Tilmann Scheller [Wed, 4 Jun 2014 12:36:28 +0000 (12:36 +0000)]
[AArch64] Fix some LLVM Coding Standards violations in the load/store optimizer.

Variable names should start with an upper case letter.

No change in functionality.

llvm-svn: 210181

10 years ago[sancov] Handle fork.
Evgeniy Stepanov [Wed, 4 Jun 2014 12:13:54 +0000 (12:13 +0000)]
[sancov] Handle fork.

Reset coverage data on fork().
For memory-mapped mode (coverage_direct=1) this helps avoid loss of data
(before this change two processes would write to the same file simultaneously).
For normal mode, this reduces coverage dump size, because PCs from the parent
process are no longer inherited by the child.

llvm-svn: 210180

10 years agoAdjust multidim test cases to not access out-of-bound memory
Tobias Grosser [Wed, 4 Jun 2014 11:47:54 +0000 (11:47 +0000)]
Adjust multidim test cases to not access out-of-bound memory

We do this currently only for test cases where we have integer offsets that
clearly access array dimensions out-of-bound.

-;   for (long i = 0; i < n; i++)
-;     for (long j = 0; j < m; j++)
-;       for (long k = 0; k < o; k++)
+;   for (long i = 0; i < n - 3; i++)
+;     for (long j = 4; j < m; j++)
+;       for (long k = 0; k < o - 7; k++)
 ;         A[i+3][j-4][k+7] = 1.0;

This will be helpful if we later want to simplify the access functions under the
assumption that they do not access memory out of bounds.

llvm-svn: 210179

10 years agoFix gcc -Wparentheses warning.
Patrik Hagglund [Wed, 4 Jun 2014 11:21:11 +0000 (11:21 +0000)]
Fix gcc -Wparentheses warning.

llvm-svn: 210178

10 years agoInitial set of Makefiles
Iain Sandoe [Wed, 4 Jun 2014 09:54:07 +0000 (09:54 +0000)]
Initial set of Makefiles

This provides support for the autoconfing & make build style.
The format, style and implementation follows that used within the llvm and clang projects.

TODO: implement out-of-source documentation builds.
llvm-svn: 210177

10 years agowww: Polly can be built without any GPLed software
Tobias Grosser [Wed, 4 Jun 2014 09:26:39 +0000 (09:26 +0000)]
www: Polly can be built without any GPLed software

Thanks to Sebastian Pop and David Peixotto.

llvm-svn: 210176

10 years agoFix a wrong comment.
Rui Ueyama [Wed, 4 Jun 2014 09:09:06 +0000 (09:09 +0000)]
Fix a wrong comment.

Previously FileArchive ctor comment said that only its subclasses
can be instantiated, but the ctor is actually public and is
instantiated by ArchiveReader.

Remove the wrong comment and reorder the member functions so that
public members appear before private ones.

llvm-svn: 210175

10 years agoAdd a comment, fix style.
Rui Ueyama [Wed, 4 Jun 2014 09:00:55 +0000 (09:00 +0000)]
Add a comment, fix style.

llvm-svn: 210174

10 years agoclang-tidy: Make use-override tests stricter.
Daniel Jasper [Wed, 4 Jun 2014 08:47:25 +0000 (08:47 +0000)]
clang-tidy: Make use-override tests stricter.

As per post review comment.

llvm-svn: 210173

10 years agoFix format.
Rui Ueyama [Wed, 4 Jun 2014 08:39:56 +0000 (08:39 +0000)]
Fix format.

llvm-svn: 210172

10 years agoclang-tidy use override: Don't generate incorrect warnings without fixes
Daniel Jasper [Wed, 4 Jun 2014 08:26:02 +0000 (08:26 +0000)]
clang-tidy use override: Don't generate incorrect warnings without fixes

Add basic testing for the emitted diagnostics.

llvm-svn: 210171

10 years agoUse range-based for loops
Tobias Grosser [Wed, 4 Jun 2014 08:06:40 +0000 (08:06 +0000)]
Use range-based for loops

llvm-svn: 210170

10 years ago[OPENMP] Small comment and reformatting fixes.
Alexander Musman [Wed, 4 Jun 2014 07:53:32 +0000 (07:53 +0000)]
[OPENMP] Small comment and reformatting fixes.

Fix post-commit review comments by Carlo Bertolli
for commit r209660 - OMP collapse clause.

Re-formatted TransformOMP* functions in TreeTransform.h with clang-format.

llvm-svn: 210169

10 years agoFix a use of uninitialized value. OldCC is set when IsCmpZero || IsSwapped and read...
Nick Lewycky [Wed, 4 Jun 2014 07:45:54 +0000 (07:45 +0000)]
Fix a use of uninitialized value. OldCC is set when IsCmpZero || IsSwapped and read when ShouldUpdateCC || IsSwapped, and ShouldUpdateCC is independent. Fixes PR19932, but no test since I wasn't able to get any symptoms to appear, not even with valgrind and the testcase from the PR. It's clear what happened from inspection of the code.

llvm-svn: 210168

10 years agoAdd a subtarget hook: enablePostMachineScheduler.
Andrew Trick [Wed, 4 Jun 2014 07:06:27 +0000 (07:06 +0000)]
Add a subtarget hook: enablePostMachineScheduler.

As requested by AArch64 subtargets.

Note that this will have no effect until the
AArch64 target actually enables the pass like this:
substitutePass(&PostRASchedulerID, &PostMachineSchedulerID);

As soon as armv7 switches over, PostMachineScheduler will become the
default postRA scheduler, so this won't be necessary any more.
Targets using the old postRA schedule would then do:
substitutePass(&PostMachineSchedulerID, &PostRASchedulerID);

llvm-svn: 210167

10 years agoMove GenericScheduler and PostGenericScheduler into a header.
Andrew Trick [Wed, 4 Jun 2014 07:06:18 +0000 (07:06 +0000)]
Move GenericScheduler and PostGenericScheduler into a header.

These were not exposed previously because I didn't want out-of-tree
targets to be too dependent on their internals. They can be reused for
a very wide variety of processors with casual scheduling needs without
exposing the classes by instead using hooks defined in
MachineSchedPolicy (we can add more if needed). When targets are more
aggressively tuned or want to provide custom heuristics, they can
define their own MachineSchedStrategy. I tend to think this is better
once you start customizing heuristics because you can copy over only
what you need. I don't think that layering heuristics generally works
well.

However, Arch64 targets now want to reuse the Generic scheduling logic
but also provide extensions. I don't see much harm in exposing the
Generic scheduling classes with a major caveat: these scheduling
strategies may change in the future without validating performance on
less mainstream processors. If you want to be immune from changes,
just define your own MachineSchedStrategy.

llvm-svn: 210166

10 years agodocs: Remove documentation for legacy PGO options
Justin Bogner [Wed, 4 Jun 2014 06:29:38 +0000 (06:29 +0000)]
docs: Remove documentation for legacy PGO options

Late last year r191835 removed a largely unmaintained legacy PGO
infrastructure, but some of the docs were missed. Since these docs are
for things that don't actually exist anymore, they should be removed.

llvm-svn: 210165

10 years ago[Object][ELF] Range-based loop simplification.
Simon Atanasyan [Wed, 4 Jun 2014 05:51:44 +0000 (05:51 +0000)]
[Object][ELF] Range-based loop simplification.

No functional changes.

llvm-svn: 210164

10 years agoFix a couple minor typos in $qMemoryRegionInfo packet docs.
Todd Fiala [Wed, 4 Jun 2014 05:07:40 +0000 (05:07 +0000)]
Fix a couple minor typos in $qMemoryRegionInfo packet docs.

llvm-svn: 210163

10 years agoAdd a note about debug mode being non-functional
Marshall Clow [Wed, 4 Jun 2014 04:49:49 +0000 (04:49 +0000)]
Add a note about debug mode being non-functional

llvm-svn: 210162

10 years agoGraphWriter: try gv before xdg-open
Alp Toker [Wed, 4 Jun 2014 04:11:12 +0000 (04:11 +0000)]
GraphWriter: try gv before xdg-open

Avoid changing behaviour for everyone who's used to the traditional ghostview
UI, especially since it knows how to stay in the foreground unlike xdg-open.

Amendment to r210147.

llvm-svn: 210148

10 years agoGraphWriter: support the XDG open utility
Alp Toker [Wed, 4 Jun 2014 03:57:44 +0000 (03:57 +0000)]
GraphWriter: support the XDG open utility

This runs a suitable viewer on Unix desktop environments specified by
Freedesktop.org (GNOME, KDE, Linux distributions etc.)

llvm-svn: 210147

10 years agoRemove inclusions of LLVM's private config.h
Alp Toker [Wed, 4 Jun 2014 03:34:26 +0000 (03:34 +0000)]
Remove inclusions of LLVM's private config.h

llvm-svn: 210146

10 years agoRemove the last remaining llvm/Config/config.h includes
Alp Toker [Wed, 4 Jun 2014 03:28:55 +0000 (03:28 +0000)]
Remove the last remaining llvm/Config/config.h includes

This corrects long-standing misuses of LLVM's internal config.h.

In most cases the public llvm-config.h header was intended and we can now
remove the old hacks thanks to LLVM r210144.

The config.h header is private, won't be installed and should no longer be
included by clang or other modules.

llvm-svn: 210145

10 years agoconfig.h: fix layering and don't duplicate definitions
Alp Toker [Wed, 4 Jun 2014 03:21:38 +0000 (03:21 +0000)]
config.h: fix layering and don't duplicate definitions

Also correct the llvm-config.h header guard so it doesn't depend on 'CONFIG_H'
which is commonly defined in external projects and caused trouble for
embedders.

In future llvm/Config/llvm-config.h will be installed, but not
the private llvm/Config/config.h header.

llvm-svn: 210144

10 years agoDebugInfo: Partial revert r209984 due to more cases where abstract DbgVariables do...
David Blaikie [Wed, 4 Jun 2014 01:30:59 +0000 (01:30 +0000)]
DebugInfo: Partial revert r209984 due to more cases where abstract DbgVariables do not have associated DIEs.

Along with a test case to demonstrate that due to inlining order there
are cases where abstract variable DIEs are not constructed since the
abstract subprogram was built due to a previous inlining that optimized
away those variables. This produces incorrect debug info (the 'missing'
abstract variable causes the inlined instance of that variable to be
emitted with a full description (name, line, file) rather than
referencing the abstract origin), but this commit at least ensures that
it doesn't crash...

llvm-svn: 210143

10 years ago[mach-o] Make anonymous atom out of section content before any symbol
Nick Kledzik [Wed, 4 Jun 2014 00:34:27 +0000 (00:34 +0000)]
[mach-o] Make anonymous atom out of section content before any symbol

In sections that are broken into atoms at symbols, if the first symbol in the
section is not at the start of the section, then make an anonymous atom for
the section content that is before the first symbol.

llvm-svn: 210142

10 years agoDowngrade "definition of dllimport static field" error to warning for class templates...
Hans Wennborg [Wed, 4 Jun 2014 00:18:41 +0000 (00:18 +0000)]
Downgrade "definition of dllimport static field" error to warning for class templates (PR19902)

This allows us to compile the following kind of code, which occurs in MSVC
headers:

  template <typename> struct S {
    __declspec(dllimport) static int x;
  };
  template <typename T> int S<T>::x;

The definition works similarly to a dllimport inline function definition and
gets available_externally linkage.

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

llvm-svn: 210141

10 years agoDisable unstable test on ARM
Greg Fitzgerald [Wed, 4 Jun 2014 00:06:41 +0000 (00:06 +0000)]
Disable unstable test on ARM

llvm-svn: 210140