FailedChanges

Summary

  1. [gicombiner] Add a CodeExpander to handle C++ fragments with variable expansion Summary: This will handle expansion of C++ fragments in the declarative combiner including custom predicates, and escapes into C++ to aid the migration effort. Fixed the -DLLVM_LINK_LLVM_DYLIB=ON using DISABLE_LLVM_LINK_LLVM_DYLIB when creating the library. Apparently it automatically links to libLLVM.dylib and we don't want that from tablegen. Reviewers: bogner, volkan Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68288 llvm-svn: 373551
  2. Attempt to remove linker workaround on the buildbots. I have no idea if this is still needed, but removing the workaround seems like the easiest way to test. I'll revert this change if the bots go red.
  3. [HIP] Use option -nogpulib to disable linking device lib Differential Revision: https://reviews.llvm.org/D68300
  4. Check for qualified function types after substituting into the operand of 'typeid'. This is a rare place where it's valid for a function type to be substituted but not valid for a qualified function type to be substituted, so needs a special check.
  5. [clang-format] Add ability to wrap braces after multi-line control statements Summary: Change the BraceWrappingFlags' AfterControlStatement from a bool to an enum with three values: * "Never": This is the default, and does not do any brace wrapping after control statements. * "MultiLine": This only wraps braces after multi-line control statements (this really only happens when a ColumnLimit is specified). * "Always": This always wraps braces after control statements. The first and last options are backwards-compatible with "false" and "true", respectively. The new "MultiLine" option is useful for when a wrapped control statement's indentation matches the subsequent block's indentation. It makes it easier to see at a glance where the control statement ends and where the block's code begins. For example: ``` if ( foo && bar ) { baz(); } ``` vs. ``` if ( foo && bar ) { baz(); } ``` Short control statements (1 line) do not wrap the brace to the next line, e.g. ``` if (foo) { bar(); } else { baz(); } ``` Reviewers: sammccall, owenpan, reuk, MyDeveloperDay, klimek Reviewed By: MyDeveloperDay Subscribers: MyDeveloperDay, cfe-commits Patch By: mitchell-stellar Tags: #clang-format, #clang, #clang-tools-extra Differential Revision: https://reviews.llvm.org/D68296
  6. [NFC] Fix unused variable in release builds
  7. [X86] Add v32i8 shuffle lowering strategy to recognize two v4i64 vectors truncated to v4i8 and concatenated into the lower 8 bytes with undef/zero upper bytes. This patch recognizes the shuffle pattern we get from a v8i64->v8i8 truncate when v8i64 isn't a legal type. With VLX we can use two VTRUNCs, unpckldq, and a insert_subvector. Diffrential Revision: https://reviews.llvm.org/D68374
  8. PR43547: substitute into the type of a non-type template parameter if it's instantiation-dependent, even if it's not dependent. There might be a SFINAE check in the parameter type.
  9. [compiler-rt] More optimization levels in signal_line.cpp test
  10. [X86] matchShuffleWithSHUFPD - use Zeroable element mask directly. NFCI. We can make use of the Zeroable mask to indicate which elements we can safely set to zero instead of creating a target shuffle mask on the fly. This only leaves one user of createTargetShuffleMask which we can hopefully get rid of in a similar manner. This is part of the work to fix PR43024 and allow us to use SimplifyDemandedElts to simplify shuffle chains - we need to get to a point where the target shuffle masks isn't adjusted by its source inputs in setTargetShuffleZeroElements but instead we cache them in a parallel Zeroable mask.
  11. [dsymutil] Don't overload LinkOptions. This should fix the build bots: error: declaration of ‘llvm::dsymutil::LinkOptions DsymutilOptions::LinkOptions’ [-fpermissive]
  12. AMDGPU/GlobalISel: Handle RegBankSelect of G_INSERT_VECTOR_ELT
  13. AMDGPU/GlobalISel: Split 64-bit vector extracts during RegBankSelect Register indexing 64-bit elements is possible on the SALU, but not the VALU. Handle splitting this into two 32-bit indexes. Extend waterfall loop handling to allow moving a range of instructions.
  14. AMDGPU/GlobalISel: Allow VGPR to index SGPR register We can still do a waterfall loop over the index if using a VGPR to index an SGPR. The result will still be a VGPR, but we can avoid the wide copy of the source register to a VGPR.
  15. AMDGPU/GlobalISel: Add some more tests for G_INSERT legalization
  16. AMDGPU/GlobalISel: Fix mutationIsSane assert v8s8 and This would try to do FewerElements to v9s8
  17. [HIP] Enable specifying different default gpu arch for HIP/CUDA. Reviewers: tra, yaxunl Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68394
  18. Fix build failure with GCC on identifier reusing. - GCC is different from clang and other compilers on that. https://godbolt.org/z/CeQE1V
  19. compiler-rt: move all __GLIBC_PREREQ into own header file Reviewers: eugenis Subscribers: dberris, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D68177
  20. [libc++] Add a per-target flag to include the generated config_site This allows propagating the include automatically to targets that depend on one of the libc++ targets such as the benchmarks. Note that the GoogleBenchmark build itself still needs to manually specify the -include, since I don't know of any way to have an external project link against one of the libc++ targets (which would propagate the -include automatically).
  21. AMDGPU/SILoadStoreOptimizer: Optimize scanning for mergeable instructions Summary: This adds a pre-pass to this optimization that scans through the basic block and generates lists of mergeable instructions with one list per unique address. In the optimization phase instead of scanning through the basic block for mergeable instructions, we now iterate over the lists generated by the pre-pass. The decision to re-optimize a block is now made per list, so if we fail to merge any instructions with the same address, then we do not attempt to optimize them in future passes over the block. This will help to reduce the time this pass spends re-optimizing instructions. In one pathological test case, this change reduces the time spent in the SILoadStoreOptimizer from 0.2s to 0.03s. This restructuring will also make it possible to implement further solutions in this pass, because we can now add less expensive checks to the pre-pass and filter instructions out early which will avoid the need to do the expensive scanning during the optimization pass. For example, checking for adjacent offsets is an inexpensive test we can move to the pre-pass. Reviewers: arsenm, pendingchaos, rampitec, nhaehnle, vpykhtin Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65961
  22. [ModuloSchedule] removeBranch() *before* creating the trip count condition The Hexagon code assumes there's no existing terminator when inserting its trip count condition check. This causes swp-stages5.ll to break. The generated code looks good to me, it is likely a permutation. I have disabled the new codegen path to keep everything green and will investigate along with the other 3-4 tests that have different codegen. Fixes expensive-checks build.
  23. gn build: (manually) merge r373622
  24. DeclBase/DeclCXX/DeclTemplate - silence static analyzer getAs<> null dereference warnings. NFCI. The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us.
  25. [libc++] Add missing revision number in ABI changelog
  26. [OPENMP]Fix emission of the declare target variables in device mode. Declare target variables must be emitted in device mode, target triples can be empty in this case.
  27. [dsymutil] Improve consistency by removing redundant namespaces (NFC) The dsymutil implementation file has a using-directive for the llvm namespace. This patch just removes redundant namespace qualifiers.
  28. [dsymutil] Tablegenify option parsing This patch reimplements command line option parsing in dsymutil with Tablegen and libOption. The main motivation for this change is to prevent clashes with other cl::opt options defined in llvm. Although it's a bit more heavyweight, it has some nice advantages such as no global static initializers and better separation between the code and the option definitions. I also used this opportunity to improve how dsymutil deals with incompatible options. Instead of having checks spread across the code, everything is now grouped together in verifyOptions. The fact that the options are no longer global means that we need to pass them around a bit more, but I think it's worth the trade-off. Differential revision: https://reviews.llvm.org/D68361
  29. [BPF] Handle offset reloc endpoint ending in the middle of chain properly During studying support for bitfield, I found an issue for an example like the one in test offset-reloc-middle-chain.ll. struct t1 { int c; }; struct s1 { struct t1 b; }; struct r1 { struct s1 a; }; #define _(x) __builtin_preserve_access_index(x) void test1(void *p1, void *p2, void *p3); void test(struct r1 *arg) { struct s1 *ps = _(&arg->a); struct t1 *pt = _(&arg->a.b); int *pi = _(&arg->a.b.c); test1(ps, pt, pi); } The IR looks like: %0 = llvm.preserve.struct.access(base, ...) %1 = llvm.preserve.struct.access(%0, ...) %2 = llvm.preserve.struct.access(%1, ...) using %0, %1 and %2 In this case, we need to generate three relocatiions corresponding to chains: (%0), (%0, %1) and (%0, %1, %2). After collecting all the chains, the current implementation process each chain (in a map) with code generation sequentially. For example, after (%0) is processed, the code may look like: %0 = base + special_global_variable // llvm.preserve.struct.access(base, ...) is delisted // from the instruction stream. %1 = llvm.preserve.struct.access(%0, ...) %2 = llvm.preserve.struct.access(%1, ...) using %0, %1 and %2 When processing chain (%0, %1), the current implementation tries to visit intrinsic llvm.preserve.struct.access(base, ...) to get some of its properties and this caused segfault. This patch fixed the issue by remembering all necessary information (kind, metadata, access_index, base) during analysis phase, so in code generation phase there is no need to examine the intrinsic call instructions. This also simplifies the code. Differential Revision: https://reviews.llvm.org/D68389
  30. [OPENMP]Improve diagnostics for not found declare target entries. We can point to the target region + emit parent functions names/real var names if they were not found in host module during device codegen.
  31. Revert "[Alignment][NFC] Allow constexpr Align" This reverts commit b3af236fb5fc6e50fcc1b54d868f0bff557f3fb1.
  32. [RISCV] Add obsolete aliases of fscsr, frcsr (fssr, frsr) These old aliases were renamed, but are still used by some projects (eg newlib). Differential Revision: https://reviews.llvm.org/D68392
  33. [NFC] Added missing changes for rL373614
  34. [Diagnostics] Bitwise negation of a boolean expr always evaluates to true; warn with -Wbool-operation Requested here: http://lists.llvm.org/pipermail/cfe-dev/2019-October/063452.html
  35. Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.
  36. ExprConstant - silence static analyzer getAs<> null dereference warnings. NFCI. The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us.
  37. Remove duplicate P->getAs<PointerType>() call. NFCI.
