platform/upstream/llvm.git
9 years ago[opaque pointer type] Bitcode support for explicit type parameter on GEP.
David Blaikie [Wed, 25 Feb 2015 01:08:52 +0000 (01:08 +0000)]
[opaque pointer type] Bitcode support for explicit type parameter on GEP.

Like r230414, add bitcode support including backwards compatibility, for
an explicit type parameter to GEP.

At the suggestion of Duncan I tried coalescing the two older bitcodes into a
single new bitcode, though I did hit a wrinkle: I couldn't figure out how to
create an explicit abbreviation for a record with a variable number of
arguments (the indicies to the gep). This means the discriminator between
inbounds and non-inbounds gep is a full variable-length field I believe? Is my
understanding correct? Is there a way to create such an abbreviation? Should I
just use two bitcodes as before?

Reviewers: dexonsmith

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

llvm-svn: 230415

9 years ago[opaque pointer type] bitcode support for explicit type parameter to the load instruction
David Blaikie [Wed, 25 Feb 2015 01:07:20 +0000 (01:07 +0000)]
[opaque pointer type] bitcode support for explicit type parameter to the load instruction

Summary:
I've taken my best guess at this, but I've cargo culted in places & so
explanations/corrections would be great.

This seems to pass all the tests (check-all, covering clang and llvm) so I
believe that pretty well exercises both the backwards compatibility and common
(same version) compatibility given the number of checked in bitcode files we
already have. Is that a reasonable approach to testing here? Would some more
explicit tests be desired?

1) is this the right way to do back-compat in this case (looking at the number
  of entries in the bitcode record to disambiguate between the old schema and
  the new?)

2) I don't quite understand the logarithm logic to choose the encoding type of
  the type parameter in the abbreviation description, but I found another
  instruction doing the same thing & it seems to work. Is that the right
  approach?

Reviewers: dexonsmith

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

llvm-svn: 230414

9 years ago[PowerPC] Add support for the QPX vector instruction set
Hal Finkel [Wed, 25 Feb 2015 01:06:45 +0000 (01:06 +0000)]
[PowerPC] Add support for the QPX vector instruction set

This adds support for the QPX vector instruction set, which is used by the
enhanced A2 cores on the IBM BG/Q supercomputers. QPX vectors are 256 bytes
wide, holding 4 double-precision floating-point values. Boolean values, modeled
here as <4 x i1> are actually also represented as floating-point values
(essentially  { -1, 1 } for { false, true }). QPX shares many features with
Altivec and VSX, but is distinct from both of them. One major difference is
that, instead of adding completely-separate vector registers, QPX vector
registers are extensions of the scalar floating-point registers (lane 0 is the
corresponding scalar floating-point value). The operations supported on QPX
vectors mirrors that supported on the scalar floating-point values (with some
additional ones for permutations and logical/comparison operations).

I've been maintaining this support out-of-tree, as part of the bgclang project,
for several years. This is not the entire bgclang patch set, but is most of the
subset that can be cleanly integrated into LLVM proper at this time. Adding
this to the LLVM backend is part of my efforts to rebase bgclang to the current
LLVM trunk, but is independently useful (especially for codes that use LLVM as
a JIT in library form).

The assembler/disassembler test coverage is complete. The CodeGen test coverage
is not, but I've included some tests, and more will be added as follow-up work.

llvm-svn: 230413

9 years ago[modules] Fix a bug that would result in a build with P paths through a module
Richard Smith [Wed, 25 Feb 2015 00:56:02 +0000 (00:56 +0000)]
[modules] Fix a bug that would result in a build with P paths through a module
graph with M modules to take O(P) time, not just O(M) time, when using explicit
module builds.

llvm-svn: 230412

9 years agoSupport SHF_MERGE sections in COMDATs.
Rafael Espindola [Wed, 25 Feb 2015 00:52:15 +0000 (00:52 +0000)]
Support SHF_MERGE sections in COMDATs.

This patch unifies the comdat and non-comdat code paths. By doing this
it add missing features to the comdat side and removes the fixed
section assumptions from the non-comdat side.

In ELF there is no one true section for "4 byte mergeable" constants.
We are better off computing the required properties of the section
and asking the context for it.

llvm-svn: 230411

9 years agoBitcodeWriter: Refactor common computation of bits required for a type index.
David Blaikie [Wed, 25 Feb 2015 00:51:52 +0000 (00:51 +0000)]
BitcodeWriter: Refactor common computation of bits required for a type index.

Suggested by Duncan. Happy to bikeshed the name, cache the result, etc.

llvm-svn: 230410

9 years ago[asan] add suppressions for odr violations
Kostya Serebryany [Wed, 25 Feb 2015 00:49:12 +0000 (00:49 +0000)]
[asan] add suppressions for odr violations

llvm-svn: 230409

9 years agoIf you try to auto-complete "target symbols<TAB>" you get "target symbolsadd" instead...
Greg Clayton [Wed, 25 Feb 2015 00:32:43 +0000 (00:32 +0000)]
If you try to auto-complete "target symbols<TAB>" you get "target symbolsadd" instead of "target symbols ".

Fix this by returning the fact that the "symbols" word is complete if there is nothing else to complete after the "symbols" word.

<rdar://problem/19164599>

llvm-svn: 230408

9 years agoFix consistently wrong sphinx markup
Philip Reames [Wed, 25 Feb 2015 00:22:07 +0000 (00:22 +0000)]
Fix consistently wrong sphinx markup

