[flang] Implement GET_ENVIRONMENT_VARIABLE(VALUE)
authorDiana Picus <diana.picus@linaro.org>
Wed, 27 Oct 2021 09:09:31 +0000 (09:09 +0000)
committerDiana Picus <diana.picus@linaro.org>
Mon, 1 Nov 2021 09:19:20 +0000 (09:19 +0000)
commit9df0ba599c3c777a37557ddcc567c85dae4c33d3
treebdfa730b80acec2006675da61fb34a861aef624e
parentc060457ec6eda640ae75e48d99500712fabe1c42
[flang] Implement GET_ENVIRONMENT_VARIABLE(VALUE)

Implement the second entry point for GET_ENVIRONMENT_VARIABLE. Reuse
existing bits and pieces wherever possible.

This patch also increases CFI_* error codes in order to avoid conflicts.
GET_ENVIRONMENT_VARIABLE is required to return a status of 1 if an
environment variable does not exist and 2 if environment variables are
not supported. However, if we add status codes for that they will
conflict with CFI_ERROR_BASE_ADDR_NULL and CFI_ERROR_BASE_ADDR_NOT_NULL,
which are also 1 and 2 at the moment. We therefore move all CFI error
codes up (an arbitrary) 10 spots to make room. Hopefully this isn't
a problem, since we weren't matching the CFI error codes that gfortran
uses anyway. It may still be an issue if any other runtime functions
will need to return a status of 1 or 2, but we should probably deal with
that when/if it occurs.

Differential Revision: https://reviews.llvm.org/D112698
flang/include/flang/ISO_Fortran_binding.h
flang/include/flang/Runtime/command.h
flang/include/flang/Runtime/magic-numbers.h
flang/runtime/command.cpp
flang/runtime/stat.cpp
flang/runtime/stat.h
flang/unittests/Runtime/CommandTest.cpp