Fix IE 2006111510 when taking address of volatile() with optimizations
Fixes #41704
@volatile(x) triggers IE and @volatile(x)/@aligned(x) returns the address of a register-allocated copy instead of the original variable.
make_not_regable() was called on the callparanode wrapper instead of the actual expression node, so it did nothing. The lvalue-walker in htypechk also did not strip volatile/aligned/unaligned inline wrappers, so @ could not mark the underlying temp as non-regable either.
Fix: pass tcallparanode(left).left to make_not_regable(), teach the lvalue-walker to step through these passthrough inline nodes, and replace the runtime check in volatile codegen with an internal error since the operand is now guaranteed to be in memory.
Edited by Fibonacci