I'd been using '' where I should have been using ``.

llvm-svn: 230407

9 years agoRevert r230314, "Fix codegen for virtual methods that are (re-) exported from multipl...
NAKAMURA Takumi [Wed, 25 Feb 2015 00:18:22 +0000 (00:18 +0000)]
Revert r230314, "Fix codegen for virtual methods that are (re-) exported from multiple modules."

It crashes for targeting (i686|x86_64)-win32.

  clang: clang/lib/AST/VTableBuilder.cpp:142: {anonymous}::FinalOverriders::OverriderInfo {anonymous}::FinalOverriders::getOverrider(const clang::CXXMethodDecl*, clang::CharUnits) const: Assertion `OverridersMap.count(std::make_pair(MD, BaseOffset)) && "Did not find overrider!"' failed.

llvm-svn: 230406

9 years agoUpdate the GC docs to explicitly mention both gcroot and gc.statepoint
Philip Reames [Wed, 25 Feb 2015 00:18:04 +0000 (00:18 +0000)]
Update the GC docs to explicitly mention both gcroot and gc.statepoint

Also, fix confusing bit of the gcroot documentation that bit me personally.

llvm-svn: 230405

9 years agoMake this test even more OS and register allocation neutral.
Eric Christopher [Wed, 25 Feb 2015 00:12:11 +0000 (00:12 +0000)]
Make this test even more OS and register allocation neutral.

llvm-svn: 230404

9 years ago[GC] Sync documentation with code naming
Philip Reames [Tue, 24 Feb 2015 23:57:26 +0000 (23:57 +0000)]
[GC] Sync documentation with code naming

Fixing an issue pointed out by Sean Silva.  Thanks!

llvm-svn: 230403

9 years agoMore GC documentation cleanup
Philip Reames [Tue, 24 Feb 2015 23:51:37 +0000 (23:51 +0000)]
More GC documentation cleanup

llvm-svn: 230402

9 years agoFixed Xcode project after recent changes:
Greg Clayton [Tue, 24 Feb 2015 23:50:21 +0000 (23:50 +0000)]
Fixed Xcode project after recent changes:

"After recent changes, some code has become redundant. This revision tries to remove
the un-used code and tidy up the rest.

Following 4 files have been removed. I have updated CMake files and checked that it builds
fine on Linux and Windows. Can somebody update the xcode related file accordingly?

tools/lldb-mi/MICmnStreamStdinLinux.cpp
tools/lldb-mi/MICmnStreamStdinLinux.h
tools/lldb-mi/MICmnStreamStdinWindows.cpp
tools/lldb-mi/MICmnStreamStdinWindows.h"

llvm-svn: 230401

9 years agoMake this test not dependent upon the triple. All that was needed
Eric Christopher [Tue, 24 Feb 2015 23:43:26 +0000 (23:43 +0000)]
Make this test not dependent upon the triple. All that was needed
was some flexibility in the check line for the comment basic block.

llvm-svn: 230400

9 years ago[CMake] Clean up lldb-mi CMakeLists.txt.
Zachary Turner [Tue, 24 Feb 2015 23:36:12 +0000 (23:36 +0000)]
[CMake] Clean up lldb-mi CMakeLists.txt.

It was maintaining two huge file lists that are identical except
for 1 file.  Make this work the proper way.

llvm-svn: 230398

9 years agoMore GC doc cleanup
Philip Reames [Tue, 24 Feb 2015 23:34:24 +0000 (23:34 +0000)]
More GC doc cleanup

Mostly minor wording changes for readability.  Nothing major to see here.

llvm-svn: 230397

9 years ago[CMake] Set policy CMP0051 to OLD globally.
Zachary Turner [Tue, 24 Feb 2015 23:32:47 +0000 (23:32 +0000)]
[CMake] Set policy CMP0051 to OLD globally.

When you use generator expressions in a library sources list,
and then later access the SOURCES property, the OLD behavior
(CMake 3.0 and earlier) would not include these expressions in
the SOURCES property.  The NEW behavior (starting in CMake 3.1)
is that they do include the generator expressions in the SOURCES
property.

Differential Revision: http://reviews.llvm.org/D7870
Reviewed By: Chris Bieneman

llvm-svn: 230396

9 years agoclang-format: Change location of stashed token
Jacques Pienaar [Tue, 24 Feb 2015 23:23:24 +0000 (23:23 +0000)]
clang-format: Change location of stashed token

Commit of patch in http://reviews.llvm.org/D7871

llvm-svn: 230395

9 years agoLowerBitSets: Introduce global layout builder.
Peter Collingbourne [Tue, 24 Feb 2015 23:17:02 +0000 (23:17 +0000)]
LowerBitSets: Introduce global layout builder.

The builder is based on a layout algorithm that tries to keep members of
small bit sets together. The new layout compresses Chromium's bit sets to
around 15% of their original size.

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

llvm-svn: 230394

9 years agoImprove the getting started instructions in the GC docs
Philip Reames [Tue, 24 Feb 2015 23:12:27 +0000 (23:12 +0000)]
Improve the getting started instructions in the GC docs

This is still gcroot vs gc.statepoint agnostic.  I'm just trying to clarify the general documentation at this point.

llvm-svn: 230393

9 years agoPrologEpilogInserter: Clean up math in calculateFrameObjectOffsets
David Majnemer [Tue, 24 Feb 2015 23:08:13 +0000 (23:08 +0000)]
PrologEpilogInserter: Clean up math in calculateFrameObjectOffsets

There is no need to open-code the alignment calculation, we have a
handy RoundUpToAlignment function which "Does The Right Thing (TM)".

llvm-svn: 230392

9 years agoremove function names from comments; NFC
Sanjay Patel [Tue, 24 Feb 2015 22:43:06 +0000 (22:43 +0000)]
remove function names from comments; NFC

llvm-svn: 230391

9 years agoFix qLaunchGDBServer packet parsing in GDBRemoteCommunicationServerPlatform.
Oleksiy Vyalov [Tue, 24 Feb 2015 22:23:39 +0000 (22:23 +0000)]
Fix qLaunchGDBServer packet parsing in GDBRemoteCommunicationServerPlatform.

llvm-svn: 230390

9 years agoResubmit "[CMake] Change lldbAPI to be a CMake OBJECT library."
Zachary Turner [Tue, 24 Feb 2015 22:17:57 +0000 (22:17 +0000)]
Resubmit "[CMake] Change lldbAPI to be a CMake OBJECT library."

This resubmits r230380.  The primary cause of the failure was
actually just a warning, which we can disable at the CMake level
in a followup patch on the LLVM side.  The other thing which was
actually an error on the bot should be able to be fixed with
a clean.

llvm-svn: 230389

9 years agoReapplied D7816 & rL230177 & rL230278 - with an additional fix toensure that the...
Simon Pilgrim [Tue, 24 Feb 2015 22:08:56 +0000 (22:08 +0000)]
Reapplied D7816 & rL230177 & rL230278 - with an additional fix toensure that the smallest build vector input scalar type is always used. Additional (crash) test cases already committed.

llvm-svn: 230388

9 years agoInstrProf: Simplify a couple of tests after r230383
Justin Bogner [Tue, 24 Feb 2015 21:49:28 +0000 (21:49 +0000)]
InstrProf: Simplify a couple of tests after r230383

Most of the checks in these two tests were actually testing the
behaviour of the instrprof LLVM pass. Now that we're testing that
specifically in LLVM's test suite, it's better if we only test the
frontend's behaviour here.

llvm-svn: 230387

9 years agoAdded test case for PR22678 (check CONCAT_VECTORS DAG combiner pass doesn't introduce...
Simon Pilgrim [Tue, 24 Feb 2015 21:46:23 +0000 (21:46 +0000)]
Added test case for PR22678 (check CONCAT_VECTORS DAG combiner pass doesn't introduce illegal types)

llvm-svn: 230386

9 years agoCUDA: Add option to allow host device functions to call host functions
Jacques Pienaar [Tue, 24 Feb 2015 21:45:33 +0000 (21:45 +0000)]
CUDA: Add option to allow host device functions to call host functions

Commiting code from review http://reviews.llvm.org/D7841

llvm-svn: 230385

9 years agoPR22673 again: diagnose use of the used decl, not the found decl. This is also
Richard Smith [Tue, 24 Feb 2015 21:44:43 +0000 (21:44 +0000)]
PR22673 again: diagnose use of the used decl, not the found decl. This is also
wrong (DiagnoseUseOfDecl should take both), but it's more consistent with what
we do in other places.

llvm-svn: 230384

9 years agoInstrProf: Test for appropriate linkage of the profiling structures
Justin Bogner [Tue, 24 Feb 2015 21:42:42 +0000 (21:42 +0000)]
InstrProf: Test for appropriate linkage of the profiling structures

This test checks that the symbols instrprof creates have appropriate
linkage. The tests already exist in clang in a slightly different form
from before we sunk profile generation into an LLVM pass, but that's
an awkward place for them now. I'll remove/simplify the clang versions
shortly.

llvm-svn: 230383

9 years agoRevert "[CMake] Change lldbAPI to be a CMake OBJECT library."
Zachary Turner [Tue, 24 Feb 2015 21:28:01 +0000 (21:28 +0000)]
Revert "[CMake] Change lldbAPI to be a CMake OBJECT library."

This reverts commit r230380.  It causes CMake to fail on certain
machines with an error about needing to use string(STRIP_GENEX).

llvm-svn: 230382

9 years agoPR22673: Don't forget to check a constructor for deletedness when we use it to
Richard Smith [Tue, 24 Feb 2015 21:16:19 +0000 (21:16 +0000)]
PR22673: Don't forget to check a constructor for deletedness when we use it to
implicitly construct a temporary in a reference binding.

llvm-svn: 230381

9 years ago[CMake] Change lldbAPI to be a CMake OBJECT library.
Zachary Turner [Tue, 24 Feb 2015 20:58:39 +0000 (20:58 +0000)]
[CMake] Change lldbAPI to be a CMake OBJECT library.

An OBJECT library is a special type of CMake library that produces
no archive, has no link interface, and no link inputs.  It is like
a regular archive, just without the physical output.  To link
against an OBJECT library, you reference it in the *source* file
list of a library using the special syntax $<TARGET_OBJECTS:lldbAPI>.
This will cause every object file to be passed to the linker
independently, as opposed to a single archive being passed to the
linker.

This is *extremely* important on Windows.  lldbAPI exports all of the
SB classes using __declspec(dllexport).  Unfortunately for technical
reasons it is not possible (well, extremely difficult) to get the
linker to propagate a __declspec(dllexport) attribute from a symbol
in an object file in an archive to a DLL that links against that
archive.  The solution to this is for the DLL to link the object files
directly.  So lldbAPI must be an OBJECT library.

This fixes an issue that has been present since the duplicated
lldbAPI file lists were removed, which would cause linker failures.

As a side effect, this also makes LLDB_DISABLE_PYTHON=1 work again
on Windows, which was previously totally broken.

llvm-svn: 230380

9 years ago[CMake] Don't automatically copy python27.dll.
Zachary Turner [Tue, 24 Feb 2015 20:58:24 +0000 (20:58 +0000)]
[CMake] Don't automatically copy python27.dll.

This is generating problems when you have built both debug and
release python.  For now I just want to get CMake to work, I
will work on a more robust fix later.  In the meantime you may
need to copy python27(_d).dll manually to ninja\bin after
building.

llvm-svn: 230379

9 years agoFixing eol-style
Andrew Kaylor [Tue, 24 Feb 2015 20:49:35 +0000 (20:49 +0000)]
Fixing eol-style

llvm-svn: 230378

9 years agoAdd test that we reject invocations of deleted constructors. One of these
Richard Smith [Tue, 24 Feb 2015 20:41:36 +0000 (20:41 +0000)]
Add test that we reject invocations of deleted constructors. One of these
constructs is not rejected by should be; that's PR22673.

llvm-svn: 230370

9 years agoReleaseNotes: add notes about VS2014 Update 4 requirement
Hans Wennborg [Tue, 24 Feb 2015 20:36:40 +0000 (20:36 +0000)]
ReleaseNotes: add notes about VS2014 Update 4 requirement

llvm-svn: 230363

9 years agoMS extensions: Properly diagnose address of MS property decl
Reid Kleckner [Tue, 24 Feb 2015 20:29:40 +0000 (20:29 +0000)]
MS extensions: Properly diagnose address of MS property decl

Summary: Fixes PR22671.

Reviewers: rsmith

Subscribers: cfe-commits

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

llvm-svn: 230362

9 years agoFix typo: qual -> equal
Arch D. Robison [Tue, 24 Feb 2015 20:11:49 +0000 (20:11 +0000)]
Fix typo: qual -> equal

llvm-svn: 230361

9 years agoAdd .fpu directives to ARM unwind save & restore functions.
Jonathan Roelofs [Tue, 24 Feb 2015 20:09:29 +0000 (20:09 +0000)]
Add .fpu directives to ARM unwind save & restore functions.

TODO: The iwmmx register save & restore functions still need the same treatment.
      I didn't do that in this patch because the integrated assembler has a bug
      where it refuses to build them on -march=armv6-m, even with
         .march armv5t
         .arm
      in front of those functions.

This should fix PR22384.

http://reviews.llvm.org/D7258

llvm-svn: 230360

9 years agoStarting to cleanup the garbage collection documentation
Philip Reames [Tue, 24 Feb 2015 19:44:46 +0000 (19:44 +0000)]
Starting to cleanup the garbage collection documentation

In this change:
- Put the getting started section first
- Create a dedicated section to document the built in collector strategies
- Move discuss of ShadowStack into new section
- Add placeholders for erlang, ocaml, and statepoint-example collectors

There will be many more changes following.  I plan on full integrating the documentation for gc.statepoint and gc.root.  I want to make it much clearer on how to get started and what users should expect in terms of effort.

llvm-svn: 230359

9 years agoRevert:
Eric Christopher [Tue, 24 Feb 2015 19:11:00 +0000 (19:11 +0000)]
Revert:

Author: Simon Pilgrim <llvm-dev@redking.me.uk>
Date:   Mon Feb 23 23:04:28 2015 +0000

    Fix based on post-commit comment on D7816 & rL230177 - BUILD_VECTOR operand truncation was using the the BV's output scalar type instead of the input type.

and

Author: Simon Pilgrim <llvm-dev@redking.me.uk>
Date:   Sun Feb 22 18:17:28 2015 +0000

    [DagCombiner] Generalized BuildVector Vector Concatenation

    The CONCAT_VECTORS combiner pass can transform the concat of two BUILD_VECTOR nodes into a single BUILD_VECTOR node.

    This patch generalises this to support any number of BUILD_VECTOR nodes, and also permits UNDEF nodes to be included as well.

    This was noticed as AVX vec128 -> vec256 canonicalization sometimes creates a CONCAT_VECTOR with a real vec128 lower and an vec128 UNDEF upper.

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

as the root cause of PR22678 which is causing an assertion inside the DAG combiner.

I'll follow up to the main thread as well.

llvm-svn: 230358

9 years agoRename UpdateRegAllocHint to match style guidelines.
Eric Christopher [Tue, 24 Feb 2015 19:10:57 +0000 (19:10 +0000)]
Rename UpdateRegAllocHint to match style guidelines.

llvm-svn: 230357

9 years ago[asan] fix odr-violation.cc test to always use slow unwinding (hopefully fixes the...
Kostya Serebryany [Tue, 24 Feb 2015 18:52:38 +0000 (18:52 +0000)]
[asan] fix odr-violation.cc test to always use slow unwinding (hopefully fixes the ARM bot)

llvm-svn: 230356

9 years agoAArch64: Relax assert about large shift sizes.
Matthias Braun [Tue, 24 Feb 2015 18:52:04 +0000 (18:52 +0000)]
AArch64: Relax assert about large shift sizes.

The reason why these large shift sizes happen is because OpaqueConstants
currently inhibit alot of DAG combining, but that has to be addressed in
another commit (like the proposal in D6946).

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

llvm-svn: 230355

9 years agoDAGCombiner: Move variable definitions closer to use; NFC
Matthias Braun [Tue, 24 Feb 2015 18:52:01 +0000 (18:52 +0000)]
DAGCombiner: Move variable definitions closer to use; NFC

llvm-svn: 230354

9 years agoDAGCombiner: Move variable declaration closer to definiion; NFC
Matthias Braun [Tue, 24 Feb 2015 18:51:59 +0000 (18:51 +0000)]
DAGCombiner: Move variable declaration closer to definiion; NFC

llvm-svn: 230353

9 years agoR600/SI: Remove isel mubuf legalization
Tom Stellard [Tue, 24 Feb 2015 17:59:19 +0000 (17:59 +0000)]
R600/SI: Remove isel mubuf legalization

We legalize mubuf instructions post-instruction selection, so this
code is no longer needed.

llvm-svn: 230352

9 years agoAdd comment in MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_local back and...
Ilia K [Tue, 24 Feb 2015 17:54:34 +0000 (17:54 +0000)]
Add comment in MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_local back and revert expecting string.

llvm-svn: 230351

9 years agoARM: Simplify PCS handling.
Tim Northover [Tue, 24 Feb 2015 17:22:40 +0000 (17:22 +0000)]
ARM: Simplify PCS handling.

The backend should now be able to handle all AAPCS rules based on argument
type, which means Clang no longer has to duplicate the register-counting logic
and the CodeGen can be significantly simplified.

llvm-svn: 230349

9 years agoARM: treat [N x i32] and [N x i64] as AAPCS composite types
Tim Northover [Tue, 24 Feb 2015 17:22:34 +0000 (17:22 +0000)]
ARM: treat [N x i32] and [N x i64] as AAPCS composite types

The logic is almost there already, with our special homogeneous aggregate
handling. Tweaking it like this allows front-ends to emit AAPCS compliant code
without ever having to count registers or add discarded padding arguments.

Only arrays of i32 and i64 are needed to model AAPCS rules, but I decided to
apply the logic to all integer arrays for more consistency.

llvm-svn: 230348

9 years agoAdjust an lldb-mi test to fix failure on Linux.
Hafiz Abid Qadeer [Tue, 24 Feb 2015 17:20:43 +0000 (17:20 +0000)]
Adjust an lldb-mi test to fix failure on Linux.

llvm-svn: 230347

9 years agoRemove redundant code from lldb-mi.
Hafiz Abid Qadeer [Tue, 24 Feb 2015 17:08:20 +0000 (17:08 +0000)]
Remove redundant code from lldb-mi.

Summary:
After recent changes, some code has become redundant. This revision tries to remove
the un-used code and tidy up the rest.

Following 4 files have been removed. I have updated CMake files and checked that it builds
fine on Linux and Windows. Can somebody update the xcode related file accordingly?

tools/lldb-mi/MICmnStreamStdinLinux.cpp
tools/lldb-mi/MICmnStreamStdinLinux.h
tools/lldb-mi/MICmnStreamStdinWindows.cpp
tools/lldb-mi/MICmnStreamStdinWindows.h

Reviewers: clayborg, ki.stfu

Reviewed By: clayborg, ki.stfu

Subscribers: lldb-commits

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

llvm-svn: 230345

9 years ago[ASan/Win] Add support for sanitizer allocator hooks, __asan_default_options and...
Timur Iskhodzhanov [Tue, 24 Feb 2015 17:07:22 +0000 (17:07 +0000)]
[ASan/Win] Add support for sanitizer allocator hooks, __asan_default_options and __asan_on_error

llvm-svn: 230344

9 years agoRevert "Raising minimum required CMake version to 2.8.12.2."
Tobias Grosser [Tue, 24 Feb 2015 16:39:46 +0000 (16:39 +0000)]
Revert "Raising minimum required CMake version to 2.8.12.2."

This reverts commit r230062.

Debian stable (wheezy) ships still with cmake 2.8.9.

The commit broke my LLVM/Polly buildbot, to my knowledge our only Linux+cmake
buildbot.

llvm-svn: 230343

9 years agosimplify control flow; NFC
Sanjay Patel [Tue, 24 Feb 2015 16:26:02 +0000 (16:26 +0000)]
simplify control flow; NFC

llvm-svn: 230342

9 years agoRevert r230280: "Bugfix: SCEVExpander incorrectly marks increment operations as no...
Hans Wennborg [Tue, 24 Feb 2015 16:19:29 +0000 (16:19 +0000)]
Revert r230280: "Bugfix: SCEVExpander incorrectly marks increment operations as no-wrap"

This caused PR22674, failing this assert:

Instructions.h:2281: llvm::Value* llvm::PHINode::getOperand(unsigned int) const: Assertion `i_nocapture < OperandTraits<PHINode>::operands(this) && "getOperand() out of range!"' failed.

