platform/upstream/llvm.git
6 years ago[Analysis] Fix typo in assert. NFC
Shoaib Meenai [Thu, 19 Jul 2018 19:11:29 +0000 (19:11 +0000)]
[Analysis] Fix typo in assert. NFC

Test commit to see if my mailing list woes have been resolved.

llvm-svn: 337485

6 years agoAdd support for R_HEX_B32_PCREL_X, R_HEX_B22_PCREL_X relocations
Sid Manning [Thu, 19 Jul 2018 19:10:56 +0000 (19:10 +0000)]
Add support for R_HEX_B32_PCREL_X, R_HEX_B22_PCREL_X relocations

A couple more basic relocations plus testcase.

Differential Revision: https://reviews.llvm.org/D47791

llvm-svn: 337484

6 years agoFix failing testcase to actually be valid.
Richard Smith [Thu, 19 Jul 2018 19:05:13 +0000 (19:05 +0000)]
Fix failing testcase to actually be valid.

llvm-svn: 337483

6 years ago[profile] Add interface to get profile filename
Teresa Johnson [Thu, 19 Jul 2018 19:03:50 +0000 (19:03 +0000)]
[profile] Add interface to get profile filename

Summary:
Add __llvm_profile_get_filename interface to get the profile filename,
which can be used for identifying which profile file belongs to an app
when multiple binaries are instrumented and dumping profiles into the
same directory. The filename includes the path.

Reviewers: davidxl

Subscribers: delcypher, #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D49529

llvm-svn: 337482

6 years agoFix template argument deduction when a parameter pack has a value
Richard Smith [Thu, 19 Jul 2018 19:00:37 +0000 (19:00 +0000)]
Fix template argument deduction when a parameter pack has a value
provided by an outer template.

We made the incorrect assumption in various places that the only way we
can have any arguments already provided for a pack during template
argument deduction was from a partially-specified pack. That's not true;
we can also have arguments from an enclosing already-instantiated
template, and that can even result in the function template's own pack
parameters having a fixed length and not being packs for the purposes of
template argument deduction.

llvm-svn: 337481

6 years agofix typo in comment
Nico Weber [Thu, 19 Jul 2018 18:59:38 +0000 (18:59 +0000)]
fix typo in comment

llvm-svn: 337480

6 years ago[OpenEmbedded] Add a unittest for aarch64-oe-linux
Mandeep Singh Grang [Thu, 19 Jul 2018 18:10:03 +0000 (18:10 +0000)]
[OpenEmbedded] Add a unittest for aarch64-oe-linux

Summary: Added a unittest for aarch64-oe-linux which was missed in D48861.

Reviewers: compnerd, rengolin, javed.absar

Reviewed By: compnerd

Subscribers: kristof.beyls, dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D49314

llvm-svn: 337479

6 years ago[APInt] Keep the original bit width in quotient and remainder
Krzysztof Parzyszek [Thu, 19 Jul 2018 18:07:56 +0000 (18:07 +0000)]
[APInt] Keep the original bit width in quotient and remainder

Some trivial cases in udivrem were handled by directly assigning 0 or 1
to APInt objects. This would set the bit width to 1, instead of the bit
width of the inputs. A potentially undesirable side effect of that is
that with the bit width of 1, 1 equals -1.

Differential Revision: https://reviews.llvm.org/D49554

llvm-svn: 337478

6 years ago[libc++] Allow running ABI list tests with different ABI versions
Louis Dionne [Thu, 19 Jul 2018 18:02:50 +0000 (18:02 +0000)]
[libc++] Allow running ABI list tests with different ABI versions

Summary:
Currently, the ABI list test only works for ABI version 1. This commit
allows running the ABI list test with ABI version 2. It also adds an
ABI list file for ABI v2 on Mac OS X.

Reviewers: EricWF

Subscribers: mgorny, christof, dexonsmith, llvm-commits, mclow.lists

Differential Revision: https://reviews.llvm.org/D49509

llvm-svn: 337477

6 years ago[libFuzzer] Update documentation regarding MSan.
Matt Morehouse [Thu, 19 Jul 2018 17:59:11 +0000 (17:59 +0000)]
[libFuzzer] Update documentation regarding MSan.

Summary: -fsanitize=fuzzer,memory now works out-of-the-box.

Reviewers: kcc

Reviewed By: kcc

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D49441

llvm-svn: 337476

6 years agoAdded unit tests for Flags
Raphael Isemann [Thu, 19 Jul 2018 17:45:51 +0000 (17:45 +0000)]
Added unit tests for Flags

Reviewers: labath

Reviewed By: labath

Subscribers: labath, mgorny, lldb-commits

Differential Revision: https://reviews.llvm.org/D49435

llvm-svn: 337475

6 years ago[analyzer] Fix memory sanitizer error in MallocChecker.
Reka Kovacs [Thu, 19 Jul 2018 17:43:09 +0000 (17:43 +0000)]
[analyzer] Fix memory sanitizer error in MallocChecker.

StringRef's data() returns a string that may be non-null-terminated.
Switch to using StringRefs from const char pointers in visitor notes
to avoid problems.

llvm-svn: 337474

6 years agoFix unused variable warning.
Erich Keane [Thu, 19 Jul 2018 17:19:16 +0000 (17:19 +0000)]
Fix unused variable warning.

llvm-svn: 337473

6 years ago[analyzer] Memoize complexity of SymExpr
Mikhail R. Gadelha [Thu, 19 Jul 2018 17:03:12 +0000 (17:03 +0000)]
[analyzer] Memoize complexity of SymExpr

Summary:
This patch introduces a new member to SymExpr, which stores the symbol complexity, avoiding recalculating it every time computeComplexity() is called.

Also, increase the complexity of conjured Symbols by one, so it's clear that it has a greater complexity than its underlying symbols.

Reviewers: NoQ, george.karpenkov

Reviewed By: NoQ, george.karpenkov

Subscribers: xazax.hun, szepet, a.sidorin

Differential Revision: https://reviews.llvm.org/D49232

llvm-svn: 337472

6 years ago[LoadStoreVectorizer] Use getMinusScev() to compute the distance between two pointers.
Farhana Aleen [Thu, 19 Jul 2018 16:50:27 +0000 (16:50 +0000)]
[LoadStoreVectorizer] Use getMinusScev() to compute the distance between two pointers.

