[Chapel Merge] Generate `struct/union typename` for named structs

Branch: refs/heads/main
Revision: d18e9ec
Author: bmcdonald3
Log Message:

Merge pull request #18487 from bmcdonald3/c2chapel-fix

Generate struct/union typename for named structs and unions in c2chapel

[reviewed by @mppf - thanks!]

All structs in c2chapel were previously treated as typedef'd structs, even when they weren't typedef'd, so this PR adds the ability to detect whether or not a struct is typedef'd and named, in that case, it adds the "struct typename" identifier in the extern record definition (or extern union).

I had reverted the previous attempt at this a bit prematurely, thinking that the issue was coming from LLVM vs C backend differences, but it turns out I just didn't understand how you could refer to a non-typedef'd struct in C (thanks for helping @mppf).

Reverted PR trying to do the same thing: #18355

Modified Files:
A tools/c2chapel/test/anonymousStruct.chpl

A tools/c2chapel/test/anonymousStruct.h
M test/c2chapel/c2chapel-tester.good
M tools/c2chapel/.gitignore
M tools/c2chapel/c2chapel.py
M tools/c2chapel/test/arrayDecl.chpl
M tools/c2chapel/test/enum.chpl
M tools/c2chapel/test/fileGlobals.chpl
M tools/c2chapel/test/gnuTest.chpl
M tools/c2chapel/test/miscTypedef.chpl
M tools/c2chapel/test/miscTypedefUnion.chpl
M tools/c2chapel/test/nestedStruct.chpl
M tools/c2chapel/test/nestedUnion.chpl
M tools/c2chapel/test/opaqueStruct.chpl
M tools/c2chapel/test/opaqueUnion.chpl
M tools/c2chapel/test/simpleRecords.chpl

Compare: https://github.com/chapel-lang/chapel/compare/e741d195b677...d18e9ec57198