Revision 373651 by dsanders:
[gicombiner] Add a CodeExpander to handle C++ fragments with variable expansion

Summary:
This will handle expansion of C++ fragments in the declarative combiner
including custom predicates, and escapes into C++ to aid the migration
effort.

Fixed the -DLLVM_LINK_LLVM_DYLIB=ON using DISABLE_LLVM_LINK_LLVM_DYLIB when
creating the library. Apparently it automatically links to libLLVM.dylib
and we don't want that from tablegen.

Reviewers: bogner, volkan

Subscribers: mgorny, llvm-commits

Tags: #llvm

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

llvm-svn: 373551
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/unittests/CMakeLists.txtllvm.src/unittests/CMakeLists.txt
The file was added/llvm/trunk/unittests/TableGenllvm.src/unittests/TableGen
The file was added/llvm/trunk/unittests/TableGen/CMakeLists.txtllvm.src/unittests/TableGen/CMakeLists.txt
The file was added/llvm/trunk/unittests/TableGen/CodeExpanderTest.cppllvm.src/unittests/TableGen/CodeExpanderTest.cpp
The file was modified/llvm/trunk/utils/TableGen/CMakeLists.txtllvm.src/utils/TableGen/CMakeLists.txt
The file was modified/llvm/trunk/utils/TableGen/GICombinerEmitter.cppllvm.src/utils/TableGen/GICombinerEmitter.cpp
The file was added/llvm/trunk/utils/TableGen/GlobalISelllvm.src/utils/TableGen/GlobalISel
The file was added/llvm/trunk/utils/TableGen/GlobalISel/CMakeLists.txtllvm.src/utils/TableGen/GlobalISel/CMakeLists.txt
The file was added/llvm/trunk/utils/TableGen/GlobalISel/CodeExpander.cppllvm.src/utils/TableGen/GlobalISel/CodeExpander.cpp
The file was added/llvm/trunk/utils/TableGen/GlobalISel/CodeExpander.hllvm.src/utils/TableGen/GlobalISel/CodeExpander.h
The file was added/llvm/trunk/utils/TableGen/GlobalISel/CodeExpansions.hllvm.src/utils/TableGen/GlobalISel/CodeExpansions.h
Revision 373650 by ericwf:
Attempt to remove linker workaround on the buildbots.

