Types in C should not be complex. If you&#x27;re hitting some kind of complexity, you&#x27;re likely doing it the wrong way. C types are directly translated (one way, of course) into LLVM types.<p>Casts are evil: they break aliasing analysis, they screw up address spaces, they break more advanced forms of vectorisation (like polyhedral analysis), etc.