Found this while looking for one of the codegen asserts I hit: union U { unsigned a; float b; }; float get_b(union U *u) { return u->b; } CookieJar:Desktop keith$ clang -emit-llvm union.c Function return type does not match operand type of return inst! Broken module found, compilation aborted! -Keith