Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pull 2019-11-07T08-16 Recent NVIDIA Changes #823

Merged
merged 10 commits into from Nov 7, 2019

Conversation

@gklimowicz
Copy link
Contributor

gklimowicz commented Nov 7, 2019

No description provided.

gklimowicz added 10 commits Nov 5, 2019
1) Added two flag bits ELEMENTAL and RECUR to the backend, they
   already exist in the front end.
2) Changed the front end to pass "elemental" to the back end for
   ST_ENTRY.
3) Changed the back end to pickup and set PURE/ELEMENTAL/RECUR
   flag for ST_ENTRY correspondingly.
4) Changed the bridge to retrieve those bits when setting up
   the spFlags when emitting subprogram debug metada.
5) Changed the back end dump routine dsym() to display the two
   added flags.
This change adds necessary infrastucture to emit proper call
instructions for JSRA ILIs. Variadic argument functions are still
not supported.
Also add a new macro to check if the current ILI OPC is an
atomic opcode.
In print_entry_subroutine(), use the generic dummy type for procedure
argument descriptors. Otherwise, the compiler may generate the
wrong argument type when we invoke -Mnolarge_arrays.
Allow block statements in the scope of OpenMP directives
under XBIT(59,8). Modify a macro used in parallel code.
Fix a symbol table flag overloading problem with ASSOC_PTR and
PTR_TARGET flags. Use a new bit flag in the Fortran back-end
called PTR_INITIALIZER to distinguish the overloaded cases.

Also discovered an unrelated bug with inject_arg() in semfin.c.
Make sure we set the arguments' storage class to SC_DUMMY.
Fix a fault with procedure dummy arguments and interfaces.
Create a unique symbol for interfaces that are used in procedure
pointer declarations because the LLVM bridge uses the interface
as well as the argument ILI to generate arguments at a procedure
pointer call.  An interface symbol might turn into a procedure
symbol in the back-end.  Create a unique symbol so we can
mark it with a new field called IS_PROC_PTR_IFACE. This
field says that the symbol is used as an interface to a
procedure pointer. When the bridge sees this field set, it
knows to generate a closure pointer as the last argument at
the call-site.

This bug fix addresses Flang issue #577.
@sscalpone sscalpone merged commit cbadb27 into flang-compiler:master Nov 7, 2019
@sscalpone sscalpone deleted the ThePortlandGroup:nv_stage branch Nov 7, 2019
Copy link

kiranchandramohan left a comment

Fortran 2008 feature (execute_command_line) @gklimowicz :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.