Changes

Summary

  1. [ARM][NFC] Tidy up subtarget frame pointer routines (details)
  2. Allow building for release with EXPENSIVE_CHECKS (details)
  3. Revert "Re-Revert "DirectoryWatcher: add an implementation for Windows"" (details)
  4. [InstCombine][test] add tests for select-of-bit-manip; NFC (details)
  5. [amdgpu] Improve the from f32 to i64. (details)
  6. [MIRPrinter] Add machine metadata support. (details)
  7. [lld/mac] Give __DATA,__thread_ptrs type S_THREAD_LOCAL_VARIABLE_POINTERS (details)
  8. [lld/mac] Make sure __thread_ptrs is in front of __thread_bss (details)
  9. [gn build] (manually) port b9c05aff205b (MIRTests) (details)
Commit 18dbe6897857944653ee8f68dca8d63bc38aaff8 by tomas.matheson
[ARM][NFC] Tidy up subtarget frame pointer routines

getFramePointerReg only depends on information in ARMSubtarget,
so move it in there so it can be accessed from more places.

Make use of ARMSubtarget::getFramePointerReg to remove duplicated code.

The main use of useR7AsFramePointer is getFramePointerReg, so inline it.

Differential Revision: https://reviews.llvm.org/D104476
The file was modifiedllvm/lib/Target/ARM/ARMSubtarget.h
The file was modifiedllvm/lib/Target/ARM/ARMFrameLowering.cpp
The file was modifiedllvm/lib/Target/ARM/Thumb1FrameLowering.cpp
The file was modifiedllvm/lib/Target/ARM/ARMAsmPrinter.cpp
The file was modifiedllvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
Commit 1bcfa84ae908ddcf042163345ffee2d247669e60 by tomas.matheson
Allow building for release with EXPENSIVE_CHECKS

D97225 moved LazyCallGraph verify() calls behind EXPENSIVE_CHECKS,
but verity() is defined for debug builds only so this had the unintended
effect of breaking release builds with EXPENSIVE_CHECKS.

Fix by enabling verify() for both debug and EXPENSIVE_CHECKS.

Differential Revision: https://reviews.llvm.org/D104514
The file was modifiedllvm/lib/Analysis/LazyCallGraph.cpp
The file was modifiedllvm/include/llvm/Analysis/LazyCallGraph.h
Commit decfad7d8e9b268654dd2d76a7f5f777502b60a6 by Saleem Abdulrasool
Revert "Re-Revert "DirectoryWatcher: add an implementation for Windows""

This reverts commit fb32de9e97af0921242a021e30020ffacf7aa6e2.

Remove the secondary synchronization point as noted by Adrian.  This is
technically only to make the builders happier about tests and should not
be needed.  This also pushes the condition variable setting to after the
watch is actually established (which was the source of the original race
condition, but would normally succeed as the thread shouldn't get put to
sleep immediately on the trigger of the condition variable).

This also was pretested on the chromium builders:
https://ci.chromium.org/ui/p/chromium/builders/try/win_upload_clang/1612/overview.
The file was modifiedclang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp
The file was modifiedclang/unittests/DirectoryWatcher/CMakeLists.txt
Commit 328b21a3389cf04e50bf9fb7b295c1d6af6f60d3 by spatel
[InstCombine][test] add tests for select-of-bit-manip; NFC
The file was addedllvm/test/Transforms/InstCombine/intrinsic-select.ll
Commit 940efa4f6981964c95a69ff412378722438607bf by michael.hliao
[amdgpu] Improve the from f32 to i64.

- Take the same principle as the conversion from f64 to i64 with extra
  necessary pre- and post-processing. It helps to reduce that conversion
  sequence by half compared to legacy one.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D104427
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fptoui.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fptosi.mir
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
The file was modifiedllvm/test/CodeGen/AMDGPU/fp_to_uint.ll
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/fp_to_sint.ll
Commit b9c05aff205bab3f8ca639e44b825277d6cf48a9 by michael.hliao
[MIRPrinter] Add machine metadata support.

- Distinct metadata needs generating in the codegen to attach correct
  AAInfo on the loads/stores after lowering, merging, and other relevant
  transformations.
- This patch adds 'MachhineModuleSlotTracker' to help assign slot
  numbers to these newly generated unnamed metadata nodes.
- To help 'MachhineModuleSlotTracker' track machine metadata, the
  original 'SlotTracker' is rebased from 'AbstractSlotTrackerStorage',
  which provides basic interfaces to create/retrive metadata slots. In
  addition, once LLVM IR is processsed, additional hooks are also
  introduced to help collect machine metadata and assign them slot
  numbers.
- Finally, if there is any such machine metadata, 'MIRPrinter' outputs
  an additional 'machineMetadataNodes' field containing all the
  definition of those nodes.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D103205
The file was addedllvm/unittests/MIR/MachineMetadata.cpp
The file was modifiedllvm/lib/CodeGen/CMakeLists.txt
The file was modifiedllvm/unittests/CMakeLists.txt
The file was addedllvm/unittests/MIR/CMakeLists.txt
The file was modifiedllvm/include/llvm/CodeGen/MIRYamlMapping.h
The file was modifiedllvm/include/llvm/IR/ModuleSlotTracker.h
The file was modifiedllvm/unittests/CodeGen/CMakeLists.txt
The file was addedllvm/include/llvm/CodeGen/MachineModuleSlotTracker.h
The file was addedllvm/lib/CodeGen/MachineModuleSlotTracker.cpp
The file was modifiedllvm/lib/IR/AsmWriter.cpp
The file was modifiedllvm/lib/CodeGen/MIRPrinter.cpp
Commit 17271ece0da69c4dde0bbab60883b7fdd05be131 by thakis
[lld/mac] Give __DATA,__thread_ptrs type S_THREAD_LOCAL_VARIABLE_POINTERS

...instead of S_NON_LAZY_SYMBOL_POINTERS. This matches ld64.

Part of PR50769.

While here, also remove an old TODO that was done in D87178.

Differential Revision: https://reviews.llvm.org/D104594
The file was modifiedlld/test/MachO/tlv.s
The file was modifiedlld/MachO/SyntheticSections.h
The file was modifiedlld/test/MachO/tlv-dylib.s
The file was modifiedlld/MachO/SyntheticSections.cpp
Commit c931e12b1d517ca2d0b1dbcb90f65b770046ef3e by thakis
[lld/mac] Make sure __thread_ptrs is in front of __thread_bss

The exact location doesn't matter, but it should be in front
of __thread_bss. We put it right in front of __thread_data
which is where ld64 seems to put it as well.

Fixes PR50769.

(As mentioned on the bug, there is probably a more structural
fix too, see comment 5. If we don't address this, it's likely
we'll run into this again with other synthetic sections. But
for now, let's fix the immediate breakage.)

Differential Revision: https://reviews.llvm.org/D104596
The file was modifiedlld/test/MachO/tlv-dylib.s
The file was modifiedlld/MachO/OutputSegment.cpp
Commit 1605fce6c3074f8d1dff5a917a1840ffa66abd86 by thakis
[gn build] (manually) port b9c05aff205b (MIRTests)
The file was modifiedllvm/utils/gn/secondary/llvm/lib/CodeGen/BUILD.gn
The file was modifiedllvm/utils/gn/secondary/llvm/unittests/CodeGen/BUILD.gn
The file was addedllvm/utils/gn/secondary/llvm/unittests/MIR/BUILD.gn
The file was modifiedllvm/utils/gn/secondary/llvm/unittests/BUILD.gn