diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2004-12-08 12:27:00 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2004-12-08 12:27:00 +0100 |
commit | 98f01d532a15a16c5d9afb0d35c9ea18688d2541 (patch) | |
tree | e3354052180da5126261623c30a67e2d42ebd791 /gcc/ada/exp_intr.adb | |
parent | 2717634daab64ed32a49b329f61cf0064f80f046 (diff) | |
download | gcc-98f01d532a15a16c5d9afb0d35c9ea18688d2541.zip gcc-98f01d532a15a16c5d9afb0d35c9ea18688d2541.tar.gz gcc-98f01d532a15a16c5d9afb0d35c9ea18688d2541.tar.bz2 |
exp_ch6.adb (Expand_Call): Add comment on handling of back end intrinsic
* exp_ch6.adb (Expand_Call): Add comment on handling of back end
intrinsic
* exp_intr.adb (Expand_Intrinsic_Call): Ignore unrecognized intrinsic,
leaving call unchanged.
This deals with the case where the pragma Import specified
an external name, to be handled by the back end.
* sem_prag.adb (Process_Import_Or_Interface): Do not check validity of
subprogram which is Imported with convention Intrinsic if an
External_Name argument is specified.
(Process_Import_Or_Interface): Properly diagnose link name argument.
(Inlining_Not_Possible): New name for Cannot_Inline, to avoid confusion
with Sem_Ch6.Cannot_Inline.
(Process_Inline): Provide separate warning for inapplicable inline
pragma.
(Cannot_Inline): Reject subprograms that have an at_end handler, so that
treatment is uniform on different targets.
From-SVN: r91882
Diffstat (limited to 'gcc/ada/exp_intr.adb')
-rw-r--r-- | gcc/ada/exp_intr.adb | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ada/exp_intr.adb b/gcc/ada/exp_intr.adb index 7f99eb5..8f41704 100644 --- a/gcc/ada/exp_intr.adb +++ b/gcc/ada/exp_intr.adb @@ -281,12 +281,21 @@ package body Exp_Intr is then Expand_Source_Info (N, Nam); - else - -- Only other possibility is a renaming, in which case we expand - -- the call to the original operation (which must be intrinsic). + -- If we have a renaming, expand the call to the original operation, + -- which must itself be intrinsic, since renaming requires matching + -- conventions and this has already been checked. - pragma Assert (Present (Alias (E))); + elsif Present (Alias (E)) then Expand_Intrinsic_Call (N, Alias (E)); + + -- The only other case is where an external name was specified, + -- since this is the only way that an otherwise unrecognized + -- name could escape the checking in Sem_Prag. Nothing needs + -- to be done in such a case, since we pass such a call to the + -- back end unchanged. + + else + null; end if; end Expand_Intrinsic_Call; |