llvm-svn: 230341

9 years agoAllow non-affine control flow -- Code Generation
Johannes Doerfert [Tue, 24 Feb 2015 16:16:32 +0000 (16:16 +0000)]
Allow non-affine control flow -- Code Generation

  This is the code generation for region statements that are created
  when non-affine control flow was present in the input. A new
  generator, similar to the block or vector generator, for regions is
  used to traverse and copy the region statement and to adjust the
  control flow inside the new region in the end.

llvm-svn: 230340

9 years ago[x32] Mark RBX as reserved when EBX is the base pointer.
Michael Kuperstein [Tue, 24 Feb 2015 16:13:16 +0000 (16:13 +0000)]
[x32] Mark RBX as reserved when EBX is the base pointer.

This should have gone into r230334.

llvm-svn: 230339

9 years agofix typo in comment; NFC
Sanjay Patel [Tue, 24 Feb 2015 16:11:05 +0000 (16:11 +0000)]
fix typo in comment; NFC

llvm-svn: 230338

9 years agoOmit a default argument
Johannes Doerfert [Tue, 24 Feb 2015 16:02:16 +0000 (16:02 +0000)]
Omit a default argument

llvm-svn: 230337

9 years ago[FIX] Silence warning
Johannes Doerfert [Tue, 24 Feb 2015 16:00:41 +0000 (16:00 +0000)]
[FIX] Silence warning