Summary: Currently, isConsecutiveAccess() detects two pointers(PtrA and PtrB) as consecutive by
         comparing PtrB with BaseDelta+PtrA. This works when both pointers are factorized or
         both of them are not factorized. But isConsecutiveAccess() fails if one of the
         pointers is factorized but the other one is not.

         Here is an example:
         PtrA = 4 * (A + B)
         PtrB = 4 + 4A + 4B

         This patch uses getMinusSCEV() to compute the distance between two pointers.
         getMinusSCEV() allows combining the expressions and computing the simplified distance.

Author: FarhanaAleen

Reviewed By: rampitec

Differential Revision: https://reviews.llvm.org/D49516

llvm-svn: 337471

6 years ago[Sema] Add a new warning, -Wmemset-transposed-args
Erik Pilkington [Thu, 19 Jul 2018 16:46:15 +0000 (16:46 +0000)]
[Sema] Add a new warning, -Wmemset-transposed-args

This diagnoses calls to memset that have the second and third arguments
transposed, for example:

  memset(buf, sizeof(buf), 0);

This is done by checking if the third argument is a literal 0, or if the second
is a sizeof expression (and the third isn't). The first check is also done for
calls to bzero.

Differential revision: https://reviews.llvm.org/D49112

llvm-svn: 337470

6 years ago[X86][BtVer2] correctly model the latency/throughput of LEA instructions.
Andrea Di Biagio [Thu, 19 Jul 2018 16:42:15 +0000 (16:42 +0000)]
[X86][BtVer2] correctly model the latency/throughput of LEA instructions.

This patch fixes the latency/throughput of LEA instructions in the BtVer2
scheduling model.

On Jaguar, A 3-operands LEA has a latency of 2cy, and a reciprocal throughput of
1. That is because it uses one cycle of SAGU followed by 1cy of ALU1.  An LEA
with a "Scale" operand is also slow, and it has the same latency profile as the
3-operands LEA. An LEA16r has a latency of 3cy, and a throughput of 0.5 (i.e.
RThrouhgput of 2.0).

This patch adds a new TIIPredicate named IsThreeOperandsLEAFn to X86Schedule.td.
The tablegen backend (for instruction-info) expands that definition into this
(file X86GenInstrInfo.inc):
```
static bool isThreeOperandsLEA(const MachineInstr &MI) {
  return (
    (
      MI.getOpcode() == X86::LEA32r
      || MI.getOpcode() == X86::LEA64r
      || MI.getOpcode() == X86::LEA64_32r
      || MI.getOpcode() == X86::LEA16r
    )
    && MI.getOperand(1).isReg()
    && MI.getOperand(1).getReg() != 0
    && MI.getOperand(3).isReg()
    && MI.getOperand(3).getReg() != 0
    && (
      (
        MI.getOperand(4).isImm()
        && MI.getOperand(4).getImm() != 0
      )
      || (MI.getOperand(4).isGlobal())
    )
  );
}
```

A similar method is generated in the X86_MC namespace, and included into
X86MCTargetDesc.cpp (the declaration lives in X86MCTargetDesc.h).

Back to the BtVer2 scheduling model:
A new scheduling predicate named JSlowLEAPredicate now checks if either the
instruction is a three-operands LEA, or it is an LEA with a Scale value
different than 1.
A variant scheduling class uses that new predicate to correctly select the
appropriate latency profile.

Differential Revision: https://reviews.llvm.org/D49436

llvm-svn: 337469

6 years agoThe patch adds support for the new map interface between clang and libomptarget....
Alexey Bataev [Thu, 19 Jul 2018 16:34:13 +0000 (16:34 +0000)]
The patch adds support for the new map interface between clang and libomptarget. The changes in the interface are the following:

device IDs are now 64-bit integers (as opposed to 32-bit)
map flags are 64-bit long (used to be 32-bit)
mappings for partially mapped structs are now calculated at compile time and members of partially mapped structs are flagged using the MEMBER_OF field
Support for is_device_ptr on struct members was dropped - this functionality is not supported by the OpenMP standard and its implementation is technically infeasible (however, use_device_ptr on struct members works as a non-standard extension of the compiler)

llvm-svn: 337468

6 years ago[compiler-rt] Only set lto_flags if lto_supported
Teresa Johnson [Thu, 19 Jul 2018 16:12:15 +0000 (16:12 +0000)]
[compiler-rt] Only set lto_flags if lto_supported

Fix bot failure from r37465. Move the new lto_flags append under the
check for whether lto_supported. Otherwise TestingConfig may not have
that member.

llvm-svn: 337467

6 years ago[analyzer] Fix disappearing notes in DanglingInternalBufferChecker tests
Reka Kovacs [Thu, 19 Jul 2018 15:44:46 +0000 (15:44 +0000)]
[analyzer] Fix disappearing notes in DanglingInternalBufferChecker tests

Correct a mistake of the exact same kind I am writing this checker for.

llvm-svn: 337466

6 years ago[compiler-rt] Add NewPM testing to CFI tests
Teresa Johnson [Thu, 19 Jul 2018 15:32:48 +0000 (15:32 +0000)]
[compiler-rt] Add NewPM testing to CFI tests

Summary:
Executes both LTO and ThinLTO CFI tests an additional time using the new
pass manager. I only bothered to add with gold and not lld as testing
with one linker should be sufficient. I didn't add for APPLE or WIN32
since I don't have a way to test those.

Depends on D49429.

Reviewers: pcc

Subscribers: dberris, mgorny, mehdi_amini, delcypher, dexonsmith, #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D49432

llvm-svn: 337465

6 years ago[X86][SSE] Add FPEXT vXf32 - vXf64 tests
Simon Pilgrim [Thu, 19 Jul 2018 15:32:45 +0000 (15:32 +0000)]
[X86][SSE] Add FPEXT vXf32 - vXf64 tests

Some basic subvector special cases based on PR36761

llvm-svn: 337464

6 years ago[analyzer] Add support for more basic_string API in
Reka Kovacs [Thu, 19 Jul 2018 15:10:06 +0000 (15:10 +0000)]
[analyzer] Add support for more basic_string API in
DanglingInternalBufferChecker.

A pointer referring to the elements of a basic_string may be invalidated
by calling a non-const member function, except operator[], at, front,
back, begin, rbegin, end, and rend. The checker now warns if the pointer
is used after such operations.

Differential Revision: https://reviews.llvm.org/D49360

llvm-svn: 337463

6 years ago[llvm-readobj] - Do not report invalid amount of sections.
George Rimar [Thu, 19 Jul 2018 14:52:57 +0000 (14:52 +0000)]
[llvm-readobj] - Do not report invalid amount of sections.

When output style is GNU and amount of sections is >= SHN_LORESERVE,
llvm-readobj reports zero number of sections instead of actual value.

The patch fixes that.

Differential revision: https://reviews.llvm.org/D49544

llvm-svn: 337462

6 years ago[ThinLTO] Enable ThinLTO WholeProgramDevirt and LowerTypeTests in new PM
Teresa Johnson [Thu, 19 Jul 2018 14:51:32 +0000 (14:51 +0000)]
[ThinLTO] Enable ThinLTO WholeProgramDevirt and LowerTypeTests in new PM

Summary:
Enable these passes for CFI and WPD in ThinLTO and LTO with the new pass
manager. Add a couple of tests for both PMs based on the clang tests
tools/clang/test/CodeGen/thinlto-distributed-cfi*.ll, but just test
through llvm-lto2 and not with distributed ThinLTO.

Reviewers: pcc

Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D49429

llvm-svn: 337461

6 years ago[ELF] - Eliminate dead code. NFC.
George Rimar [Thu, 19 Jul 2018 14:39:56 +0000 (14:39 +0000)]
[ELF] - Eliminate dead code. NFC.

Code was dead because we call postThunkContents only for SHT_SYMTAB.

llvm-svn: 337460

6 years agoELF: Replace the header-extension unit test with a lit one
Pavel Labath [Thu, 19 Jul 2018 14:38:30 +0000 (14:38 +0000)]
ELF: Replace the header-extension unit test with a lit one

The new test checks that we are actually able to read data from these
kinds of elf headers correctly instead of just that we read the section
number correctly. It is also easier to figure out what's going on in the
test.

llvm-svn: 337459

6 years ago[ELF] - One more test case for .eh_frame_hdr.
George Rimar [Thu, 19 Jul 2018 14:27:19 +0000 (14:27 +0000)]
[ELF] - One more test case for .eh_frame_hdr.

This is to test the following error message:
https://github.com/llvm-mirror/lld/blob/master/ELF/SyntheticSections.cpp#L544

Which occurs when LLD meets unsupported address encoding when scans
.eh_frame to build .eh_frame_hdr section.

llvm-svn: 337458

6 years ago[Docs] Testing Debug Info Preservation in Optimizations
Anastasis Grammenos [Thu, 19 Jul 2018 14:08:54 +0000 (14:08 +0000)]
[Docs] Testing Debug Info Preservation in Optimizations

Differential Revision: https://reviews.llvm.org/D49053

llvm-svn: 337457

6 years ago[CodeGen] Disable aggressive structor optimizations at -O0, take 3
Pavel Labath [Thu, 19 Jul 2018 14:05:22 +0000 (14:05 +0000)]
[CodeGen] Disable aggressive structor optimizations at -O0, take 3

The previous version of this patch (r332839) was reverted because it was
causing "definition with same mangled name as another definition" errors
in some module builds. This was caused by an unrelated bug in module
importing which it exposed. The importing problem was fixed in r336240,
so this recommits the original patch (r332839).

Differential Revision: https://reviews.llvm.org/D46685

llvm-svn: 337456

6 years ago[OpenMP][libomptarget] New map interface: remove translation code and ensure proper...
George Rokos [Thu, 19 Jul 2018 13:41:03 +0000 (13:41 +0000)]
[OpenMP][libomptarget] New map interface: remove translation code and ensure proper alignment of struct members

This patch removes the translation code since this functionality is now implemented in the compiler.
target_data_begin and target_data_end are also patched to handle some special cases that used to be
handled by the obsolete translation function, namely ensure proper alignment of struct members when
we have partially mapped structs. Mapping a struct from a higher address (i.e. not from its beginning)
can result in distortion of the alignment for some of its member fields. Padding restores the original
(proper) alignment.

Differential revision: https://reviews.llvm.org/D44186

llvm-svn: 337455

6 years agoEnable C++2a Chrono Literals
Erich Keane [Thu, 19 Jul 2018 13:36:57 +0000 (13:36 +0000)]
Enable C++2a Chrono Literals

C++2a via http://wg21.link/p0355 permits the library
literals of 'd' and 'y'. This patch enables them in the
Lexer so that they can be properly parsed.

Note that 'd' gets confused with the hex character, so
modifications to how octal, binary, and decimal numbers are
parsed were required. Since this is simply making previously
invalid code legal, this should be fine.

Hex still greedily parses the 'd' as a hexit, since it would
a: violate [lex.ext]p1
b: break existing code.

Differential Revision: https://reviews.llvm.org/D49504

llvm-svn: 337454

6 years ago[CodeComplete] Fix accessibilty of protected members from base class.
Eric Liu [Thu, 19 Jul 2018 13:32:00 +0000 (13:32 +0000)]
[CodeComplete] Fix accessibilty of protected members from base class.

Summary:
Currently, protected members from base classes are marked as
inaccessible when completing in derived class. This patch fixes the problem by
setting the naming class correctly when looking up results in base class
according to [11.2.p5].

Reviewers: aaron.ballman, sammccall, rsmith

Reviewed By: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D49421

llvm-svn: 337453

6 years agoFix whitespace formatting in DWARFExpression::DumpLocation
Pavel Labath [Thu, 19 Jul 2018 13:30:56 +0000 (13:30 +0000)]
Fix whitespace formatting in DWARFExpression::DumpLocation

we were printing an extra space before the start for the expression and
an extra space after some dwarf operators. This makes sure we only print
exactly one space **between** operators and nowhere else.

llvm-svn: 337452

6 years agoNFC: Remove extraneous semicolons as pointed out in the differential review
Nemanja Ivanovic [Thu, 19 Jul 2018 12:49:27 +0000 (12:49 +0000)]
NFC: Remove extraneous semicolons as pointed out in the differential review

The commit for
https://reviews.llvm.org/D49424
missed the comment about the extraneous semicolons. Remove them.

llvm-svn: 337451

6 years agoARM: switch armv7em MachO triple to hard-float defaults and libcalls.
Tim Northover [Thu, 19 Jul 2018 12:44:51 +0000 (12:44 +0000)]
ARM: switch armv7em MachO triple to hard-float defaults and libcalls.

We were emitting incorrect calls to libm functions that LLVM had decided it
knew about because the default is soft-float.

Recommitted without breaking ELF this time.

llvm-svn: 337450

6 years ago[PowerPC] Handle __builtin_xxpermdi the same way as GCC does
Nemanja Ivanovic [Thu, 19 Jul 2018 12:44:15 +0000 (12:44 +0000)]
[PowerPC] Handle __builtin_xxpermdi the same way as GCC does

The codegen for this builtin was initially implemented to match GCC.
However, due to interest from users GCC changed behaviour to account for the
big endian bias of the instruction and correct it. This patch brings the
handling inline with GCC.

Fixes https://bugs.llvm.org/show_bug.cgi?id=38192

Differential Revision: https://reviews.llvm.org/D49424

llvm-svn: 337449

6 years ago[UnJ] Document unroll and jam pass and loop metadata
David Green [Thu, 19 Jul 2018 12:37:00 +0000 (12:37 +0000)]
[UnJ] Document unroll and jam pass and loop metadata

Add some quick words for unroll and jam to the list of passes and add
unroll_and_jam metadata to the language ref.

Differential Revision: https://reviews.llvm.org/D49349

llvm-svn: 337448

6 years ago[PCH+Modules] Load -fmodule-map-file content before including PCHs
Bruno Cardoso Lopes [Thu, 19 Jul 2018 12:32:06 +0000 (12:32 +0000)]
[PCH+Modules] Load -fmodule-map-file content before including PCHs

Consider:
1) Generate PCH with -fmodules and -fmodule-map-file
2) Use PCH with -fmodules and the same -fmodule-map-file

