Hacker News new | ask | show | jobs
by tyler569 1110 days ago
And that ABI specific stack manipulation would be UB, so the optimizer can assume it doesn't happen. With no UB, that's not true.
1 comments

You assume a langue without UB would allow stack manipulation. But then it would have to be defined. How would you possibly define it fully?
There's an area of memory into which variables with automatic storage duration are allocated at implementation-defined addrs, at any point exactly those variables have addresses.
> at any point exactly those variables have addresses

That doesn't sound like it lets me increment any stack address I want and store into the resulting pointer.

And are return values still on the same stack? I probably should have said I meant the traditional kind of C stack.

> That doesn't sound like it lets me increment any stack address I want and store into the resulting pointer.

Why not?

> And are return values still on the same stack?

Other implementation-defined things might have addresses too, those things just aren't variables. I think you might be able to still allow inlining without UB if you make it implementation-defined per call-site what other things might get addresses.

> Why not?

At this point the conversation has completely converged so I'm only going to reply over here: https://news.ycombinator.com/item?id=36169808