Christoffer Lernö via llvm-dev
2021-Sep-16 19:54 UTC
[llvm-dev] Constant unions are incredibly hard to work with - do they need to be?
I just cleaned up another bug in my constant initializer code. Basically I forgot that when I have an extremely simple thing like this: struct Baz { char c; union { int a; double b; }; int z; }; And I initialize it like this: struct Baz baz = { .a = 3, .z = 4 }; In this case I get the ”wrong” automatic offset for a, so I need to add some extra padding. This is not the only thing I’ve overlooked in this code. I likely have quite a few more that I need to handle. But this begs the question: why isn’t LLVM offer a better interface for this, at least the case of creating a constant union value. Clang has a lot of code just trying to do this well. Code that every other frontend that has unions must duplicate. Would it be complex to push this into LLVM?