If we don't load -fmodule-map-file content before including PCHs,
the modules that are dependencies in PCHs cannot get loaded,
since there's no matching module map file when reading back the AST.

rdar://problem/40852867

Differential Revision: https://reviews.llvm.org/D48685

llvm-svn: 337447

6 years ago[x86/SLH] Major refactoring of SLH implementaiton. There are two big
Chandler Carruth [Thu, 19 Jul 2018 11:13:58 +0000 (11:13 +0000)]
[x86/SLH] Major refactoring of SLH implementaiton. There are two big
changes that are intertwined here:

1) Extracting the tracing of predicate state through the CFG to its own
   function.
2) Creating a struct to manage the predicate state used throughout the
   pass.

Doing #1 necessitates and motivates the particular approach for #2 as
now the predicate management is spread across different functions
focused on different aspects of it. A number of simplifications then
fell out as a direct consequence.

I went with an Optional to make it more natural to construct the
MachineSSAUpdater object.

This is probably the single largest outstanding refactoring step I have.
Things get a bit more surgical from here. My current goal, beyond
generally making this maintainable long-term, is to implement several
improvements to how we do interprocedural tracking of predicate state.
But I don't want to do that until the predicate state management and
tracing is in reasonably clear state.

Differential Revision: https://reviews.llvm.org/D49427

