@wolf480pl Sometimes the language doesn't allow you to tell the compiler something you know that is required to do its job well. Examples in C{,++}:
- a value pointed to by a ref cannot change
- a ref cannot alias with a global,
- a parameter cannot alias with one other parameter, but can with another parameter,
- these two pointer do point into the same region, but they are manipulated in such a way that _they_ never point simultaneously at the same thing (or something similar that allows one to implement pointer chasing without spurious reads, like "this pointer is always ahead of that one") (you can't do this if you get such two pointers as function parameters),
- "I don't care about floating point addition not being associative" (-ffast-math and friends are an attempt to patch this, albeit in a very clunky way that can cause absurd errors sometimes).