I have no idea if this is still needed, but removing the
workaround seems like the easiest way to test.

I'll revert this change if the bots go red.
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/utils/docker/scripts/docker_update_bot.shlibcxx.src/utils/docker/scripts/docker_update_bot.sh
Revision 373649 by yaxunl:
[HIP] Use option -nogpulib to disable linking device lib

Differential Revision: https://reviews.llvm.org/D68300
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Driver/Options.tdclang.src/include/clang/Driver/Options.td
The file was modified/cfe/trunk/lib/Driver/ToolChains/Cuda.cppclang.src/lib/Driver/ToolChains/Cuda.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/HIP.cppclang.src/lib/Driver/ToolChains/HIP.cpp
The file was added/cfe/trunk/test/Driver/hip-no-device-libs.hipclang.src/test/Driver/hip-no-device-libs.hip
Revision 373648 by rsmith:
Check for qualified function types after substituting into the operand
of 'typeid'.

This is a rare place where it's valid for a function type to be
substituted but not valid for a qualified function type to be
substituted, so needs a special check.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.tdclang.src/include/clang/Basic/DiagnosticSemaKinds.td
The file was modified/cfe/trunk/include/clang/Sema/Sema.hclang.src/include/clang/Sema/Sema.h
The file was modified/cfe/trunk/lib/Sema/SemaExprCXX.cppclang.src/lib/Sema/SemaExprCXX.cpp
The file was modified/cfe/trunk/lib/Sema/SemaType.cppclang.src/lib/Sema/SemaType.cpp
The file was modified/cfe/trunk/test/SemaTemplate/instantiate-expr-4.cppclang.src/test/SemaTemplate/instantiate-expr-4.cpp
Revision 373647 by paulhoad:
[clang-format] Add ability to wrap braces after multi-line control statements