llvm-svn: 337446

6 years ago[DAGCombiner] Add rotate-extract tests
Simon Pilgrim [Thu, 19 Jul 2018 09:27:34 +0000 (09:27 +0000)]
[DAGCombiner] Add rotate-extract tests

Add new tests from D47681 to current codegen. Also added i686 codegen tests.

llvm-svn: 337445

6 years agoUse std::reference_wrapper instead of llvm::ReferenceStorage
Serge Guelton [Thu, 19 Jul 2018 09:24:34 +0000 (09:24 +0000)]
Use std::reference_wrapper instead of llvm::ReferenceStorage

Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D49298

llvm-svn: 337444

6 years ago[XRay][compiler-rt] Profiling: No files when empty
Dean Michael Berris [Thu, 19 Jul 2018 09:20:19 +0000 (09:20 +0000)]
[XRay][compiler-rt] Profiling: No files when empty

This change makes it so that the profiling mode implementation will only
write files when there are buffers to write. Before this change, we'd
always open a file even if there were no profiles collected when
flushing.

llvm-svn: 337443

6 years agoFix spelling mistake in comments. NFCI.
Simon Pilgrim [Thu, 19 Jul 2018 09:14:39 +0000 (09:14 +0000)]
Fix spelling mistake in comments. NFCI.

llvm-svn: 337442

6 years ago[XRay][compiler-rt] FDR Mode: Add extents metadata to buffer
Dean Michael Berris [Thu, 19 Jul 2018 05:17:32 +0000 (05:17 +0000)]
[XRay][compiler-rt] FDR Mode: Add extents metadata to buffer

When providing raw access to the FDR mode buffers, we used to not
include the extents metadata record. This oversight means that
processing the buffers in-memory will lose important information that
would have been written in files.

This change exposes the metadata record by serializing the data
similarly to how we would do it when flushing to files.

llvm-svn: 337441

6 years ago[Xray] Fix allocator build, MAP_NORESERVE flag is not always supported
David Carlier [Thu, 19 Jul 2018 05:08:59 +0000 (05:08 +0000)]
[Xray] Fix allocator build, MAP_NORESERVE flag is not always supported

MAP_NORESERVE is not supported or a no-op on BSD.

Reviewers: dberris

Reviewed By: dberris

Differential Revision: https://reviews.llvm.org/D49494

llvm-svn: 337440

6 years ago[PDB] Add PDBSourcePath flag to support absolutize source file path
Takuto Ikuta [Thu, 19 Jul 2018 04:56:22 +0000 (04:56 +0000)]
[PDB] Add PDBSourcePath flag to support absolutize source file path

This patch changes relative path for source files in obj files to
absolute path in PDB when linking with added flag.

I will make obj file generated by clang-cl independent from build
directory for chromium build. But I don't want to confuse visual studio
debugger or require additional configuration. To attain this goal, I
added flag to convert relative source file path in obj to absolute path
when emitting PDB.

By removing absolute path from obj files, we can share build cache
between chromium developers even when they are doing debug build.
That will make build time faster.

More context:
https://bugs.chromium.org/p/chromium/issues/detail?id=712796
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/5HXSVX-7fPc

llvm-svn: 337439

6 years ago[COFF] Don't produce base relocs for discardable sections
Martin Storsjo [Thu, 19 Jul 2018 04:25:22 +0000 (04:25 +0000)]
[COFF] Don't produce base relocs for discardable sections

Dwarf debug info contains some data that contains absolute addresses.
Since these sections are discardable and aren't loaded at runtime,
there's no point in adding base relocations for them.

This makes sure that after stripping out dwarf debug info, there are no
base relocations that point to nonexistent sections.

Differential Revision: https://reviews.llvm.org/D49350

llvm-svn: 337438

6 years ago[libFuzzer] fix the bot (the no-assert build)
Kostya Serebryany [Thu, 19 Jul 2018 03:16:12 +0000 (03:16 +0000)]
[libFuzzer] fix the bot (the no-assert build)

llvm-svn: 337437

