SuccessChanges

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. [InstCombine] Fix select operand simplification with undef (PR47696) (details)
  2. [PDB] Use one func id DenseMap instead of per-source maps, NFC (details)
  3. [lit] Fix Python 2/3 compat in new winreg search code (details)
  4. [CMake][Fuchsia] Don't set WIN32 API, rely on autodetection (details)
  5. Raland D87318 [LLD][PowerPC] Add support for R_PPC64_GOT_TLSGD_PCREL34 used in TLS General Dynamic (details)
  6. [clang][Sema] Fix PR47676: Handle dependent AltiVec C-style cast (details)
  7. [AArch64][GlobalISel] Camp oversize v4s64 G_FPEXT operations. (details)
Commit 9d1c8c0ba94a273c53829f0800335045e547db88 by nikita.ppv
[InstCombine] Fix select operand simplification with undef (PR47696)

When replacing X == Y ? f(X) : Z with X == Y ? f(Y) : Z, make sure
that Y cannot be undef. If it may be undef, we might end up picking
a different value for undef in the comparison and the select
operand.
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineInternal.h
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
The file was modifiedllvm/test/Transforms/InstCombine/select.ll
The file was modifiedllvm/test/Transforms/InstCombine/select-binop-cmp.ll
Commit 5d46d7e8b288a52de1eff97d6c5b44039ede6661 by rnk
[PDB] Use one func id DenseMap instead of per-source maps, NFC

This avoids some DenseMap copies when /Zi is in use, and results in
fewer data structures.

Differential Revision: https://reviews.llvm.org/D88617
The file was modifiedlld/COFF/PDB.cpp
The file was modifiedlld/COFF/TypeMerger.h
The file was modifiedlld/COFF/DebugTypes.h
The file was modifiedlld/COFF/DebugTypes.cpp
Commit d12ae042e17b27ebc8d2b5ae3d8dd5f88384d093 by rnk
[lit] Fix Python 2/3 compat in new winreg search code

This should fix the test failures on the clang win64 bot:
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/18830
It has been red since Sept 23-ish.

This was subtle to debug. Windows has 'find' and 'sort' utilities in
C:\Windows\system32, but they don't support all the same flags as the
coreutils programs. I configured the buildbot above with Python 2.7
64-bit (hey, it was set up in 2016). When I installed git for Windows, I
opted to add all the Unix utilities that come with git to the system
PATH. This is *almost* enough to make the LLVM tests pass, but not
quite, because if you use the system PATH, the Windows version of find
and sort come first, but the tests that use diff, cmp, etc, will all
pass. So only a handful of tests will fail, and with cryptic error
messages.

The code changed in this CL doesn't work with Python 2. Before
Python 3.2, the winreg.OpenKey function did not accept the `access=`
keyword argument, the caller was required to pass an unused `reserved`
positional argument of 0. The try/except/pass around the OpenKey
operation masked this usage error in Python 2.

Further, the result of the registry operation has to be converted from
unicode to add it to the environment, but that was incidental.
The file was modifiedllvm/utils/lit/lit/llvm/config.py
Commit de47e7122f69d56399c4f8864ba279e5ce635970 by phosek
[CMake][Fuchsia] Don't set WIN32 API, rely on autodetection

We prefer autodetection here to avoid persisting this configuration
in the generated __config header which is shared across targets.

Differential Revision: https://reviews.llvm.org/D88694
The file was modifiedclang/cmake/caches/Fuchsia-stage2.cmake
Commit 88f2fe5cad6cc3a3830448cb8a88b52ee449f2d1 by i
Raland D87318 [LLD][PowerPC] Add support for R_PPC64_GOT_TLSGD_PCREL34 used in TLS General Dynamic

Add Thread Local Storage support for the 34 bit relocation R_PPC64_GOT_TLSGD_PCREL34 used in General Dynamic.

The compiler will produce code that looks like:
```
pla r3, x@got@tlsgd@pcrel            R_PPC64_GOT_TLSGD_PCREL34
bl __tls_get_addr@notoc(x@tlsgd)     R_PPC64_TLSGD
                                     R_PPC64_REL24_NOTOC
```
LLD should be able to correctly compute the relocation for  R_PPC64_GOT_TLSGD_PCREL34 as well as do the following two relaxations where possible:
General Dynamic to Local Exec:
```
paddi r3, r13, x@tprel
nop
```
and General Dynamic to Initial Exec:
```
pld r3, x@got@tprel@pcrel
add r3, r3, r13
```
Note:
This patch adds support for the PC Relative (no TOC) version of General Dynamic on top of the existing support for the TOC version of General Dynamic.
The ABI does not provide any way to tell by looking only at the relocation `R_PPC64_TLSGD` when it is being used in a TOC instruction sequence or and when it is being used in a no TOC sequence. The TOC sequence should always be 4 byte aligned. This patch adds one to the offset of the relocation when it is being used in a no TOC sequence. In this way LLD can tell by looking at the alignment of the offset of `R_PPC64_TLSGD` whether or not it is being used as part of a TOC or no TOC sequence.

Reviewed By: NeHuang, sfertile, MaskRay

Differential Revision: https://reviews.llvm.org/D87318
The file was addedlld/test/ELF/ppc64-tls-pcrel-gd.s
The file was modifiedlld/ELF/Arch/PPC64.cpp
The file was modifiedlld/ELF/Relocations.cpp
Commit 35ecc7fe49ba881a77e8146b51870a60a52b211f by hubert.reinterpretcast
[clang][Sema] Fix PR47676: Handle dependent AltiVec C-style cast

Fix premature decision in the presence of type-dependent expression
operands on whether AltiVec vector initializations from single
expressions are "splat" operations.

Verify that the instantiation is able to determine the correct cast
semantics for both the scalar type and the vector type case.

Note that, because the change only affects the single-expression
case (and the target type is an AltiVec-style vector type), the
replacement of a parenthesized list with a parenthesized expression
does not change the semantics of the program in a program-observable
manner.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D88526
The file was modifiedclang/lib/Sema/SemaExpr.cpp
The file was addedclang/test/SemaTemplate/pr47676.cpp
Commit 4c265ce665630b74ad9f25f67cd2114714b9aaab by Amara Emerson
[AArch64][GlobalISel] Camp oversize v4s64 G_FPEXT operations.
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/legalize-fpext.mir
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp