[z/OS][Clang] Reland Add wrapper headers to avoid macro name conflicts (#204472) (#207420)
Some z/OS system headers define macros (e.g. __time, __math) that
conflict with user identifiers and break compilation. These wrappers
include the system headers and neutralize the problematic macros.
Reland of 04079deb547c91eff6c6e2b820dbe6937c72fcf5.
Add systemz-registered-target requirement to zos-guard.c.
[libc++] Fix SPEC benchmarks not producing a .lnt result file (#207450)
The refactoring in 471e8f7f94e7 removed the output of a .lnt file, which
is necessary for interoperation with consolidate-benchmarks.
[clang] accept member specializations declared in class scope
Explicit specializations are not restricted to namespace scope since CWG727 was
accepted as a DR.
Also fixes a crash upon error recovery in this case which was a recent
unreleased regression.
Fixes #206866
[VPlan] Add VPBuilder::createVScale (NFC) (#207401)
Add a VPBuilder::createVScale helper (mirroring IRBuilder::CreateVScale)
and use it at the existing sites that create a VScale VPInstruction.
[PowerPC] Change arguments of PPCEmitTimePseudo
Like #198861 but for PPCEmitTimePseudo.
This is not NFC. The asm name of LDtocBA was set to #LDtocCPT,
which is the name of the instruction before. This looks like a
cut`n`paste error, and I changed the asm name.
[PowerPC] Remove asmstring from PPCPostRAExpPseudo
The `asmstring` is only used in the `PPCInstPrinter`, but these pseudos are replaced post-RA. Remove the strings since they are never used.
[ValueTracking] Fix frexp exponent range for nan/inf inputs (#202447)
computeConstantRange() returns a bounded range for the exponent result of
llvm.frexp.
frexp's exponent is unspecified when the argument is nan or inf,
so we can assign such a range only if we know the argument is
not nan or inf.
[InstCombine] Don't blindly copy ninf when narrowing fptrunc(binop(fpext, fpext)) (#202489)
The fold narrows fptrunc(BO(fpext x, fpext y)) -> BO(x, y) for
fadd/fsub/fmul/fdiv, recomputing the binop directly in the narrower
type.
Even if the original BO returns a finite result, the fptrunc may produce
inf. Therefore even if the original BO has ninf, we have to drop it on
the new BO unless the original fptrunc *also* has ninf.