Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[flang] Fix bugs relating to support for characters of different kinds
Fix bugs relating to support for characters of different kinds. Lowering was creating bad FIR and MLIR that crashed in conversion to LLVM IR. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D128723 Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
- Loading branch information
1 parent
7faf75b
commit ae35635
Showing
3 changed files
with
48 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
! RUN: bbc %s -o - | tco | FileCheck %s | ||
|
||
character(LEN=128, KIND=4), PARAMETER :: conarr(3) = & | ||
[ character(128,4) :: "now is the time", "for all good men to come", & | ||
"to the aid of the country" ] | ||
character(LEN=10, KIND=4) :: arr(3) = & | ||
[ character(10,4) :: "good buddy", "best buddy", " " ] | ||
call action_on_char4(conarr) | ||
call action_on_char4(arr) | ||
end program | ||
|
||
subroutine sub1 | ||
integer, parameter :: k = 4 | ||
character(63,k), parameter :: wiggle = k_"wiggle" | ||
call sub2(wiggle) | ||
end subroutine sub1 | ||
|
||
! CHECK-LABEL: @_QFEarr = internal global [3 x [10 x i32]] [ | ||
! CHECK-SAME: [10 x i32] [i32 103, i32 111, i32 111, i32 100, i32 32, i32 98, i32 117, i32 100, i32 100, i32 121], | ||
! CHECK-SAME: [10 x i32] [i32 98, i32 101, i32 115, i32 116, i32 32, i32 98, i32 117, i32 100, i32 100, i32 121], | ||
! CHECK-SAME: [10 x i32] [i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32]] | ||
! CHECK-LABEL: @_QFsub1ECwiggle = internal constant [63 x i32] [i32 119, | ||
! CHECK-SAME: i32 105, i32 103, i32 103, i32 108, i32 101, i32 32, i32 32, | ||
! CHECK: @_QQcl[[inline:.*]] = linkonce constant [63 x i32] [i32 119, i32 105, i32 103, i32 103, i32 108, i32 101, i32 32, | ||
|
||
! CHECK-LABEL: define void @_QQmain() | ||
! CHECK: call void @_QPaction_on_char4(ptr @_QFEarr, i64 10) | ||
|
||
! CHECK-LABEL: define void @_QPsub1( | ||
! CHECK: call void @_QPsub2(ptr @_QQcl.77, i64 63) |