llvm-svn: 230336

9 years ago[FIX] Some comments
Johannes Doerfert [Tue, 24 Feb 2015 16:00:29 +0000 (16:00 +0000)]
[FIX] Some comments

llvm-svn: 230335

9 years ago[x32] x32 should use ebx as the base pointer.
Michael Kuperstein [Tue, 24 Feb 2015 15:27:13 +0000 (15:27 +0000)]
[x32] x32 should use ebx as the base pointer.

This fixes the original issue in PR22655, but not the secondary one.

llvm-svn: 230334

9 years agoCommit patch for PR19649. Set the correct sign of wide character for literals based...
Michael Wong [Tue, 24 Feb 2015 13:34:20 +0000 (13:34 +0000)]
Commit patch for PR19649. Set the correct sign of wide character for literals based on underlying type of wchar_t.
Reviewed:
http://reviews.llvm.org/D7559
Patch by Rachel Craig; Test cases by Hubert Tong.

llvm-svn: 230333

9 years ago[SDAG] Handle LowerOperation returning its input consistently
Hal Finkel [Tue, 24 Feb 2015 12:59:47 +0000 (12:59 +0000)]
[SDAG] Handle LowerOperation returning its input consistently

For almost all node types, if the target requested custom lowering, and
LowerOperation returned its input, we'd treat the original node as legal. This
did not work, however, for many loads and stores, because they follow
slightly different code paths, and we did not account for the possibility of
LowerOperation returning its input at those call sites.

