[libclang/python] Deprecate _CXUnsavedFile, introduce UnsavedFile instead (#187412)
To maintain consistency with other classes mirrored from libclang, the
`_CX` prefix should be removed.
The old name is introduced as a subclass of the renamed class, and
deprecation warnings are added on every attribute access.
[CIR] Add lowering for bool attributes (#187590)
When a boolean attribute was encountered in a constant global record or
constant global array, we were going to the default handler, which
returned a null value, and then trying to insert this null value in an
LLVM structure, which crashes.
This adds proper lowering for boolean attributes.
[CIR] Implement global variable replacement in global view (#186168)
This change upstreams the CIR implementation of global variable
replacement handling for cases where the global was used in a
cir.global_view operation, either as an initializer for another global
or as a constant ptr.
[flang][openacc][cuda] Fix order of clause processing for host_data directive (#187600)
This was crashing lowering with `not yet implemented: lowering symbol to
HLFIR` because the symbol was not mapped correctly
[raw_socket_stream] Fix a file descriptor leak when connect failed (#187574)
Close the socket file descriptor if `::connect` returns error. This
prevents leaking file descriptor on failure.
[AMDGPU] Minor cleanups in offload plugin and AMDGPUEmitPrintf. NFC. (#187587)
Use empty() in assert, brace-init instead of std::make_pair in the
AMDGPU offload plugin, and fix a comment typo in AMDGPUEmitPrintf.
[CIR] Upstream CUDA mangling test with LLVM and OGCG verification (#184444)
This PR upstreams the `mangling.cu` test from the ClangIR incubator.
Building on the feedback from my previous upstreaming PR, I have
expanded the verification for this file to include:
1. **CIR checks:** Verifying the ClangIR generated functions.
2. **LLVM checks:** Verifying the LLVM IR generated via the ClangIR
pipeline.
3. **OGCG checks:** Verifying against the original CodeGen pipeline to
ensure name-mangling parity.
I have also moved the `Inputs/cuda.h` mock header to the upstream
`Inputs` directory to support this and future CUDA tests.
If this multi-stage verification approach looks correct to the
maintainers, I plan to follow up by upstreaming the other currently
passing CUDA test, `simple-nvptx-triple.cu`, using the same standard.
Verified locally with `llvm-lit`. Partially addresses #156747.
[Clang][AMDGPU] Minor driver cleanups. NFC. (#187586)
Use empty() instead of size() checks, back() instead of [size()-1], and
brace-init instead of std::make_pair in the AMDGPU and HIP driver
toolchains.
[libc] Modular printf option (float only) (#147426)
This adds LIBC_CONF_PRINTF_MODULAR, which causes floating point support
(later, others) to be weakly linked into the implementation.
__printf_modular becomes the main entry point of the implementaiton, an
printf itself wraps __printf_modular. printf it also contains a
BFD_RELOC_NONE relocation to bring in the float aspect.
See issue #146159 for context.
[NFC] Annotate CommentFlag with underlying type (#186560)
This is stored in `uint8_t AsmPrinterFlags`, and `setAsmPrinterFlag` was
already using `uint8_t` in the API. This change doesn't use a scoped
enum as targets extend this enum by starting their enums with the
`TAsmComments` value.
This also introduces a typedef for the uint8_t for documentation purposes.
[lldb][TypeSystem] Add CompilerType::IsMemberDataPointerType (#187172)
**Description:**
Adds `IsMemberDataPointerType()` to CompilerType / TypeSystem /
TypeSystemClang, mirroring the existing `IsMemberFunctionPointerType()`.
LLDB already has `IsMemberFunctionPointerType()` to identify member
function pointers but no counterpart for member data pointers. The only
way to check for member data pointers was the indirect `GetTypeClass()
== eTypeClassMemberPointer && !IsMemberFunctionPointerType()`, which is
awkward.
This pr is split out from a larger [fix,
186629](https://github.com/llvm/llvm-project/pull/186629) for LLDB
mishandling non-type template parameters (NTTPs) of pointer-to-member
types, where cleanly distinguishing member data pointers from member
function pointers is needed. The new API delegates to clang's
`QualType::isMemberDataPointerType()` via the same I`sTypeImpl` pattern
[12 lines not shown]
[AMDGPU] Fix setreg handling in the VGPR MSB lowering
There are multiple issues with it:
1. It can skip inserting S_SET_VGPR_MSB if we set the mode via
piggybacking. We are now relying on the HW bug for correct
behavior. If/when the bug is fixed lowering will be incorrect.
2. We should just unconditionally update MSBs if immediate allows it.
We shall set correct bits and keep the rest of the immediate
(that is done). There is no reasonable way for an user to change
MSBs nor does it do anything good to set it with SETREG and then
immediately overwrite with S_SET_VGPR_MSB.
3. We can always update immediate if Offset is zero.
4. Redundant mode changes created as seen in the
hazard-setreg-vgpr-msb-gfx1250.mir.
5. Decoding of the immediate was also wrong with non-zero offset
and did not factor MSB fixup offset handling.
With unconditional immediate update most of time and not relying on
[12 lines not shown]
[DirectX] Fix TypedBuffer load shader flag mismatch (#187393)
Fixes #187225.
The `TypedUAVLoadAdditionalFormats` shader flag was being set for all
TypedBuffer vector loads, so loading from a `Buffer<int64_t2>` was
incorrectly triggering this flag and causing the mismatch. This PR
changes it so the flag is only set for UAV loads.
[VPlan] Make sure Inductions outlive returned VPlan.
Move Inductions to VPlanTestBase, to make sure it outlives
VPlanTestBase::getPlan(). Fixes a use-after-free issue.
[clang] add x86_64 baremetal triple include search paths (#183453)
when compiling for i386 / x86_64 baremetal targets, the include path for
the triple-specific directory is not added. This is the layout I'm
currently using, which from my understanding is the multi-target layout
that clang supports.
Sysroot layout:
```
sysroot
└── usr
├── bin
├── include
│ ├── c++
│ ├── [other dirs]
│ ├── i386-pc-linux-musl
│ │ ├── linux
│ │ ├── c++
│ │ │ └── v1
[62 lines not shown]
[lldb] Fix Python 2 prints in the docs (#187553)
The Python example snippets on the lldb website were still using Python
2 syntax for printing.
rdar://123267107