6 years ago[libFuzzer] quick hack to fix the bot
Kostya Serebryany [Thu, 19 Jul 2018 01:54:28 +0000 (01:54 +0000)]
[libFuzzer] quick hack to fix the bot

llvm-svn: 337436

6 years ago[SCEV] Fix buggy behavior in getAddExpr with truncs
Max Kazantsev [Thu, 19 Jul 2018 01:46:21 +0000 (01:46 +0000)]
[SCEV] Fix buggy behavior in getAddExpr with truncs

SCEV tries to constant-fold arguments of trunc operands in SCEVAddExpr, and when it does
that, it passes wrong flags into the recursion. It is only valid to pass flags that are proved for
narrow type into a computation in wider type if we can prove that trunc instruction doesn't
actually change the value. If it did lose some meaningful bits, we may end up proving wrong
no-wrap flags for sum of arguments of trunc.

In the provided test we end up with `nuw` where it shouldn't be because of this bug.

The solution is to conservatively pass `SCEV::FlagAnyWrap` which is always a valid thing to do.

Reviewed By: sanjoy
Differential Revision: https://reviews.llvm.org/D49471

llvm-svn: 337435

6 years ago[libFuzzer] first experimental attempt at DFT-based mutations (DFT=data-flow-trace)
Kostya Serebryany [Thu, 19 Jul 2018 01:23:32 +0000 (01:23 +0000)]
[libFuzzer] first experimental attempt at DFT-based mutations (DFT=data-flow-trace)

llvm-svn: 337434

6 years ago[clang]: Add support for "-fno-delete-null-pointer-checks"
Manoj Gupta [Thu, 19 Jul 2018 00:44:52 +0000 (00:44 +0000)]
[clang]: Add support for "-fno-delete-null-pointer-checks"

Summary:
Support for this option is needed for building Linux kernel.
This is a very frequently requested feature by kernel developers.

More details : https://lkml.org/lkml/2018/4/4/601

GCC option description for -fdelete-null-pointer-checks:
This Assume that programs cannot safely dereference null pointers,
and that no code or data element resides at address zero.

-fno-delete-null-pointer-checks is the inverse of this implying that
null pointer dereferencing is not undefined.

This feature is implemented in as the function attribute
"null-pointer-is-valid"="true".
This CL only adds the attribute on the function.
It also strips "nonnull" attributes from function arguments but
keeps the related warnings unchanged.

Corresponding LLVM change rL336613 already updated the
optimizations to not treat null pointer dereferencing
as undefined if the attribute is present.

Reviewers: t.p.northover, efriedma, jyknight, chandlerc, rnk, srhines, void, george.burgess.iv

Reviewed By: jyknight

Subscribers: drinkcat, xbolva00, cfe-commits

Differential Revision: https://reviews.llvm.org/D47894

llvm-svn: 337433

6 years agoRemove scheduling dependency from XRay :: Posix/fork_basic_logging.cc
Matthew Voss [Thu, 19 Jul 2018 00:25:00 +0000 (00:25 +0000)]
Remove scheduling dependency from XRay :: Posix/fork_basic_logging.cc

Summary:
We've been seeing intermittent failures on our internal bots and we suspect
this may be due to the OS scheduling the child process to run before the parent
process.

This version ensures that the parent and child can be run in either order.

Reviewers: Maknee, dberris

Reviewed By: dberris

Subscribers: delcypher, #sanitizers, Maknee, llvm-commits

Differential Revision: https://reviews.llvm.org/D49501

llvm-svn: 337432

6 years agoDocumentation: fix a typo in the AST Matcher Reference docs.
James Dennett [Wed, 18 Jul 2018 23:21:31 +0000 (23:21 +0000)]
Documentation: fix a typo in the AST Matcher Reference docs.

llvm-svn: 337431

6 years agoReapply r336660: [Modules] Autoload subdirectory modulemaps with specific LangOpts
Bruno Cardoso Lopes [Wed, 18 Jul 2018 23:21:19 +0000 (23:21 +0000)]
Reapply r336660: [Modules] Autoload subdirectory modulemaps with specific LangOpts

Summary:
Reproducer and errors:
https://bugs.llvm.org/show_bug.cgi?id=37878

lookupModule was falling back to loadSubdirectoryModuleMaps when it couldn't
find ModuleName in (proper) search paths. This was causing iteration over all
files in the search path subdirectories for example "/usr/include/foobar" in
bugzilla case.

Users don't expect Clang to load modulemaps in subdirectories implicitly, and
also the disk access is not cheap.

if (AllowExtraModuleMapSearch) true with ObjC with @import ModuleName.

Reviewers: rsmith, aprantl, bruno

Subscribers: cfe-commits, teemperor, v.g.vassilev

Differential Revision: https://reviews.llvm.org/D48367

llvm-svn: 337430

6 years agoELF: Implement --icf=safe using address-significance tables.
Peter Collingbourne [Wed, 18 Jul 2018 22:49:31 +0000 (22:49 +0000)]
ELF: Implement --icf=safe using address-significance tables.

Differential Revision: https://reviews.llvm.org/D48146

llvm-svn: 337429

6 years agoRename __asan_gen_* symbols to ___asan_gen_*.
Peter Collingbourne [Wed, 18 Jul 2018 22:23:14 +0000 (22:23 +0000)]
Rename __asan_gen_* symbols to ___asan_gen_*.

This prevents gold from printing a warning when trying to export
these symbols via the asan dynamic list after ThinLTO promotes them
from private symbols to external symbols with hidden visibility.

Differential Revision: https://reviews.llvm.org/D49498

llvm-svn: 337428

6 years ago[ELF] Error if -r --gdb-index are used together
Fangrui Song [Wed, 18 Jul 2018 22:02:48 +0000 (22:02 +0000)]
[ELF] Error if -r --gdb-index are used together

Reviewers: ruiu, espindola

Subscribers: emaste, arichardson, llvm-commits

Differential Revision: https://reviews.llvm.org/D49513

llvm-svn: 337427

6 years ago[WebAssembly] Fix archive member display in error messages
Sam Clegg [Wed, 18 Jul 2018 21:46:09 +0000 (21:46 +0000)]
[WebAssembly] Fix archive member display in error messages

Add a test for this by causing a symbol collision
between archive members.

Differential Revision: https://reviews.llvm.org/D49343

llvm-svn: 337426

6 years ago[WebAssembly] Add missing -mattr=+exception-handling guards
Heejin Ahn [Wed, 18 Jul 2018 21:42:22 +0000 (21:42 +0000)]
[WebAssembly] Add missing -mattr=+exception-handling guards

