GET_COMMAND_ARGUMENT takes a lot of optional arguments: VALUE, LENGTH,
STATUS and ERRMSG. This patch breaks up the interface into 2 different
functions:
- One for getting the LENGTH of an argument.
- One for (optionally) getting the VALUE and the ERRMSG of an argument. This returns
the STATUS, which can be easily ignored by lowering if it is missing in
the invocation.
Could you make all the Descriptor& and Descriptor* const ? The runtime will modify the value described by the descriptors, but it should not modify the descriptors themselves.
In lowering, const Descriptor& and Descriptor& do not end-up being handled the same in FIR (because FIR cares if descriptors may be modified in meaningful way by a function), so it's important to make them const when they are not intended to be modified by the runtime.