Compiler should be able to ignore attribute and program should still work fine, this attribute do not allow this. Simply without recognizing this attribute compiler will generate wrong code that will cause UB.
I think that good rule of thumbs for attributes is that it could break valid program but not fix bad program (exactly case of [[noreturn]], if ignored program will work fine, but if misused it cause UB).
And do not forget that strict aliasing rules are for performance, thanks to that compiler can reduce numbers of reloads:
http://stackoverflow.com/questions/1225741/performance-impact-of-fno-strict-aliasing