it should get the expected runtime error whether if using bound checking option or not.
No, your expectation is incorrect.
A Fortran program with an array bound overrun is, in the language used in the Fortran standards, a “non-conforming” program, and its run-time behavior is “undefined”.
This implies that you should have no expectations as to what the non-conforming program should do.
The program may not run at all, may run and give “correct” results, may cause mountains to start flying, turn all street lamps on at noon,…: all these events come under “undefined”.