Summary:
The use of exception handling instructions should only be enabled with
`-mattr=+exception-handling` option.

Reviewers: jgravelle-google

Subscribers: dschuff, sbc100, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D49391

llvm-svn: 337425

6 years agoRevert "ARM: switch armv7em triple to hard-float defaults and libcalls."
Tim Northover [Wed, 18 Jul 2018 21:32:49 +0000 (21:32 +0000)]
Revert "ARM: switch armv7em triple to hard-float defaults and libcalls."

This reverts commit r337385 until it can be targeted at MachO only.

llvm-svn: 337424

6 years agoFix some tests that had (implied) duplicate mtriple
David Blaikie [Wed, 18 Jul 2018 20:37:01 +0000 (20:37 +0000)]
Fix some tests that had (implied) duplicate mtriple

I 'fixed' one of these to use %llc_dwarf unnecessarily, so switch them
both back to using llc directly.

llvm-svn: 337423

6 years agoDR330: when determining whether a cast casts away constness, consider
Richard Smith [Wed, 18 Jul 2018 20:13:36 +0000 (20:13 +0000)]
DR330: when determining whether a cast casts away constness, consider
qualifiers from all levels matching a multidimensional array.

For example, this allows casting from
  pointer to       array of            array of   const volatile int
to
  pointer to const pointer to volatile pointer to                int
because the multidimensional array part of the source type corresponds
to a part of the destination type that contains both 'const' and
'volatile'.

Differential Revision: https://reviews.llvm.org/D49457

llvm-svn: 337422

6 years agoRevert "[CMake] Sort dependency list and add safestack to it"
Vedant Kumar [Wed, 18 Jul 2018 20:10:43 +0000 (20:10 +0000)]
Revert "[CMake] Sort dependency list and add safestack to it"

This reverts commit r337412.

An Apple-internal bot cannot find the safestack dependency, and fails to
configure with this change.

llvm-svn: 337421

6 years agoAdd support for __declspec(code_seg("segname"))
Erich Keane [Wed, 18 Jul 2018 20:04:48 +0000 (20:04 +0000)]
Add support for __declspec(code_seg("segname"))

This patch uses CodeSegAttr to represent __declspec(code_seg) rather than
building on the existing support for #pragma code_seg.
The code_seg declspec is applied on functions and classes. This attribute
enables the placement of code into separate named segments, including compiler-
generated codes and template instantiations.

For more information, please see the following:
https://msdn.microsoft.com/en-us/library/dn636922.aspx

This patch fixes the regression for the support for attribute ((section).
https://github.com/llvm-mirror/clang/commit/746b78de7812bc785fbb5207b788348040b23fa7

Patch by Soumi Manna (Manna)
Differential Revision: https://reviews.llvm.org/D48841

llvm-svn: 337420

6 years ago[X86][SSE] Canonicalize scalar fp arithmetic shuffle patterns
Simon Pilgrim [Wed, 18 Jul 2018 19:55:19 +0000 (19:55 +0000)]
[X86][SSE] Canonicalize scalar fp arithmetic shuffle patterns

As discussed on PR38197, this canonicalizes MOVS*(N0, OP(N0, N1)) --> MOVS*(N0, SCALAR_TO_VECTOR(OP(N0[0], N1[0])))

This returns the scalar-fp codegen lost by rL336971.

Additionally it handles the OP(N1, N0)) case for commutable (FADD/FMUL) ops.

Differential Revision: https://reviews.llvm.org/D49474

llvm-svn: 337419

6 years ago[Fuzzer] Improve crash unwinding on Fuchsia
Petr Hosek [Wed, 18 Jul 2018 19:20:47 +0000 (19:20 +0000)]
[Fuzzer] Improve crash unwinding on Fuchsia

Fuchsia doesn't have signals; instead it expects processes to have a
dedicated exception thread that binds to the process' exception port and
waits for exception packets to be delivered. On the other hand,
libFuzzer and sanitizer_common use expect to collect crash information
via libunwind from the same thread that caused the exception.

The long term fix is to improve support for remote unwinding in
libunbwind, plumb this through sanitizer_common and libFuzzer, and
handle the exception exclusively on the exception thread. In the
meantime, this revision has the exception thread "resurrect" the
crashing thread by:

* saving its general purpose register state onto the crashing thread's
  stack,
* setting the crashing thread's program counter to an assembly trampoline
  with the CFI information needed by libunwind, and
* resuming the crashed thread.

Patch By: aarongreen

Differential Revision: https://reviews.llvm.org/D48509

llvm-svn: 337418

6 years ago[analyzer] Remove a debug print that was accidentally left around.
Artem Dergachev [Wed, 18 Jul 2018 18:44:40 +0000 (18:44 +0000)]
[analyzer] Remove a debug print that was accidentally left around.

No functional change intended.

llvm-svn: 337417

6 years agoSkip debuginfo intrinsic in markLiveBlocks.
Xin Tong [Wed, 18 Jul 2018 18:40:45 +0000 (18:40 +0000)]
Skip debuginfo intrinsic in markLiveBlocks.

Summary:
The optimizer is 10%+ slower with vs without debuginfo. I started checking where
the difference is coming from.

I compiled sqlite3.c with and without debug info from CTMark and compare the time difference.

I use Xcode Instrument to find where time is spent. This brings about 20ms, out of ~20s.

Reviewers: davide, hfinkel

Reviewed By: hfinkel

Subscribers: hfinkel, aprantl, JDevlieghere, llvm-commits

Differential Revision: https://reviews.llvm.org/D49337

llvm-svn: 337416

6 years agoAdd (very partial) Kate syntax highlighting definition for TableGen
Roman Lebedev [Wed, 18 Jul 2018 18:35:27 +0000 (18:35 +0000)]
Add (very partial) Kate syntax highlighting definition for TableGen

This is very clearly not very good, and is very partial.
But this is better than nothing at all, and shouldn't
hurt those who don't need it.

If there are others interested in this functionality,
it will be great to further improve this.

{F6253091}

Reviewed By: Bigcheese

Differential Revision: https://reviews.llvm.org/D47080

llvm-svn: 337415

6 years ago[DAG] Add testcase.
Nirav Dave [Wed, 18 Jul 2018 18:34:52 +0000 (18:34 +0000)]
[DAG] Add testcase.

llvm-svn: 337414

6 years agoRevert r336609: Fix direct calls to __wrap_sym when it is relocated.
Rui Ueyama [Wed, 18 Jul 2018 18:24:46 +0000 (18:24 +0000)]
Revert r336609: Fix direct calls to __wrap_sym when it is relocated.

