Hi, as you know we have a -Wcast-align warning which works only for STRICT_ALIGNMENT targets. But occasionally it would be nice to be able to switch this warning on even for other targets. Therefore I would like to add a strict version of this option which can be invoked with -Wcast-align=strict. With the only difference that it does not depend on STRICT_ALIGNMENT. I used the code from check_effective_target_non_strict_align in target-supports.exp for the first version of the test case, where we have this: return [check_no_compiler_messages non_strict_align assembly { char *y; typedef char __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) c; c *z; void foo(void) { z = (c *) y; } } "-Wcast-align"] ... and to my big surprise it did _not_ work for C++ as-is, because same_type_p considers differently aligned types identical, and therefore cp_build_c_cast tries the conversion first via a const_cast which succeeds, but did not emit the cast-align warning in this case. As a work-around I had to check the alignment in build_const_cast_1 as well. Bootstrapped and reg-tested on x86_64-pc-linux-gnu. Is it OK for trunk? Thanks Bernd.