Summary:
Change the BraceWrappingFlags' AfterControlStatement from a bool to an enum with three values:

* "Never": This is the default, and does not do any brace wrapping after control statements.
* "MultiLine": This only wraps braces after multi-line control statements (this really only happens when a ColumnLimit is specified).
* "Always": This always wraps braces after control statements.

The first and last options are backwards-compatible with "false" and "true", respectively.

The new "MultiLine" option is useful for when a wrapped control statement's indentation matches the subsequent block's indentation. It makes it easier to see at a glance where the control statement ends and where the block's code begins. For example:

```
if (
  foo
  && bar )
{
  baz();
}
```

vs.

```
if (
  foo
  && bar ) {
  baz();
}
```

Short control statements (1 line) do not wrap the brace to the next line, e.g.

```
if (foo) {
  bar();
} else {
  baz();
}
```

Reviewers: sammccall, owenpan, reuk, MyDeveloperDay, klimek

Reviewed By: MyDeveloperDay

Subscribers: MyDeveloperDay, cfe-commits

Patch By: mitchell-stellar

Tags: #clang-format, #clang, #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D68296
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/docs/ClangFormatStyleOptions.rstclang.src/docs/ClangFormatStyleOptions.rst
The file was modified/cfe/trunk/include/clang/Format/Format.hclang.src/include/clang/Format/Format.h
The file was modified/cfe/trunk/lib/Format/Format.cppclang.src/lib/Format/Format.cpp
The file was modified/cfe/trunk/lib/Format/UnwrappedLineFormatter.cppclang.src/lib/Format/UnwrappedLineFormatter.cpp
The file was modified/cfe/trunk/lib/Format/UnwrappedLineParser.cppclang.src/lib/Format/UnwrappedLineParser.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTest.cppclang.src/unittests/Format/FormatTest.cpp
The file was modified/cfe/trunk/unittests/Format/FormatTestObjC.cppclang.src/unittests/Format/FormatTestObjC.cpp
Revision 373646 by rupprecht:
[NFC] Fix unused variable in release builds
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cppllvm.src/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
Revision 373645 by ctopper:
[X86] Add v32i8 shuffle lowering strategy to recognize two v4i64 vectors truncated to v4i8 and concatenated into the lower 8 bytes with undef/zero upper bytes.