This reverts commit r336609 as it doesn't seem to work with AArch64
thunk creation when used with ASan.

llvm-svn: 337413

6 years ago[CMake] Sort dependency list and add safestack to it
Vedant Kumar [Wed, 18 Jul 2018 18:17:39 +0000 (18:17 +0000)]
[CMake] Sort dependency list and add safestack to it

The 'safestack.c' test requires safestack as a dependency.

llvm-svn: 337412

6 years ago[DebugInfo] Dwarfv5: Avoid unnecessary base_address specifiers in rnglists
David Blaikie [Wed, 18 Jul 2018 18:04:42 +0000 (18:04 +0000)]
[DebugInfo] Dwarfv5: Avoid unnecessary base_address specifiers in rnglists

Since DWARFv5 rnglists are self descriptive and have distinct encodings
for base-relative (offset_pair) and absolute (start_length) entries,
there's no need to use a base address specifier when describing a lone
address range in a section.

Use that, and improve the test coverage a bit here to include cases like
this and others.

llvm-svn: 337411

6 years agoSupport implicit _Atomic struct load / store
JF Bastien [Wed, 18 Jul 2018 18:01:41 +0000 (18:01 +0000)]
Support implicit _Atomic struct load / store

Summary:
Using _Atomic to do implicit load / store is just a seq_cst atomic_load / atomic_store. Stores currently assert in Sema::ImpCastExprToType with 'can't implicitly cast lvalue to rvalue with this cast kind', but that's erroneous. The codegen is fine as the test shows.

While investigating I found that Richard had found the problem here: https://reviews.llvm.org/D46112#1113557

<rdar://problem/40347123>

Reviewers: dexonsmith

Subscribers: cfe-commits, efriedma, rsmith, aaron.ballman

Differential Revision: https://reviews.llvm.org/D49458

llvm-svn: 337410

6 years ago[ScheduleDAG] Fix unfolding of SUnits to already existent nodes.
Nirav Dave [Wed, 18 Jul 2018 18:01:03 +0000 (18:01 +0000)]
[ScheduleDAG] Fix unfolding of SUnits to already existent nodes.

Summary:
If unfolding an SUnit results in both load or the operation using it which
already exist in the DAG, abort the unfold if they are already scheduled.
If not, make sure we don't add duplicate dependencies.

This fixes PR37916.

Reviewers: davide, eli.friedman, fhahn, bogner

Subscribers: MatzeB, hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D48666

llvm-svn: 337409

6 years ago[llvm-readobj] Generic -string-dump option
Paul Semel [Wed, 18 Jul 2018 18:00:41 +0000 (18:00 +0000)]
[llvm-readobj] Generic -string-dump option

Differential Revision: https://reviews.llvm.org/D49470

llvm-svn: 337408

6 years agoLook for an entry point function if /nodefaultlib is given.
Rui Ueyama [Wed, 18 Jul 2018 17:48:14 +0000 (17:48 +0000)]
Look for an entry point function if /nodefaultlib is given.

Summary: Fixes https://bugs.llvm.org/show_bug.cgi?id=38018

Reviewers: thakis

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D48990

llvm-svn: 337407

6 years agoUpdate the synopsis for <chrono> for C++20. No functional change.
Marshall Clow [Wed, 18 Jul 2018 17:37:51 +0000 (17:37 +0000)]
Update the synopsis for <chrono> for C++20. No functional change.

llvm-svn: 337406

6 years agoFix `ld.lld --help` message.
Rui Ueyama [Wed, 18 Jul 2018 17:19:17 +0000 (17:19 +0000)]
Fix `ld.lld --help` message.

llvm-svn: 337405

6 years ago[docs] Update GoldPlugin documentation
Teresa Johnson [Wed, 18 Jul 2018 17:10:17 +0000 (17:10 +0000)]
[docs] Update GoldPlugin documentation

Summary:
Updated and reorganized. Made the following additions:
1) How to see if ld.gold is installed, and whether it is the current
default.
2) How to install ld.gold as the default or alternatively use
-fuse-ld=gold.
3) Move the part about installing the newly built ld-new as the default
to the prior section and how to use --enable-gold=default to do it
automatically on install.
4) Add a note about ld.bfd supporting plugins but indicate that it is
not tested by the LLVM project and gold is the recommended linker for
use with the gold plugin.

Fixes PR32760.

Reviewers: davide

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D49490

llvm-svn: 337404

6 years ago[libFuzzer] Create single template for visiting Inline8bitCounters
Max Moroz [Wed, 18 Jul 2018 17:03:27 +0000 (17:03 +0000)]
[libFuzzer] Create single template for visiting Inline8bitCounters

Summary:
Created IterateInline8bitCounters, a single template for visiting  Inline8bitCounters (nested for loop)
Made InitializeUnstableCounters and UpdateUnstableCounters both send a lambda to IterateInline8bitCounters.

Patch by Kyungtak Woo (@kevinwkt).

Reviewers: Dor1s, metzman, kcc, morehouse

Reviewed By: metzman, morehouse

Subscribers: delcypher, llvm-commits, #sanitizers

Differential Revision: https://reviews.llvm.org/D49453

llvm-svn: 337403

6 years ago[RegAlloc][NFC] Fix the help string of the option "huge-size-for-split".
Wei Mi [Wed, 18 Jul 2018 16:56:33 +0000 (16:56 +0000)]
[RegAlloc][NFC] Fix the help string of the option "huge-size-for-split".

llvm-svn: 337402

6 years ago[llvm-objdump] Add -demangle (-C) option
Paul Semel [Wed, 18 Jul 2018 16:39:21 +0000 (16:39 +0000)]
[llvm-objdump] Add -demangle (-C) option

Differential Revision: https://reviews.llvm.org/D49043

llvm-svn: 337401

6 years ago[NFC][X86][AArch64][DAGCombine] More tests for optimizeSetCCOfSignedTruncationCheck()
Roman Lebedev [Wed, 18 Jul 2018 16:19:06 +0000 (16:19 +0000)]
[NFC][X86][AArch64][DAGCombine] More tests for optimizeSetCCOfSignedTruncationCheck()

At least one of these cases is more canonical,
so we really do have to handle it.
https://godbolt.org/g/pkzP3X
https://rise4fun.com/Alive/pQyh

llvm-svn: 337400

