forked from OSchip/llvm-project
[flang] address review comments
Original-commit: flang-compiler/f18@6f4af0fc1b Reviewed-on: https://github.com/flang-compiler/f18/pull/304 Tree-same-pre-rewrite: false
This commit is contained in:
parent
92b0c8412c
commit
94baaab8a8
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
# Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
|
||||
R0001 digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
||||
R0002 letter ->
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
|
||||
// Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -3052,8 +3052,7 @@ bool DeclarationVisitor::Pre(const parser::ProcPointerInit &x) {
|
|||
}
|
||||
bool DeclarationVisitor::Pre(const parser::ProcInterface &x) {
|
||||
if (auto *name{std::get_if<parser::Name>(&x.u)}) {
|
||||
if (!FindSymbol(*name) &&
|
||||
!HandleUnrestrictedSpecificIntrinsicFunction(*name)) {
|
||||
if (!NameIsKnownOrIntrinsic(*name)) {
|
||||
// Simple names (lacking parameters and size) of intrinsic types re
|
||||
// ambiguous in Fortran when used as instances of proc-interface.
|
||||
// The parser recognizes them as interface-names since they can be
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
! Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
|
||||
!
|
||||
! Licensed under the Apache License, Version 2.0 (the "License");
|
||||
! you may not use this file except in compliance with the License.
|
||||
! You may obtain a copy of the License at
|
||||
!
|
||||
! http://www.apache.org/licenses/LICENSE-2.0
|
||||
!
|
||||
! Unless required by applicable law or agreed to in writing, software
|
||||
! distributed under the License is distributed on an "AS IS" BASIS,
|
||||
! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
! See the License for the specific language governing permissions and
|
||||
! limitations under the License.
|
||||
|
||||
function f1(x, y)
|
||||
integer x
|
||||
!ERROR: SAVE attribute may not be applied to dummy argument 'x'
|
||||
!ERROR: SAVE attribute may not be applied to dummy argument 'y'
|
||||
save x,y
|
||||
integer y
|
||||
!ERROR: SAVE attribute may not be applied to function result 'f1'
|
||||
save f1
|
||||
end
|
||||
|
||||
function f2(x, y)
|
||||
!ERROR: SAVE attribute may not be applied to function result 'f2'
|
||||
real, save :: f2
|
||||
!ERROR: SAVE attribute may not be applied to dummy argument 'x'
|
||||
complex, save :: x
|
||||
allocatable :: y
|
||||
!ERROR: SAVE attribute may not be applied to dummy argument 'y'
|
||||
integer, save :: y
|
||||
end
|
||||
|
||||
subroutine s3(x)
|
||||
!ERROR: SAVE attribute may not be applied to dummy argument 'x'
|
||||
procedure(integer), pointer, save :: x
|
||||
!ERROR: Procedure 'y' with SAVE attribute must also have POINTER attribute
|
||||
procedure(integer), save :: y
|
||||
end
|
||||
|
||||
subroutine s4
|
||||
!ERROR: Explicit SAVE of 'z' is redundant due to global SAVE statement
|
||||
save z
|
||||
save
|
||||
procedure(integer), pointer :: x
|
||||
!ERROR: Explicit SAVE of 'x' is redundant due to global SAVE statement
|
||||
save :: x
|
||||
!ERROR: Explicit SAVE of 'y' is redundant due to global SAVE statement
|
||||
integer, save :: y
|
||||
end
|
||||
|
||||
subroutine s5
|
||||
implicit none
|
||||
integer x
|
||||
block
|
||||
!ERROR: No explicit type declared for 'x'
|
||||
save x
|
||||
end block
|
||||
end
|
||||
|
||||
subroutine s6
|
||||
save x
|
||||
save y
|
||||
!ERROR: SAVE attribute was already specified on 'y'
|
||||
integer, save :: y
|
||||
integer, save :: z
|
||||
!ERROR: SAVE attribute was already specified on 'x'
|
||||
!ERROR: SAVE attribute was already specified on 'z'
|
||||
save x,z
|
||||
end
|
||||
|
||||
subroutine s7
|
||||
!ERROR: 'x' appears as a COMMON block in a SAVE statement but not in a COMMON statement
|
||||
save /x/
|
||||
end
|
|
@ -16,6 +16,7 @@ program main
|
|||
intrinsic :: cos ! a specific & generic intrinsic name
|
||||
intrinsic :: alog10 ! a specific intrinsic name, not generic
|
||||
intrinsic :: null ! a weird special case
|
||||
intrinsic :: bessel_j0 ! generic intrinsic, not specific
|
||||
!ERROR: 'haltandcatchfire' is not a known intrinsic procedure
|
||||
intrinsic :: haltandcatchfire
|
||||
procedure(sin), pointer :: p
|
||||
|
@ -25,4 +26,6 @@ program main
|
|||
p => tan ! a generic & an unrestricted specific, not already declared
|
||||
!TODO ERROR: a restricted specific, to be caught in ass't semantics
|
||||
p => amin1
|
||||
!TODO ERROR: a generic, to be caught in ass't semantics
|
||||
p => bessel_j0
|
||||
end program main
|
||||
|
|
Loading…
Reference in New Issue