mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
When matching function arguments in composite_type_internal and one type comes from a transparent union, it is possible to end up with atomic and non-atomic types because this case is not handled correctly. The type matching logic is rewritten in a cleaner way to use helper functions and to not walk the argument lists three times. With this change, a checking assertion can be added to test for matching qualifiers for pointers. (In general, this assumption is still violated for function return types.) PR c/123309 gcc/c/ChangeLog: * c-typeck.cc (transparent_union_replacement): New function. (composite_type_internal): Rewrite logic. (type_lists_compatible_p): Remove dead code for NULL arguments. gcc/testsuite/ChangeLog: * gcc.dg/pr123309.c: New test. * gcc.dg/union-composite-type.c: New test.