6 years ago[llvm-objcopy] %python wants to be in quotes, because it might contain spaces
Benjamin Kramer [Wed, 18 Jul 2018 16:17:53 +0000 (16:17 +0000)]
[llvm-objcopy] %python wants to be in quotes, because it might contain spaces

llvm-svn: 337399

6 years ago[MC] Fix nested macro body parsing
Nirav Dave [Wed, 18 Jul 2018 16:17:03 +0000 (16:17 +0000)]
[MC] Fix nested macro body parsing

Add missing .rep case in nestlevel checking for macro body parsing.

llvm-svn: 337398

6 years agoFix variables.test after D49018
Stella Stamenova [Wed, 18 Jul 2018 15:50:24 +0000 (15:50 +0000)]
Fix variables.test after D49018

Summary: This one fixes variables.test after D49018. The test was broken because D49018 adds a location information to variables, but I hadn't noticed that, because I used 32-bit build to run tests, so the test looked to me already broken before that commit (the test relies on mangled names, but the mangling schemes are different for 32-bit and 64-bit).

Reviewers: stella.stamenova, lldb-commits

Reviewed By: stella.stamenova

Patch By: Aleksandr Urakov

Differential Revision: https://reviews.llvm.org/D49475

llvm-svn: 337397

6 years ago[clangd] Also get scope for RK_pattern completion results.
Eric Liu [Wed, 18 Jul 2018 15:31:14 +0000 (15:31 +0000)]
[clangd] Also get scope for RK_pattern completion results.

For exmaple, clas field candidates in constructor initializers can be
RK_Pattern, but they can still have scopes.

llvm-svn: 337396

6 years ago[windows] Use a well-known path for ComSpec if we fail to retrieve it
Stella Stamenova [Wed, 18 Jul 2018 15:21:54 +0000 (15:21 +0000)]
[windows] Use a well-known path for ComSpec if we fail to retrieve it

Summary: Right now we always try to retrieve ComSpec and if we fail, we give up. This rarely fails, but we can update the logic so that we fail even less frequently. Since there is a well-known path (albeit not always correct), try the path when we failed to retrieve it. Note that on other platforms, we generally just return a well-known path without any checking.

Reviewers: asmith, zturner, labath

Reviewed By: zturner, labath

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D49451

llvm-svn: 337395

6 years ago[CodeComplete] Allow getDeclaration on RK_Pattern result.
Eric Liu [Wed, 18 Jul 2018 15:17:52 +0000 (15:17 +0000)]
[CodeComplete] Allow getDeclaration on RK_Pattern result.

Summary:
RK_Pattern results can also have associated declarations e.g. field
decls in constructor initializers.

Reviewers: bkramer

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D49484

llvm-svn: 337394

6 years ago[lit, lldbsuite] Remove tests that are duplicated between lit and lldb-suite
Stella Stamenova [Wed, 18 Jul 2018 15:16:54 +0000 (15:16 +0000)]
[lit, lldbsuite] Remove tests that are duplicated between lit and lldb-suite

Summary: Several tests exist in both lit and lldbsuite. This removes the lit version of the duplicated tests.

Reviewers: asmith, zturner

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D49450

llvm-svn: 337393

6 years ago[mips] Fix predicate for the MipsTruncIntFP pattern
Simon Atanasyan [Wed, 18 Jul 2018 14:11:22 +0000 (14:11 +0000)]
[mips] Fix predicate for the MipsTruncIntFP pattern

This is a follow-up to the rL337171. This patch fixes regression
introduced by the r337171 and enables MipsTruncIntFP pattern.

Differential revision: https://reviews.llvm.org/D49469

llvm-svn: 337392

6 years ago[x86/SLH] Add the design document for Speculative Load Hardening,
Chandler Carruth [Wed, 18 Jul 2018 14:05:14 +0000 (14:05 +0000)]
[x86/SLH] Add the design document for Speculative Load Hardening,
a Spectre v1 mitigation.

This was initially posted w/ the patch implementing this, got some basic
review there. Also, it is generated from a the Google doc that I shared
as part of the Speculative Load Hardening RFC and which has seen pretty
widespread review at this point.

However, as the patches are landing in LLVM, I wanted to land the docs
as well. But it seemed like a bad idea to have them in the same commit
in case of reverts or other things. So the docs are split out here.

Thanks for all the review so far, and further review and improvements to
the documentation here welcome. Please feel free to keep hammering on
the code review or Google document.

Note that this is a markdown document which Sphinx doesn't yet process.
But we can add support for that after and this should get picked up
(and I'm preparing patches for that). Also, this gets the document
itself into a nice shared place where we can iterate on it.

Differential Revision: https://reviews.llvm.org/D49433

llvm-svn: 337391

6 years ago[SLPVectorizer] Avoid duplicate scalar cost calculations in BoUpSLP::getEntryCost...
Simon Pilgrim [Wed, 18 Jul 2018 13:53:55 +0000 (13:53 +0000)]
[SLPVectorizer] Avoid duplicate scalar cost calculations in BoUpSLP::getEntryCost. NFCI.

Pulled out from D49225, we have a lot of repeated scalar cost calculations, often with arguments that don't look the same but turn out to be.

llvm-svn: 337390

6 years ago[Support] Build fix for Haiku when checking for a local filesystem
Tim Northover [Wed, 18 Jul 2018 13:42:18 +0000 (13:42 +0000)]
[Support] Build fix for Haiku when checking for a local filesystem

Haiku does not expose information about local versus remote mounts, so just
return false, like Cygwin.

Patch by Niels Sascha Reedijk.

llvm-svn: 337389

6 years agoClear properties inadvertantly added to tests in R336379
Erich Keane [Wed, 18 Jul 2018 13:07:13 +0000 (13:07 +0000)]
Clear properties inadvertantly added to tests in R336379

llvm-svn: 337388

6 years ago[X86][SSE] Remove BLENDPD canonicalization from combineTargetShuffle
Simon Pilgrim [Wed, 18 Jul 2018 13:01:20 +0000 (13:01 +0000)]
[X86][SSE] Remove BLENDPD canonicalization from combineTargetShuffle

When rL336971 removed the scalar-fp isel patterns, we lost the need for this canonicalization - commutation/folding can handle everything else.

llvm-svn: 337387

6 years agoARM: stop explicitly marking armv7k libcalls as hard-float. NFC.
Tim Northover [Wed, 18 Jul 2018 12:37:43 +0000 (12:37 +0000)]
ARM: stop explicitly marking armv7k libcalls as hard-float. NFC.

Since the triple's default is hard float, the libcalls will already use VFP
registers.

llvm-svn: 337386