This patch recognizes the shuffle pattern we get from a
v8i64->v8i8 truncate when v8i64 isn't a legal type.

With VLX we can use two VTRUNCs, unpckldq, and a insert_subvector.

Diffrential Revision: https://reviews.llvm.org/D68374
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cppllvm.src/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/min-legal-vector-width.llllvm.src/test/CodeGen/X86/min-legal-vector-width.ll
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-512.llllvm.src/test/CodeGen/X86/shuffle-vs-trunc-512.ll
Revision 373643 by rsmith:
PR43547: substitute into the type of a non-type template parameter if
it's instantiation-dependent, even if it's not dependent.

There might be a SFINAE check in the parameter type.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/SemaTemplate.cppclang.src/lib/Sema/SemaTemplate.cpp
The file was modified/cfe/trunk/test/SemaTemplate/temp_arg_nontype.cppclang.src/test/SemaTemplate/temp_arg_nontype.cpp
Revision 373642 by Vitaly Buka:
[compiler-rt] More optimization levels in signal_line.cpp test
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/signal_line.cppcompiler-rt.src/test/sanitizer_common/TestCases/Linux/signal_line.cpp
Revision 373641 by rksimon:
[X86] matchShuffleWithSHUFPD - use Zeroable element mask directly. NFCI.

We can make use of the Zeroable mask to indicate which elements we can safely set to zero instead of creating a target shuffle mask on the fly.

This only leaves one user of createTargetShuffleMask which we can hopefully get rid of in a similar manner.

This is part of the work to fix PR43024 and allow us to use SimplifyDemandedElts to simplify shuffle chains - we need to get to a point where the target shuffle masks isn't adjusted by its source inputs in setTargetShuffleZeroElements but instead we cache them in a parallel Zeroable mask.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cppllvm.src/lib/Target/X86/X86ISelLowering.cpp
Revision 373640 by Jonas Devlieghere:
[dsymutil] Don't overload LinkOptions.

This should fix the build bots:

  error: declaration of ‘llvm::dsymutil::LinkOptions
  DsymutilOptions::LinkOptions’ [-fpermissive]
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cppllvm.src/tools/dsymutil/dsymutil.cpp
Revision 373639 by arsenm:
AMDGPU/GlobalISel: Handle RegBankSelect of G_INSERT_VECTOR_ELT
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cppllvm.src/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/regbankselect-insert-vector-elt.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/regbankselect-insert-vector-elt.mir
Revision 373638 by arsenm:
AMDGPU/GlobalISel: Split 64-bit vector extracts during RegBankSelect

Register indexing 64-bit elements is possible on the SALU, but not the
VALU. Handle splitting this into two 32-bit indexes. Extend waterfall
loop handling to allow moving a range of instructions.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cppllvm.src/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.hllvm.src/lib/Target/AMDGPU/AMDGPURegisterBankInfo.h
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/regbankselect-extract-vector-elt.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/regbankselect-extract-vector-elt.mir
Revision 373637 by arsenm:
AMDGPU/GlobalISel: Allow VGPR to index SGPR register

