You could turn "hints" that can possibly create invalid code automatically into assertions in non-release builds. Or let the user add an assertion and use the "turn assert() into assume()" idea for release builds.
I cannot think of any hints the would produce incorrect code. Hints may create terribly inefficient code if they are wrong. But incorrect code ... no examples come to mind.