I think that we now handle this consistently everywhere. At the call sites in
LegalizeDAG, we used to assert in this case, so there's no functional change
for any existing code there. For the call sites in LegalizeVectorOps, this
really only affects whether or not we set Changed = true, but I think makes the
semantics clearer.

No test case here, but it will be covered by an upcoming PowerPC commit adding
QPX support.

llvm-svn: 230332

9 years ago[OPENMP] Update codegen for 'omp flush' directive.
Alexey Bataev [Tue, 24 Feb 2015 12:55:09 +0000 (12:55 +0000)]
[OPENMP] Update codegen for 'omp flush' directive.
__kmpc_omp_flush() runtime library now has only one argument and is not a vararg
anymore. This update makes the codegen compatible with these changes.

llvm-svn: 230331

9 years agoMake the forward declaration for array swap have the same inline/visibility attribute...
Marshall Clow [Tue, 24 Feb 2015 12:46:39 +0000 (12:46 +0000)]
Make the forward declaration for array swap have the same inline/visibility attributes as the definition. Thanks to Steven Wu for the catch.

llvm-svn: 230330

9 years agoAllow non-affine control flow -- SCoP Modeling
Johannes Doerfert [Tue, 24 Feb 2015 12:00:50 +0000 (12:00 +0000)]
Allow non-affine control flow -- SCoP Modeling

  This allows us to model non-affine regions in the SCoP representation.
  SCoP statements can now describe either basic blocks or non-affine
  regions. In the latter case all accesses in the region are accumulated
  for the statement and write accesses, except in the entry, have to be
  marked as may-write.

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