We can still do a waterfall loop over the index if using a VGPR to
index an SGPR. The result will still be a VGPR, but we can avoid the
wide copy of the source register to a VGPR.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cppllvm.src/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/regbankselect-extract-vector-elt.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/regbankselect-extract-vector-elt.mir
Revision 373636 by arsenm:
AMDGPU/GlobalISel: Add some more tests for G_INSERT legalization
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mir
Revision 373635 by arsenm:
AMDGPU/GlobalISel: Fix mutationIsSane assert v8s8 and

This would try to do FewerElements to v9s8
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cppllvm.src/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
The file was modified/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-and.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/legalize-and.mir
Revision 373634 by hliao:
[HIP] Enable specifying different default gpu arch for HIP/CUDA.

Reviewers: tra, yaxunl

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D68394
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/Driver.cppclang.src/lib/Driver/Driver.cpp
The file was added/cfe/trunk/test/Driver/hip-default-gpu-arch.hipclang.src/test/Driver/hip-default-gpu-arch.hip
Revision 373633 by hliao:
Fix build failure with GCC on identifier reusing.

- GCC is different from clang and other compilers on that.
  https://godbolt.org/z/CeQE1V
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cppllvm.src/tools/dsymutil/dsymutil.cpp
Revision 373632 by Vitaly Buka:
compiler-rt: move all __GLIBC_PREREQ into own header file

Reviewers: eugenis

Subscribers: dberris, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D68177
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_getauxval.hcompiler-rt.src/lib/sanitizer_common/sanitizer_getauxval.h
The file was added/compiler-rt/trunk/lib/sanitizer_common/sanitizer_glibc_version.hcompiler-rt.src/lib/sanitizer_common/sanitizer_glibc_version.h
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cppcompiler-rt.src/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cppcompiler-rt.src/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.hcompiler-rt.src/lib/sanitizer_common/sanitizer_platform_limits_posix.h
Revision 373631 by Louis Dionne:
[libc++] Add a per-target flag to include the generated config_site

This allows propagating the include automatically to targets that
depend on one of the libc++ targets such as the benchmarks. Note
that the GoogleBenchmark build itself still needs to manually specify
the -include, since I don't know of any way to have an external project
link against one of the libc++ targets (which would propagate the -include
automatically).
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/CMakeLists.txtlibcxx.src/CMakeLists.txt
The file was modified/libcxx/trunk/benchmarks/CMakeLists.txtlibcxx.src/benchmarks/CMakeLists.txt
The file was modified/libcxx/trunk/src/CMakeLists.txtlibcxx.src/src/CMakeLists.txt
Revision 373630 by tstellar:
AMDGPU/SILoadStoreOptimizer: Optimize scanning for mergeable instructions

Summary:
This adds a pre-pass to this optimization that scans through the basic
block and generates lists of mergeable instructions with one list per unique
address.

In the optimization phase instead of scanning through the basic block for mergeable
instructions, we now iterate over the lists generated by the pre-pass.

The decision to re-optimize a block is now made per list, so if we fail to merge any
instructions with the same address, then we do not attempt to optimize them in
future passes over the block.  This will help to reduce the time this pass
spends re-optimizing instructions.

In one pathological test case, this change reduces the time spent in the
SILoadStoreOptimizer from 0.2s to 0.03s.

This restructuring will also make it possible to implement further solutions in
this pass, because we can now add less expensive checks to the pre-pass and
filter instructions out early which will avoid the need to do the expensive
scanning during the optimization pass. For example, checking for adjacent
offsets is an inexpensive test we can move to the pre-pass.

Reviewers: arsenm, pendingchaos, rampitec, nhaehnle, vpykhtin

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65961
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SILoadStoreOptimizer.cppllvm.src/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
Revision 373629 by jamesm:
[ModuloSchedule] removeBranch() *before* creating the trip count condition

The Hexagon code assumes there's no existing terminator when inserting its
trip count condition check.

This causes swp-stages5.ll to break. The generated code looks good to me,
it is likely a permutation. I have disabled the new codegen path to keep
everything green and will investigate along with the other 3-4 tests
that have different codegen.

