SuccessChanges

Summary

  1. [flang][msvc] Workaround 'forgotten' symbols in FoldOperation. NFC. (details)
  2. [APFloat] Improve asserts in isSignificandAllOnes and isSignificandAllZeros so they protect shift operations from undefined behavior. (details)
  3. [ELF] --wrap: don't unnecessarily expose __real_ (details)
  4. Revert "[llvm-exegesis] Add option to check the hardware support for a given feature before benchmarking." (details)
  5. [SCEV][NFC] Introduce isKnownPredicateAt method (details)
Commit d4a1db4f3fd7ce701454127465dd0ddbdb7face2 by llvm-project
[flang][msvc] Workaround 'forgotten' symbols in FoldOperation. NFC.

This resolves an issue where the Microsoft compiler 'forgets' symbols when using constexpr in a lambda in a templated function. The symbols are:

1. The implicit lambda captures `context` and `convert`. Fix by making them explicit captures. The error message was:
```
fold-implementation.h(1220): error C2065: 'convert': undeclared identifier
```

2. The function template argument FROMCAT. Fix by storing it in a temporary constexpr variable inside the function. The error message was:
```
fold-implementation.h(1216): error C2065: 'FROMCAT': undeclared identifier
```

This patch is part of the series to make flang compilable with MS Visual Studio <http://lists.llvm.org/pipermail/flang-dev/2020-July/000448.html>.

Reviewed By: klausler

Differential Revision: https://reviews.llvm.org/D88504
The file was modifiedflang/lib/Evaluate/fold-implementation.h
Commit 12bdd427b33a75bd7abb5d4cb095d0b983328034 by craig.topper
[APFloat] Improve asserts in isSignificandAllOnes and isSignificandAllZeros so they protect shift operations from undefined behavior.

For example, the assert in isSignificandAllZeros allowed NumHighBits
to be integerPartWidth. But since it is used directly as a shift amount
it must be less than integerPartWidth.
The file was modifiedllvm/lib/Support/APFloat.cpp
Commit 4e9277eda1874ead60f2c9d7cdb558fd19b32076 by i
[ELF] --wrap: don't unnecessarily expose __real_

The routing rules are:

sym -> __wrap_sym
__real_sym -> sym

__wrap_sym and sym are routing targets, so they need to be exposed to the symbol
table. __real_sym is not and can be eliminated if not used by regular object.
The file was modifiedlld/ELF/Driver.cpp
The file was modifiedlld/test/ELF/lto/wrap-1.ll
Commit 2c9dc7bbbf514b1ed7bdefacb3213beae5916b3d by michael.hliao
Revert "[llvm-exegesis] Add option to check the hardware support for a given feature before benchmarking."

This reverts commit 4fcd1a8e6528ca42fe656f2745e15d2b7f5de495 as
`llvm/test/tools/llvm-exegesis/X86/lbr/mov-add.s` failed on hosts
without LBR supported if the build has LIBPFM enabled. On that host,
`perf_event_open` fails with `EOPNOTSUPP` on LBR config. That change's
basic assumption

> If this is run on a non-supported hardware, it will produce all zeroes for latency.

could not stand as `perf_event_open` system call will fail if the
underlying hardware really don't have LBR supported.
The file was modifiedllvm/tools/llvm-exegesis/lib/X86/X86Counter.cpp
The file was modifiedllvm/tools/llvm-exegesis/lib/Target.h
The file was modifiedllvm/tools/llvm-exegesis/llvm-exegesis.cpp
The file was modifiedllvm/test/tools/llvm-exegesis/X86/lbr/lit.local.cfg
The file was modifiedllvm/tools/llvm-exegesis/lib/X86/X86Counter.h
The file was modifiedllvm/tools/llvm-exegesis/lib/X86/Target.cpp
Commit c93a39dd1fdd74cb87ef65cfd42d81c62a07ed91 by mkazantsev
[SCEV][NFC] Introduce isKnownPredicateAt method

We can query known predicates in different points, respecting
their dominating conditions.
The file was modifiedllvm/lib/Analysis/ScalarEvolution.cpp
The file was modifiedllvm/include/llvm/Analysis/ScalarEvolution.h