llvm-svn: 230329

9 years agoAdd ScalarEvolution bounds to non-affine access functions
Johannes Doerfert [Tue, 24 Feb 2015 11:58:30 +0000 (11:58 +0000)]
Add ScalarEvolution bounds to non-affine access functions

llvm-svn: 230328

9 years ago[mips] Reformat some TableGen definitions. NFC.
Toma Tabacu [Tue, 24 Feb 2015 11:52:19 +0000 (11:52 +0000)]
[mips] Reformat some TableGen definitions. NFC.

Summary: Separated some instruction and pseudo-instruction definitions from InstAlias definitions, added banner for pseudo-instructions and removed a redundant whitespace from a pseudo-instruction definition. No functional change.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 230327

9 years ago[FIX] Create single exiting block
Johannes Doerfert [Tue, 24 Feb 2015 11:46:18 +0000 (11:46 +0000)]
[FIX] Create single exiting block

llvm-svn: 230326

9 years agoAllow non-affine control flow -- SCoP Detection
Johannes Doerfert [Tue, 24 Feb 2015 11:45:21 +0000 (11:45 +0000)]
Allow non-affine control flow -- SCoP Detection

  With this patch we allow the SCoP detection to detect regions as SCoPs
  which have non-affine control flow inside. All non-affine regions are
  tracked and later accessible to the ScopInfo.

  As there is no real difference, non-affine branches as well as
  floating point branches are covered (and both called non-affine
  control flow).  However, the detection is restricted to
  overapproximate only loop free regions.

llvm-svn: 230325

9 years agoAllow sanitizer to work with "old" kernel headers
Renato Golin [Tue, 24 Feb 2015 11:38:41 +0000 (11:38 +0000)]
Allow sanitizer to work with "old" kernel headers