Fixes expensive-checks build.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/ModuloSchedule.cppllvm.src/lib/CodeGen/ModuloSchedule.cpp
The file was modified/llvm/trunk/test/CodeGen/Hexagon/swp-stages5.llllvm.src/test/CodeGen/Hexagon/swp-stages5.ll
Revision 373627 by nico:
gn build: (manually) merge r373622
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/gn/secondary/llvm/tools/dsymutil/BUILD.gnllvm.src/utils/gn/secondary/llvm/tools/dsymutil/BUILD.gn
Revision 373626 by rksimon:
DeclBase/DeclCXX/DeclTemplate - silence static analyzer getAs<> null dereference warnings. NFCI.

The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/AST/DeclBase.cppclang.src/lib/AST/DeclBase.cpp
The file was modified/cfe/trunk/lib/AST/DeclCXX.cppclang.src/lib/AST/DeclCXX.cpp
The file was modified/cfe/trunk/lib/AST/DeclTemplate.cppclang.src/lib/AST/DeclTemplate.cpp
Revision 373625 by Louis Dionne:
[libc++] Add missing revision number in ABI changelog
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/lib/abi/CHANGELOG.TXTlibcxx.src/lib/abi/CHANGELOG.TXT
Revision 373624 by abataev:
[OPENMP]Fix emission of the declare target variables in device mode.

Declare target variables must be emitted in device mode, target triples
can be empty in this case.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cppclang.src/lib/CodeGen/CGOpenMPRuntime.cpp
The file was modified/cfe/trunk/test/OpenMP/declare_target_codegen.cppclang.src/test/OpenMP/declare_target_codegen.cpp
Revision 373623 by Jonas Devlieghere:
[dsymutil] Improve consistency by removing redundant namespaces (NFC)

The dsymutil implementation file has a using-directive for the llvm
namespace. This patch just removes redundant namespace qualifiers.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cppllvm.src/tools/dsymutil/dsymutil.cpp
Revision 373622 by Jonas Devlieghere:
[dsymutil] Tablegenify option parsing

This patch reimplements command line option parsing in dsymutil with
Tablegen and libOption. The main motivation for this change is to
prevent clashes with other cl::opt options defined in llvm. Although
it's a bit more heavyweight, it has some nice advantages such as no
global static initializers and better separation between the code and
the option definitions.

I also used this opportunity to improve how dsymutil deals with
incompatible options. Instead of having checks spread across the code,
everything is now grouped together in verifyOptions. The fact that the
options are no longer global means that we need to pass them around a
bit more, but I think it's worth the trade-off.

Differential revision: https://reviews.llvm.org/D68361
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/dsymutil/cmdline.testllvm.src/test/tools/dsymutil/cmdline.test
The file was modified/llvm/trunk/tools/dsymutil/CMakeLists.txtllvm.src/tools/dsymutil/CMakeLists.txt
The file was added/llvm/trunk/tools/dsymutil/Options.tdllvm.src/tools/dsymutil/Options.td
The file was modified/llvm/trunk/tools/dsymutil/dsymutil.cppllvm.src/tools/dsymutil/dsymutil.cpp
Revision 373621 by yhs:
[BPF] Handle offset reloc endpoint ending in the middle of chain properly

During studying support for bitfield, I found an issue for
an example like the one in test offset-reloc-middle-chain.ll.
  struct t1 { int c; };
  struct s1 { struct t1 b; };
  struct r1 { struct s1 a; };
  #define _(x) __builtin_preserve_access_index(x)
  void test1(void *p1, void *p2, void *p3);
  void test(struct r1 *arg) {
    struct s1 *ps = _(&arg->a);
    struct t1 *pt = _(&arg->a.b);
    int *pi = _(&arg->a.b.c);
    test1(ps, pt, pi);
  }

The IR looks like:
  %0 = llvm.preserve.struct.access(base, ...)
  %1 = llvm.preserve.struct.access(%0, ...)
  %2 = llvm.preserve.struct.access(%1, ...)
  using %0, %1 and %2

