use llvm named structs for const values when possible

normally we want to use llvm types for constants. but
union constants (which are found inside enums) when
they are initialized with the non-most-aligned-member
must be unnamed structs.

these bubble up to all aggregate types. if a constant of
an aggregate type contains, recursively, a union constant
with a non-most-aligned-member initialized, the aggregate
typed constant must be unnamed too.

this fixes some of the asserts that were coming in from
llvm master branch.
f1072d0d9fAndrew Kelley committed on 10/27/2017, 4:14:56 AMparent6663638
3 files changedLine totals unavailable