Sanitizers work on ancient kernels and were depending on types existing.
When those types were removed, the sanitizer build broke. See bug
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59009 for more information.

This patch fixes it by isolating the need for those types only when the
feature is actually needed, thus allowing one to compile the kernel with
or without that change, irrespective of its version.

Patch by Christophe Lyon.

llvm-svn: 230324

9 years agoTry to unbreak sanitizer-x86_64-linux-autoconf after r230318
Kuba Brecka [Tue, 24 Feb 2015 11:12:44 +0000 (11:12 +0000)]
Try to unbreak sanitizer-x86_64-linux-autoconf after r230318

The buildbot failed to build with

    error: variable ‘enable_fp’ set but not used [-Werror=unused-but-set-variable]

let's add a `(void)enable_fp;`.

llvm-svn: 230323

9 years agoRemove XFAIL on string view test for apples clang compiler. Thanks to Marshall for...
Eric Fiselier [Tue, 24 Feb 2015 10:52:07 +0000 (10:52 +0000)]
Remove XFAIL on string view test for apples clang compiler. Thanks to Marshall for the fix

llvm-svn: 230322

9 years agoAdd -exec-abort command (MI); Don't exit on eStateExited
Ilia K [Tue, 24 Feb 2015 10:40:45 +0000 (10:40 +0000)]
Add -exec-abort command (MI); Don't exit on eStateExited

Summary:
Add -exec-abort command + test.

Also, I had fixed an error, when lldb-mi exits on eStateExited. With current patch we can re-run target:
```
-file-exec-and-symbols hello
^done
-exec-run
^running
*stopped,reason="breakpoint-hit"...
-exec-abort
^done
*stopped,reason="exited-normally"...    <- program exits
-exec-run                               <- run again
^running
*stopped,reason="breakpoint-hit"...
```

All tests pass on OS X.

Reviewers: zturner, emaste, abidh, clayborg

Reviewed By: abidh, clayborg

Subscribers: lldb-commits, emaste, zturner, clayborg, abidh

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

llvm-svn: 230321

9 years agoFix MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_xxx tests after r230237
Ilia K [Tue, 24 Feb 2015 10:34:34 +0000 (10:34 +0000)]
Fix MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_xxx tests after r230237

llvm-svn: 230320

9 years agoCreate ScopedTimeout class for GDBRemoteCommunication
Tamas Berghammer [Tue, 24 Feb 2015 10:23:39 +0000 (10:23 +0000)]
Create ScopedTimeout class for GDBRemoteCommunication

This new class makes it easier to change the timeout of a
GDBRemoteCommunication instance for a short time and then restore it to
its original value.

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

llvm-svn: 230319

9 years agoFix the ASan ioctl.cc test when using COMPILER_RT_DEBUG=On
Kuba Brecka [Tue, 24 Feb 2015 10:10:25 +0000 (10:10 +0000)]
Fix the ASan ioctl.cc test when using COMPILER_RT_DEBUG=On

In debug mode (COMPILER_RT_DEBUG=On), we still build with -fomit-frame-pointer and wrap_ioctl doesn't set up a proper stack frame.  In release mode it does, because ioctl_common_pre gets inlined into wrap_ioctl and it uses the COMMON_INTERCEPTOR_READ_RANGE macro which in the end calls GET_CURRENT_FRAME and that forces the compiler to generate a stack frame for the function.

Not having a proper stack frame breaks the unwinder.  This patch forces to generate a frame pointer (via ENABLE_FRAME_POINTER macro).

Reviewed at http://reviews.llvm.org/D7815

llvm-svn: 230318