In this case, we need to generate three relocatiions
corresponding to chains: (%0), (%0, %1) and (%0, %1, %2).
After collecting all the chains, the current implementation
process each chain (in a map) with code generation sequentially.
For example, after (%0) is processed, the code may look like:
  %0 = base + special_global_variable
  // llvm.preserve.struct.access(base, ...) is delisted
  // from the instruction stream.
  %1 = llvm.preserve.struct.access(%0, ...)
  %2 = llvm.preserve.struct.access(%1, ...)
  using %0, %1 and %2

When processing chain (%0, %1), the current implementation
tries to visit intrinsic llvm.preserve.struct.access(base, ...)
to get some of its properties and this caused segfault.

This patch fixed the issue by remembering all necessary
information (kind, metadata, access_index, base) during
analysis phase, so in code generation phase there is
no need to examine the intrinsic call instructions.
This also simplifies the code.

Differential Revision: https://reviews.llvm.org/D68389
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/BPF/BPFAbstractMemberAccess.cppllvm.src/lib/Target/BPF/BPFAbstractMemberAccess.cpp
The file was added/llvm/trunk/test/CodeGen/BPF/CORE/offset-reloc-middle-chain.llllvm.src/test/CodeGen/BPF/CORE/offset-reloc-middle-chain.ll
Revision 373620 by abataev:
[OPENMP]Improve diagnostics for not found declare target entries.

We can point to the target region + emit parent functions names/real var
names if they were not found in host module during device codegen.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cppclang.src/lib/CodeGen/CGOpenMPRuntime.cpp
The file was modified/cfe/trunk/test/OpenMP/target_messages.cppclang.src/test/OpenMP/target_messages.cpp
Revision 373619 by gchatelet:
Revert "[Alignment][NFC] Allow constexpr Align"

This reverts commit b3af236fb5fc6e50fcc1b54d868f0bff557f3fb1.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/Alignment.hllvm.src/include/llvm/Support/Alignment.h
The file was modified/llvm/trunk/include/llvm/Support/MathExtras.hllvm.src/include/llvm/Support/MathExtras.h
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64StackTagging.cppllvm.src/lib/Target/AArch64/AArch64StackTagging.cpp
The file was modified/llvm/trunk/unittests/Support/AlignmentTest.cppllvm.src/unittests/Support/AlignmentTest.cpp
The file was modified/llvm/trunk/unittests/Support/MathExtrasTest.cppllvm.src/unittests/Support/MathExtrasTest.cpp
Revision 373618 by edjones:
[RISCV] Add obsolete aliases of fscsr, frcsr (fssr, frsr)

These old aliases were renamed, but are still used by some projects (eg newlib).

Differential Revision: https://reviews.llvm.org/D68392
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/RISCV/RISCVInstrInfoF.tdllvm.src/lib/Target/RISCV/RISCVInstrInfoF.td
The file was modified/llvm/trunk/test/MC/RISCV/rvf-aliases-valid.sllvm.src/test/MC/RISCV/rvf-aliases-valid.s
Revision 373616 by xbolva00:
[NFC] Added missing changes for rL373614
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.tdclang.src/include/clang/Basic/DiagnosticSemaKinds.td
Revision 373614 by xbolva00:
[Diagnostics] Bitwise negation of a boolean expr always evaluates to true; warn with -Wbool-operation

Requested here:
http://lists.llvm.org/pipermail/cfe-dev/2019-October/063452.html
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/SemaExpr.cppclang.src/lib/Sema/SemaExpr.cpp
The file was added/cfe/trunk/test/Sema/warn-bitwise-negation-bool.cclang.src/test/Sema/warn-bitwise-negation-bool.c
Revision 373613 by rksimon:
Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CodeGenModule.cppclang.src/lib/CodeGen/CodeGenModule.cpp
Revision 373612 by rksimon:
ExprConstant - silence static analyzer getAs<> null dereference warnings. NFCI.

The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/AST/ExprConstant.cppclang.src/lib/AST/ExprConstant.cpp
Revision 373611 by rksimon:
Remove duplicate P->getAs<PointerType>() call. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/AST/ASTContext.cppclang.src/lib/AST/ASTContext.cpp