LLVM/project c63b6d6clang/lib/StaticAnalyzer/Checkers/UninitializedObject UninitializedObjectChecker.cpp, clang/test/Analysis cxx-uninitialized-object-note-order.cpp

[analyzer] Order UninitializedObject notes deterministically (#214208)

UninitFieldMap is keyed by FieldRegion pointers, so iterating it to emit
the notes ordered them by where those regions happened to be allocated.
The order therefore varied between runs: on cxx-uninitialized-object.cpp
the two notes of the report at line 363 swapped in roughly 3 of 12 runs.

- Emit the notes in source order instead, tie-broken by the note message.
- `-verify` matches notes by line, text and count and ignores their order,
   so the new test pins the order down with FileCheck.

Assisted-By: claude
DeltaFile
+80-0clang/test/Analysis/cxx-uninitialized-object-note-order.cpp
+23-4clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
+103-42 files

LLVM/project f6eb7c5compiler-rt/lib/builtins CMakeLists.txt

[compiler-rt] Create a combined compiler-rt builtin bitcode for SPIRV64 target (#214149)

This PR re-lands the compiler-rt builtin part from
https://github.com/llvm/llvm-project/pull/196656

Signed-off-by: jinge90 <ge.jin at intel.com>
DeltaFile
+32-0compiler-rt/lib/builtins/CMakeLists.txt
+32-01 files

LLVM/project a0a4273llvm/unittests/Object GOFFObjectFileTest.cpp

[NFC][llvm][object][GOFF] cleanup GOFFObjectTests (#212286)

This change cleans up the GOFF object file reading unit test based on
suggestions from #211632, and a few minor fixes for other issues
identified

Namely these are:

1. Remove global data from the test, making all data local to the test
being run
2. Fix erroneous reference to XCOFF rather than GOFF
3. Use vector rather statically size arrays for the test data
4. Use helpers to construct the data for repeated record types (we leave
trivial and one off cases as-is)
5. Swap uses of dyn_cast for static_cast

Assisted by: IBM Bob 2.0.1

---------

Co-authored-by: James Henderson <James.Henderson at sony.com>
DeltaFile
+311-303llvm/unittests/Object/GOFFObjectFileTest.cpp
+311-3031 files

LLVM/project 8723e31llvm/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel legalize-atomicrmw-fadd-local.mir legalize-atomicrmw-fadd-global.mir

AMDGPU/GlobalISel: Switch more FP opcodes to extended LLTs (part 6) (#214031)

Migrate G_LROUND, G_LLROUND, G_INTRINSIC_LRINT, G_INTRINSIC_LLRINT,
G_FCOPYSIGN, and G_ATOMICRMW_FADD to extended LLTs.

Update the relevant MIR tests.
DeltaFile
+1,025-625llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcopysign.mir
+57-57llvm/test/CodeGen/AMDGPU/GlobalISel/combine-fold-binop-into-select.mir
+16-16llvm/test/CodeGen/AMDGPU/GlobalISel/combine-foldable-fneg.mir
+7-11llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+7-7llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-atomicrmw-fadd-local.mir
+7-7llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-atomicrmw-fadd-global.mir
+1,119-7231 files not shown
+1,120-7247 files

LLVM/project 2737061libcxx/include/__memory pstl.h, libcxx/include/__pstl backend_fwd.h

[libc++][pstl] Implementation of parallel std::destroy() and std::destroy_n() (#211888)

This PR adds an implementation of parallel versions of `std::destroy`
and `std::destroy_n`. The implementations are based on `for_each` and
`for_each_n`, effectively one-liners

Fixes #134588.
Fixes #134589.
Fixes #101693.
DeltaFile
+150-0libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/pstl.destroy.pass.cpp
+150-0libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/pstl.destroy_n.pass.cpp
+64-0libcxx/include/__memory/pstl.h
+29-0libcxx/include/__pstl/backends/default.h
+12-0libcxx/include/__pstl/backend_fwd.h
+9-0libcxx/test/std/algorithms/pstl.exception_handling.pass.cpp
+414-09 files not shown
+448-115 files

LLVM/project cd5451dllvm/lib/Transforms/IPO LoopExtractor.cpp, llvm/test/Transforms/CodeExtractor LoopExtractor.ll 2004-03-13-LoopExtractorCrash.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+0-289llvm/lib/Transforms/IPO/LoopExtractor.cpp
+0-198llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-75llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
+0-68llvm/test/Transforms/CodeExtractor/LoopExtractor.ll
+0-95929 files not shown
+30-1,53535 files

LLVM/project 52f2756llvm/lib/Transforms/IPO LoopExtractor.cpp, llvm/test/Transforms/CodeExtractor LoopExtractor.ll 2004-03-13-LoopExtractorCrash.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-289llvm/lib/Transforms/IPO/LoopExtractor.cpp
+0-198llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-75llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
+0-68llvm/test/Transforms/CodeExtractor/LoopExtractor.ll
+0-95930 files not shown
+31-1,53836 files

LLVM/project ef7992allvm/lib/Transforms/IPO LoopExtractor.cpp, llvm/test/Transforms/CodeExtractor LoopExtractor.ll 2004-03-13-LoopExtractorCrash.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+0-289llvm/lib/Transforms/IPO/LoopExtractor.cpp
+0-198llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-75llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
+0-68llvm/test/Transforms/CodeExtractor/LoopExtractor.ll
+0-95924 files not shown
+12-1,51330 files

LLVM/project f6a3cdbllvm/lib/Transforms/IPO LoopExtractor.cpp, llvm/test/Transforms/CodeExtractor LoopExtractor.ll 2004-03-13-LoopExtractorCrash.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-289llvm/lib/Transforms/IPO/LoopExtractor.cpp
+0-198llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-75llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
+0-68llvm/test/Transforms/CodeExtractor/LoopExtractor.ll
+0-95929 files not shown
+30-1,53535 files

LLVM/project bd8d36cllvm/docs Passes.md OptBisect.rst, llvm/utils bugpoint_gisel_reducer.py findmisopt

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-44llvm/utils/gn/secondary/llvm/tools/bugpoint/BUILD.gn
+5-15llvm/docs/HowToSubmitABug.rst
+4-7llvm/docs/OptBisect.rst
+3-5llvm/docs/Passes.md
+12-4001 files not shown
+13-4017 files

LLVM/project 9d13a65llvm/lib/Transforms/IPO LoopExtractor.cpp, llvm/test/Transforms/CodeExtractor LoopExtractor.ll 2004-03-13-LoopExtractorCrash.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-289llvm/lib/Transforms/IPO/LoopExtractor.cpp
+0-198llvm/test/Transforms/CodeExtractor/2004-03-18-InvokeHandling.ll
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-75llvm/test/Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll
+0-68llvm/test/Transforms/CodeExtractor/LoopExtractor.ll
+0-95924 files not shown
+12-1,51330 files

LLVM/project a98ffc1llvm/docs Passes.md OptBisect.rst, llvm/utils bugpoint_gisel_reducer.py findmisopt

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-44llvm/utils/gn/secondary/llvm/tools/bugpoint/BUILD.gn
+5-15llvm/docs/HowToSubmitABug.rst
+4-7llvm/docs/OptBisect.rst
+3-5llvm/docs/Passes.md
+12-4001 files not shown
+13-4017 files

LLVM/project 9a79c02llvm/utils bugpoint_gisel_reducer.py findmisopt, llvm/utils/gn/secondary/llvm/tools/bugpoint BUILD.gn

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-44llvm/utils/gn/secondary/llvm/tools/bugpoint/BUILD.gn
+0-3733 files

LLVM/project e94e23fllvm/utils bugpoint_gisel_reducer.py findmisopt

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-3292 files

LLVM/project f8980fallvm/utils bugpoint_gisel_reducer.py findmisopt, llvm/utils/gn/secondary/llvm/tools/bugpoint BUILD.gn

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-44llvm/utils/gn/secondary/llvm/tools/bugpoint/BUILD.gn
+0-3733 files

LLVM/project cbbe900llvm/utils bugpoint_gisel_reducer.py findmisopt

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-177llvm/utils/findmisopt
+0-152llvm/utils/bugpoint_gisel_reducer.py
+0-3292 files

LLVM/project 7972734llvm/lib/Target/AMDGPU SIISelLowering.h SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU bf16.ll llvm.sin.bf16.ll

[AMDGPU] Perform scalar FMUL with bf16 more efficiently (#213969)

Perform scalar FMUL with bf16 more efficiently. Utilize v2bf16 patterns.

Signed-off-by: John Lu <John.Lu at amd.com>
DeltaFile
+9-7llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+2-6llvm/test/CodeGen/AMDGPU/llvm.sin.bf16.ll
+2-6llvm/test/CodeGen/AMDGPU/llvm.cos.bf16.ll
+1-1llvm/test/CodeGen/AMDGPU/bf16.ll
+1-1llvm/lib/Target/AMDGPU/SIISelLowering.h
+15-215 files

LLVM/project 936d3c6flang/include/flang/Semantics openmp-modifiers.h, flang/lib/Semantics check-omp-structure.cpp openmp-modifiers.cpp

[OpenMP] Preview of auto-generating OpenMP definitions

The components of this commit:
1. Definitions of descriptors that will hold relevant data in LLVM
   and declarations of associated functions.
2. "Auto-generated" enum definitions and descriptor data
3. Changes to flang's modifier verification to use the new data
   instead of the previously hand-coded modifier information.

This does not contain the actual auto-generation infrastructure.
The included descriptors were generated directly from JSON files by
a custom python script.
DeltaFile
+6,582-0llvm/lib/Frontend/OpenMP/OMPDescriptors.cpp
+0-791flang/lib/Semantics/openmp-modifiers.cpp
+277-0llvm/include/llvm/Frontend/OpenMP/OMPDescriptors.h
+136-111flang/include/flang/Semantics/openmp-modifiers.h
+9-25flang/lib/Semantics/check-omp-structure.cpp
+10-19flang/test/Parser/OpenMP/map-modifiers.f90
+7,014-94611 files not shown
+7,035-98317 files

LLVM/project 3cb8965flang/include/flang/Semantics openmp-modifiers.h, flang/lib/Semantics check-omp-structure.cpp openmp-modifiers.cpp

[OpenMP] Preview of auto-generating OpenMP definitions

The components of this commit:
1. Definitions of descriptors that will hold relevant data in LLVM
   and declarations of associated functions.
2. "Auto-generated" enum definitions and descriptor data
3. Changes to flang's modifier verification to use the new data
   instead of the previously hand-coded modifier information.

This does not contain the actual auto-generation infrastructure.
The included descriptors were generated directly from JSON files by
a custom python script.
DeltaFile
+6,582-0llvm/lib/Frontend/OpenMP/OMPDescriptors.cpp
+0-791flang/lib/Semantics/openmp-modifiers.cpp
+277-0llvm/include/llvm/Frontend/OpenMP/OMPDescriptors.h
+136-111flang/include/flang/Semantics/openmp-modifiers.h
+9-25flang/lib/Semantics/check-omp-structure.cpp
+10-19flang/test/Parser/OpenMP/map-modifiers.f90
+7,014-94611 files not shown
+7,035-98317 files

LLVM/project 8b6f3dcclang/include/clang/Analysis/Analyses/LifetimeSafety Facts.h, clang/include/clang/Basic DiagnosticGroups.td

[LifetimeSafety] Suppress dangling field warnings for RAII resetters in permissive mode
 (#214212)

In `-Wlifetime-safety-permissive` mode, suppress dangling field warnings
(`-Wlifetime-safety-dangling-field`) when `this` or the escaping field
declaration is captured by a lambda within the function. This accounts
for common RAII field resetters that clean up dangling pointers on scope
exit.

### Motivating Example
Dangling field analysis can report false positives when an RAII field
resetter (such as `absl::MakeCleanup` or `absl::Cleanup`) captures
`this` or the field to reset the pointer before function exit:

```cpp
struct TimeServerInstance {
  Handler* handler_;

  void init() {

    [8 lines not shown]
DeltaFile
+31-0clang/test/Sema/LifetimeSafety/dangling-field.cpp
+14-0clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
+14-0clang/include/clang/Analysis/Analyses/LifetimeSafety/Facts.h
+6-4clang/lib/Sema/SemaLifetimeSafety.h
+6-3clang/lib/Analysis/LifetimeSafety/Checker.cpp
+7-0clang/include/clang/Basic/DiagnosticGroups.td
+78-72 files not shown
+85-78 files

LLVM/project 1be0268flang/include/flang/Semantics openmp-modifiers.h, flang/lib/Semantics check-omp-structure.cpp openmp-modifiers.cpp

[OpenMP] Preview of auto-generating OpenMP definitions

The components of this commit:
1. Definitions of descriptors that will hold relevant data in LLVM
   and declarations of associated functions.
2. "Auto-generated" enum definitions and descriptor data
3. Changes to flang's modifier verification to use the new data
   instead of the previously hand-coded modifier information.

This does not contain the actual auto-generation infrastructure.
The included descriptors were generated directly from JSON files by
a custom python script.
DeltaFile
+6,582-0llvm/lib/Frontend/OpenMP/OMPDescriptors.cpp
+0-791flang/lib/Semantics/openmp-modifiers.cpp
+277-0llvm/include/llvm/Frontend/OpenMP/OMPDescriptors.h
+136-111flang/include/flang/Semantics/openmp-modifiers.h
+8-25flang/lib/Semantics/check-omp-structure.cpp
+10-19flang/test/Parser/OpenMP/map-modifiers.f90
+7,013-94611 files not shown
+7,034-98317 files

LLVM/project 08396d7clang/docs ReleaseNotes.md, clang/include/clang/Basic ABIVersions.def

[Sparc][clang] make `_Complex` ABI GCC-compatible (#212340)

Modify the ABI of `_Complex` so that it matches GCC for all types,
specifically:

- On SPARC, a `_Complex` value with an integer element type is now
passed and
returned packed into the one or two integer registers it fits in,
matching GCC.
Clang previously passed such a value indirectly and returned it with one
part
  per register. 
  `-fclang-abi-compat=23` restores the previous behavior.

- On SPARC64, a `_Complex char` or `_Complex short` is now
right-justified in its slot in the parameter array, like every other
scalar
narrower than a slot, rather than left-justified the way a small struct
is.

    [14 lines not shown]
DeltaFile
+585-0clang/test/CodeGen/Sparc/sparc-complex-abi.c
+68-15clang/lib/CodeGen/Targets/Sparc.cpp
+11-0clang/docs/ReleaseNotes.md
+6-0clang/include/clang/Basic/ABIVersions.def
+670-154 files

LLVM/project b6a6e31clang/lib/CIR/CodeGen CIRGenStmt.cpp, clang/lib/CodeGen CGStmt.cpp

[CIR]/[OGCG] Fix handling of bool-backed-scoped-enums (#214084)

This patch primarily fixes the case of a scoped enum with a boolean type
in CIR, which we assume is an 'int' type, whereas this one case, that is
not true. Rather than change the Dialect for what amounts to a very rare
case, we've instead opted to just coerce the bool type into a 1 bit int
type, so that all our passes will consider it the same as the rest of
the switches, and not have to special-case the 'bool' types.

AS A DRIVE-BY: I discovered that classic-codegen manages to assert on
llvm::isUIntN in the case where the storage of a range for
GNU-range-switch is less than 7 bits, so bit-int could possibly hit this
too with gnu-range. This patch would fix any case (as the test for the
'shortcut' is for <64).
DeltaFile
+61-0clang/test/CIR/CodeGen/switch.cpp
+18-0clang/test/CodeGen/enum-bool.cpp
+17-0clang/test/CodeGen/ext-int.c
+12-0clang/lib/CIR/CodeGen/CIRGenStmt.cpp
+2-1clang/lib/CodeGen/CGStmt.cpp
+110-15 files

LLVM/project b650fe5clang/lib/Analysis/LifetimeSafety Dataflow.h LoanPropagation.cpp

[clang][LifetimeSafety] Drop block-local origins at block exit (#213530)

Block-local origins were only discarded in `join`, which the dataflow
driver skips when a successor's in-state is seen for the first time, and
therefore always skips for a block with a single predecessor. In
straight-line code the block-local map was inherited down the whole
chain and never cleared, so it accumulated every expression origin in
the region.

Drop them in a new `exitBlock` hook instead, which runs on every edge.
This also keeps in-states canonical, so state comparison no longer sees
a spurious difference between a first-visit in-state and a joined one.

The per-program-point states the checker queries are unaffected; only
the state propagated across block boundaries changes.

LoanPropagation time below, median of 5-7 interleaved runs of a baseline
and a patched binary. Synthetic cases are from
clang/test/Analysis/LifetimeSafety/benchmark.py:

    [26 lines not shown]
DeltaFile
+10-1clang/lib/Analysis/LifetimeSafety/LoanPropagation.cpp
+6-1clang/lib/Analysis/LifetimeSafety/Dataflow.h
+16-22 files

LLVM/project 59de680clang/include/clang/CIR/Dialect/IR CIRAttrs.td, clang/test/CIR/IR invalid-record-layout.cir

[CIR] Verify record_align is a non-zero power of two (#214074)

`#cir.record_layout` carries `record_align`, which CIRGen fills from
`ASTRecordLayout::getAlignment()` and consumers read as an
`llvm::Align`. That constructor asserts the value is a non-zero power of
two, so hand-written CIR naming any other alignment aborted the tool
rather than reporting a parse error. A zero tripped the non-zero assert
and a 3 tripped the power-of-two one, both inside `llvm::Align` with no
indication of which attribute was at fault.

Verify the field where it is parsed. Values CIRGen emits are already
well-formed, so this only affects hand-written input.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+19-0clang/test/CIR/IR/invalid-record-layout.cir
+7-1clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+26-12 files

LLVM/project af757e5clang/lib/StaticAnalyzer/Checkers LifetimeModeling.cpp, clang/test/Analysis lifetime-bound.cpp

[analyzer] Discard stack frames that are not on the current live stack (#213779)

When a source's stack frame is not live on the current stack the
`UseAfterLifetimeEnd` checker emitted a false positive. Such sources
outlive the returned value, so they are not dangling stack sources. This
led to multiple false positives when I ran the `UseAfterLifetimeEnd`
checker on the LLVM project.

---------

Co-authored-by: isuckatcs <65320245+isuckatcs at users.noreply.github.com>
DeltaFile
+19-0clang/test/Analysis/lifetime-bound.cpp
+8-3clang/lib/StaticAnalyzer/Checkers/LifetimeModeling.cpp
+27-32 files

LLVM/project d803a4allvm/test/CodeGen/AMDGPU llvm.amdgcn.s.buffer.load.ll

[NFC][AMDGPU] Update check lines messed up by merge orders (#214236)
DeltaFile
+41-41llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.buffer.load.ll
+41-411 files

LLVM/project fa8a574clang/include/clang/Basic AttrDocs.td, clang/include/clang/Sema Attr.h

[clang][Sema] Handle alloc_align on all HasFunctionProto declarations (#210871)

Fixes  #122058.

## Overview 

Attribute `alloc_align`'s TableGen subject accepts any declaration
satisfying `HasFunctionProto`, but `AddAllocAlignAttr` unconditionally
casts the declaration to `FunctionDecl` (in
`Sema::AddAllocAlignAttr()`). Since there exist `Decl`'s that have an
underlying `FunctionProtoType` but are not `FunctionDecl` (e.g. function
pointer variables and parameters), the unconditional
`cast<FunctionDecl>` is too narrow and leads to a crash for `Decl`s that
are meant to be compatible with the `alloc_align` attribute.

For example, trying to compile `C` file

```
void *(*allocator)(unsigned long long) __attribute__((alloc_align(1)));

    [125 lines not shown]
DeltaFile
+47-1clang/test/Misc/attr-source-range.cpp
+32-0clang/include/clang/Sema/Attr.h
+13-4clang/include/clang/Basic/AttrDocs.td
+12-0clang/test/Misc/attr-source-range.m
+0-10clang/test/CodeGen/xfail-alloc-align-fn-pointers.cpp
+8-0clang/test/SemaObjC/alloc-align-attr.m
+112-154 files not shown
+129-1810 files

LLVM/project 9629318llvm/lib/Target/AMDGPU SIRegisterInfo.td SIFrameLowering.cpp, llvm/test/CodeGen/AMDGPU amdgpu-spill-cfi-saved-regs.ll

[AMDGPU] Fix Dwarf CFI emission for exec to vcc spills (#213115)
DeltaFile
+154-0llvm/test/CodeGen/AMDGPU/amdgpu-spill-cfi-saved-regs.ll
+8-8llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
+3-2llvm/lib/Target/AMDGPU/SIRegisterInfo.td
+165-103 files

LLVM/project a942677flang/lib/Optimizer/Transforms MIFOpConversion.cpp, flang/test/Lower/MIF coarray_dealloc_not_alloc.f90

[flang][MIF] Fix undef reference to a coarray_handle in mif.dealloc_coarray #193157 (#213890)

This PR fixes the behavior reported in issue #193157. The coarray_handle
was only defined if a call to mif.alloc_coarray was present.
If a call to mif.dealloc_coarray was encountered without a prior call to
mif.alloc_coarray, then the coarray_handle was missing, and therefore
llvm.address_of pointed to a non-existent address, which is not allowed.
We now define a coarray_handle that has not been allocated by PRIF for
each coarray variables.
DeltaFile
+32-2flang/lib/Optimizer/Transforms/MIFOpConversion.cpp
+15-0flang/test/Lower/MIF/coarray_dealloc_not_alloc.f90
+47-22 files