Hacker News new | past | comments | ask | show | jobs | submit login

When I tested this before (some years ago), adding "restrict" to the C pointers resulted in the same behavior, so the aliasing default seem to be the key issue.



Your compiler very likely assumes strict aliasing at whatever optimization level you're already using, so restrict usually won't do much. GCC does at O2, keil (and clang?) at O1.


“strict aliasing” refers to disallowing pointers of different types to alias. In the context of a function that accepts two arrays of floats, for example, it doesn’t apply


That looks correct from playing around in godbolt.


But restrict says "I promise that these things don't overlap, on penalty of my program going to hell". Is that what's going on in Fortran?


yes, Fortran forbids referring to the same memory location by multiple names.


Nope. There’s lots of ways to alias storage in Fortran.


sorry, I meant in the case of function parameters, though I'm far from a fortran expert so there may be exceptions.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: