3 ms·
> The burden is on the programmer to not associate these dummy arguments on a call with data that violate this requirement. What happens when the programmer pa
by nextaccountic 3y ago
> The burden is on the programmer to not associate these dummy arguments on a call with data that violate this requirement.
What happens when the programmer pass aliasing a and b? Will it cause UB, like in C if you violate the restrict keyword?
- pklausler 3y agoFortran's standard doesn't use the term Undefined Behavior; instead, it states a requirement that an object modified via one dummy argument must not be modified or referenced via any other name. When a program violates that requirement, it's no longer conforming to the standard, and the language doesn't define what happens afterwards. In practice, you'll get bad results and a bad day of debugging.
- nextaccountic 3y ago> When a program violates that requirement, it's no longer conforming to the standard, and the language doesn't define what happens afterwards. In practice, you'll get bad results and a bad day of debugging. This is just UB by another name That's.. disappointing
- pklausler 3y agoRewind your disappointed expectations back to Fortran II in the 1950's, the first Fortran with subprograms. The value proposition was this: if a programmer was willing to help the Fortran optimizer out by avoiding aliasing, the compiler would generate code that was usually fast enough to avoid the need to write in assembly. It was a great deal for the programmer at the time. Fortran succeeded not just because it allowed one to write more productively in a "high-level" language but because its compilers could optimize well enough that there was no significant performance cost to doing so. (And then its popularity allowed one to port Fortran code from one vendor's hardware to another.)