The uses_power_alignment lint detects specific repr(C)
aggregates on AIX.
In its platform C ABI, AIX uses the βpowerβ (as in PowerPC) alignment
rule (detailed in https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=data-using-alignment-modes#alignment),
which can also be set for XLC by #pragma align(power) or
-qalign=power. Aggregates with a floating-point type as the
recursively first field (as in βat offset 0β) modify the layout of
subsequent fields of the associated structs to use an alignment value
where the floating-point type is aligned on a 4-byte boundary.
Check if this enum can be safely exported based on the βnullable pointer optimizationβ. If it
can, return the type that ty can be safely converted to, otherwise return None.
Currently restricted to function pointers, boxes, references, core::num::NonZero,
core::ptr::NonNull, and #[repr(transparent)] newtypes.