9 years agoFix alloca_instruments_all_paddings.cc test to work under higher -O levels (compiler...
Kuba Brecka [Tue, 24 Feb 2015 09:47:33 +0000 (09:47 +0000)]
Fix alloca_instruments_all_paddings.cc test to work under higher -O levels (compiler-rt part)

When AddressSanitizer only a single dynamic alloca and no static allocas, due to an early exit from FunctionStackPoisoner::poisonStack we forget to unpoison the dynamic alloca.  This patch fixes that.

Reviewed at http://reviews.llvm.org/D7810

llvm-svn: 230317

9 years agoFix alloca_instruments_all_paddings.cc test to work under higher -O levels (llvm...
Kuba Brecka [Tue, 24 Feb 2015 09:47:05 +0000 (09:47 +0000)]
Fix alloca_instruments_all_paddings.cc test to work under higher -O levels (llvm part)

When AddressSanitizer only a single dynamic alloca and no static allocas, due to an early exit from FunctionStackPoisoner::poisonStack we forget to unpoison the dynamic alloca.  This patch fixes that.

Reviewed at http://reviews.llvm.org/D7810

llvm-svn: 230316

9 years ago[WinX86_64 ABI] Treat C99 _Complex as a struct
Michael Kuperstein [Tue, 24 Feb 2015 09:35:58 +0000 (09:35 +0000)]
[WinX86_64 ABI] Treat C99 _Complex as a struct

MSVC does not support C99 _Complex.
ICC, however, does support it on windows x86_64, and treats it, for purposes of parameter passing, as equivalent to a struct containing two fields (for the real and imaginary part).

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

llvm-svn: 230315

9 years agoFix codegen for virtual methods that are (re-) exported from multiple modules.
Manuel Klimek [Tue, 24 Feb 2015 09:06:28 +0000 (09:06 +0000)]
Fix codegen for virtual methods that are (re-) exported from multiple modules.

Fixes multiple crashes where a non-canonical decl would be used as key
in a lookup.

llvm-svn: 230314

9 years ago[X86] Remove the AbsMem32 type from the assembly parser. Only really need the 16...
Craig Topper [Tue, 24 Feb 2015 08:02:13 +0000 (08:02 +0000)]
[X86] Remove the AbsMem32 type from the assembly parser. Only really need the 16-bit version which will automatically get prioritized over AbsMem.

llvm-svn: 230313

9 years agoFix typo that breaks FileSystem::IsLocal
Vince Harron [Tue, 24 Feb 2015 05:24:12 +0000 (05:24 +0000)]
Fix typo that breaks FileSystem::IsLocal

llvm-svn: 230312

9 years agoCompile fix for FileSystem::IsLocal on Linux
Vince Harron [Tue, 24 Feb 2015 05:14:49 +0000 (05:14 +0000)]
Compile fix for FileSystem::IsLocal on Linux

llvm-svn: 230311

9 years agoRevert "Add clangCodeGen.a to the tools that need it after the clang module"
Adrian Prantl [Tue, 24 Feb 2015 05:14:37 +0000 (05:14 +0000)]
Revert "Add clangCodeGen.a to the tools that need it after the clang module"

llvm-svn: 230310

9 years agoRevert "Wrap clang module files in a Mach-O, ELF, or COFF container."
Adrian Prantl [Tue, 24 Feb 2015 05:14:17 +0000 (05:14 +0000)]
Revert "Wrap clang module files in a Mach-O, ELF, or COFF container."

This reverts commit r230305.
Off to fix another round of missing dependencies on various platforms.

llvm-svn: 230309

9 years agoDon't load Framework module.map files when searching subdirectories
Ben Langmuir [Tue, 24 Feb 2015 04:58:15 +0000 (04:58 +0000)]
Don't load Framework module.map files when searching subdirectories

This would cause frameworks to have spurious "redefinition" errors if
they had both a (legacy) "module.map" and a (new) "module.modulemap" file and we
happened to do a sub-directory search in that directory using a
non-framework include path (e.g. -Ifoo/ -Ffoo/).  For migration
purposes it's very handy that the compiler will prefer the new spelling
of the filename and not look at the old one if it doesn't need to.

llvm-svn: 230308

9 years agoFix typo s/bitcodewriter/bitwriter
Adrian Prantl [Tue, 24 Feb 2015 04:49:13 +0000 (04:49 +0000)]
Fix typo s/bitcodewriter/bitwriter

llvm-svn: 230307

9 years agoAdd clangCodeGen.a to the tools that need it after the clang module
Adrian Prantl [Tue, 24 Feb 2015 04:26:29 +0000 (04:26 +0000)]
Add clangCodeGen.a to the tools that need it after the clang module
format change.

llvm-svn: 230306

9 years agoWrap clang module files in a Mach-O, ELF, or COFF container.
Adrian Prantl [Tue, 24 Feb 2015 04:25:59 +0000 (04:25 +0000)]
Wrap clang module files in a Mach-O, ELF, or COFF container.
This is a necessary prerequisite for debugging with modules.
The .pcm files become containers that hold the serialized AST which allows
us to store debug information in the module file that can be shared by all
object files that were built importing the module.

rdar://problem/19104245

This reapplies r230044 with a fixed configure+make build and updated
dependencies. Take 3.

llvm-svn: 230305

9 years agoInstrProf: Make sure counts in lambdas don't escape to the parent scope
Justin Bogner [Tue, 24 Feb 2015 04:13:56 +0000 (04:13 +0000)]
InstrProf: Make sure counts in lambdas don't escape to the parent scope

When generating coverage maps, we were traversing the body as if it
were part of the parent function, but this doesn't make sense since
we're currently counting lambdas as separate functions.

llvm-svn: 230304

9 years ago[modules] Properly check whether a declaration is std::initializer_list. This
Richard Smith [Tue, 24 Feb 2015 03:30:14 +0000 (03:30 +0000)]
[modules] Properly check whether a declaration is std::initializer_list. This
bug is not actually modules-specific, but it's a little tricky to tickle it
outside of modules builds, so submitting with the reduced testcase I have.

llvm-svn: 230303

9 years agoMove the copy phases for the xpcservices bundles from the "LLDB"
Jason Molenda [Tue, 24 Feb 2015 03:21:38 +0000 (03:21 +0000)]
Move the copy phases for the xpcservices bundles from the "LLDB"
target to the "desktop" target.  They aren't used for iOS builds.

llvm-svn: 230302

9 years ago[modules] Ensure we've imported all declarations of a template before
Richard Smith [Tue, 24 Feb 2015 02:44:23 +0000 (02:44 +0000)]
[modules] Ensure we've imported all declarations of a template before
attempting to lazily deserialize its specializations; otherwise, there might be
pending specializations that we don't know about yet.

llvm-svn: 230301

9 years agoBeginning of alloca implementation for Mips fast-isel
Reed Kotler [Tue, 24 Feb 2015 02:36:45 +0000 (02:36 +0000)]
Beginning of alloca implementation for Mips fast-isel

Summary: Begin to add various address modes; including alloca.

Test Plan: Make sure there are no regressions in test-suite at O0/02 in mips32r1/r2

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: echristo, rfuhler, llvm-commits

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

llvm-svn: 230300