Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
f8d0aee5
Commit
f8d0aee5
authored
Aug 22, 2004
by
Tobias Schlüter
Committed by
Tobias Schlüter
Aug 22, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* trans-const.c, trans-decl.c, trans-expr.c: Spelling fixes.
From-SVN: r86385
parent
44e91562
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
58 deletions
+73
-58
gcc/fortran/ChangeLog
+4
-0
gcc/fortran/trans-const.c
+5
-3
gcc/fortran/trans-decl.c
+25
-23
gcc/fortran/trans-expr.c
+39
-32
No files found.
gcc/fortran/ChangeLog
View file @
f8d0aee5
2004-08-22 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* trans-const.c, trans-decl.c, trans-expr.c: Spelling fixes.
2004-08-22 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* check.c (gfc_check_reduction): Rename to ...
(check_reduction): ... this. Make static. Don't check type of
first argument.
...
...
gcc/fortran/trans-const.c
View file @
f8d0aee5
...
...
@@ -46,6 +46,7 @@ tree gfc_strconst_current_filename;
tree
gfc_rank_cst
[
GFC_MAX_DIMENSIONS
+
1
];
/* Build a constant with given type from an int_cst. */
tree
gfc_build_const
(
tree
type
,
tree
intval
)
{
...
...
@@ -175,7 +176,7 @@ gfc_conv_mpz_to_tree (mpz_t i, int kind)
char
*
q
;
int
n
;
/* TODO: could be wrong if sizeof(HOST_WIDE_INT)
|
= SIZEOF (int). */
/* TODO: could be wrong if sizeof(HOST_WIDE_INT)
!
= SIZEOF (int). */
if
(
mpz_fits_slong_p
(
i
))
{
val
=
mpz_get_si
(
i
);
...
...
@@ -229,6 +230,7 @@ gfc_conv_mpz_to_tree (mpz_t i, int kind)
/* Converts a real constant into backend form. Uses an intermediate string
representation. */
tree
gfc_conv_mpfr_to_tree
(
mpfr_t
f
,
int
kind
)
{
...
...
@@ -343,7 +345,7 @@ gfc_conv_constant_to_tree (gfc_expr * expr)
}
/* Like gfc_conv_con
tr
ant_to_tree, but for a simplified expression.
/* Like gfc_conv_con
st
ant_to_tree, but for a simplified expression.
We can handle character literal constants here as well. */
void
...
...
@@ -366,7 +368,7 @@ gfc_conv_constant (gfc_se * se, gfc_expr * expr)
/* Translate the constant and put it in the simplifier structure. */
se
->
expr
=
gfc_conv_constant_to_tree
(
expr
);
/* If this is a CHARACTER string, set it
'
s length in the simplifier
/* If this is a CHARACTER string, set its length in the simplifier
structure, too. */
if
(
expr
->
ts
.
type
==
BT_CHARACTER
)
se
->
string_length
=
TYPE_MAX_VALUE
(
TYPE_DOMAIN
(
TREE_TYPE
(
se
->
expr
)));
...
...
gcc/fortran/trans-decl.c
View file @
f8d0aee5
...
...
@@ -238,7 +238,7 @@ gfc_get_label_decl (gfc_st_label * lp)
label_decl
=
gfc_build_label_decl
(
get_identifier
(
label_name
));
/* Tell the debugger where the label came from. */
if
(
lp
->
value
<=
MAX_LABEL_VALUE
)
/* An internal label */
if
(
lp
->
value
<=
MAX_LABEL_VALUE
)
/* An internal label
.
*/
{
DECL_SOURCE_LINE
(
label_decl
)
=
lp
->
where
.
lb
->
linenum
;
DECL_SOURCE_FILE
(
label_decl
)
=
lp
->
where
.
lb
->
file
->
filename
;
...
...
@@ -258,6 +258,7 @@ gfc_get_label_decl (gfc_st_label * lp)
static
tree
gfc_sym_identifier
(
gfc_symbol
*
sym
)
{
return
(
get_identifier
(
sym
->
name
));
}
...
...
@@ -375,7 +376,7 @@ gfc_finish_decl (tree decl, tree init)
static
void
gfc_finish_var_decl
(
tree
decl
,
gfc_symbol
*
sym
)
{
/* TREE_ADDRESSABLE means the address of this variable is ac
ua
ly needed.
/* TREE_ADDRESSABLE means the address of this variable is ac
tual
ly needed.
This is the equivalent of the TARGET variables.
We also need to set this if the variable is passed by reference in a
CALL statement. */
...
...
@@ -427,6 +428,7 @@ gfc_finish_var_decl (tree decl, gfc_symbol * sym)
void
gfc_allocate_lang_decl
(
tree
decl
)
{
DECL_LANG_SPECIFIC
(
decl
)
=
(
struct
lang_decl
*
)
ggc_alloc_cleared
(
sizeof
(
struct
lang_decl
));
}
...
...
@@ -555,7 +557,7 @@ gfc_build_dummy_array_decl (gfc_symbol * sym, tree dummy)
assert
(
TREE_CODE
(
dummy
)
==
PARM_DECL
&&
POINTER_TYPE_P
(
type
));
/* Do we know the element size
.
*/
/* Do we know the element size
?
*/
known_size
=
sym
->
ts
.
type
!=
BT_CHARACTER
||
INTEGER_CST_P
(
sym
->
ts
.
cl
->
backend_decl
);
...
...
@@ -758,7 +760,7 @@ gfc_get_symbol_decl (gfc_symbol * sym)
/* Create the decl for the variable. */
decl
=
build_decl
(
VAR_DECL
,
gfc_sym_identifier
(
sym
),
gfc_sym_type
(
sym
));
/* Symbols from modules
have its assembler name should be
mangled.
/* Symbols from modules
should have their assembler names
mangled.
This is done here rather than in gfc_finish_var_decl because it
is different for string length variables. */
if
(
sym
->
module
[
0
])
...
...
@@ -931,13 +933,13 @@ gfc_get_extern_function_decl (gfc_symbol * sym)
}
else
{
/* Global declaration, eg. intrinsic subroutine. */
/* Global declaration, e
.
g. intrinsic subroutine. */
DECL_CONTEXT
(
fndecl
)
=
NULL_TREE
;
}
DECL_EXTERNAL
(
fndecl
)
=
1
;
/* This specifies if a function is global
y addressable, i
e. it is
/* This specifies if a function is global
ly addressable, i.
e. it is
the opposite of declaring static in C. */
TREE_PUBLIC
(
fndecl
)
=
1
;
...
...
@@ -991,7 +993,7 @@ build_function_decl (gfc_symbol * sym)
SET_DECL_ASSEMBLER_NAME
(
fndecl
,
gfc_sym_mangled_function_id
(
sym
));
/* Figure out the return type of the declared function, and build a
RESULT_DECL for it. If this is subroutine with alternate
RESULT_DECL for it. If this is
a
subroutine with alternate
returns, build a RESULT_DECL for it. */
attr
=
sym
->
attr
;
...
...
@@ -1035,7 +1037,7 @@ build_function_decl (gfc_symbol * sym)
DECL_RESULT
(
fndecl
)
=
result_decl
;
/* Don't call layout_decl for a RESULT_DECL.
layout_decl (result_decl, 0); */
layout_decl (result_decl, 0);
*/
/* If the return type is a pointer, avoid alias issues by setting
DECL_IS_MALLOC to nonzero. This means that the function should be
...
...
@@ -1048,7 +1050,7 @@ build_function_decl (gfc_symbol * sym)
DECL_CONTEXT
(
fndecl
)
=
current_function_decl
;
DECL_EXTERNAL
(
fndecl
)
=
0
;
/* This specifies if a function is globaly visible, ie. it is
/* This specifies if a function is globaly visible, i
.
e. it is
the opposite of declaring static in C. */
if
(
DECL_CONTEXT
(
fndecl
)
==
NULL_TREE
&&
!
sym
->
attr
.
entry_master
)
...
...
@@ -1057,7 +1059,7 @@ build_function_decl (gfc_symbol * sym)
/* TREE_STATIC means the function body is defined here. */
TREE_STATIC
(
fndecl
)
=
1
;
/* Set attributes for PURE functions. A call to PURE function in the
/* Set attributes for PURE functions. A call to
a
PURE function in the
Fortran 95 sense is both pure and without side effects in the C
sense. */
if
(
attr
.
pure
||
attr
.
elemental
)
...
...
@@ -1153,7 +1155,7 @@ create_function_arglist (gfc_symbol * sym)
for
(
f
=
sym
->
formal
;
f
;
f
=
f
->
next
)
{
if
(
f
->
sym
!=
NULL
)
/* ignore alternate returns. */
if
(
f
->
sym
!=
NULL
)
/* ignore alternate returns.
*/
{
length
=
NULL_TREE
;
...
...
@@ -1284,22 +1286,22 @@ trans_function_start (gfc_symbol * sym)
fndecl
=
sym
->
backend_decl
;
/*
let GCC know the current scope is this function
*/
/*
Let GCC know the current scope is this function.
*/
current_function_decl
=
fndecl
;
/* Let the world know what e're about to do. */
/* Let the world know what
w
e're about to do. */
announce_function
(
fndecl
);
if
(
DECL_CONTEXT
(
fndecl
)
==
NULL_TREE
)
{
/*
create RTL for function declaration
*/
/*
Create RTL for function declaration.
*/
rest_of_decl_compilation
(
fndecl
,
1
,
0
);
}
/*
create RTL for function definition
*/
/*
Create RTL for function definition.
*/
make_decl_rtl
(
fndecl
);
/* Set the line and filename. sym->dec
al
red_at seems to point to the
/* Set the line and filename. sym->dec
la
red_at seems to point to the
last statement for subroutines, but it'll do for now. */
gfc_set_backend_locus
(
&
sym
->
declared_at
);
...
...
@@ -1311,7 +1313,7 @@ trans_function_start (gfc_symbol * sym)
not safe to try to expand expressions involving them. */
cfun
->
x_dont_save_pending_sizes_p
=
1
;
/* function.c requires a push at the start of the function */
/* function.c requires a push at the start of the function
.
*/
pushlevel
(
0
);
}
...
...
@@ -1333,7 +1335,7 @@ build_entry_thunks (gfc_namespace * ns)
/* This should always be a toplevel function. */
assert
(
current_function_decl
==
NULL_TREE
);
/* Remeber the master function argument decls. */
/* Reme
m
ber the master function argument decls. */
for
(
formal
=
ns
->
proc_name
->
formal
;
formal
;
formal
=
formal
->
next
)
{
}
...
...
@@ -1351,7 +1353,7 @@ build_entry_thunks (gfc_namespace * ns)
gfc_start_block
(
&
body
);
/* Pass extra parater identifying this entry point. */
/* Pass extra para
me
ter identifying this entry point. */
tmp
=
build_int_cst
(
gfc_array_index_type
,
el
->
id
,
0
);
args
=
tree_cons
(
NULL_TREE
,
tmp
,
NULL_TREE
);
string_args
=
NULL_TREE
;
...
...
@@ -1448,7 +1450,7 @@ gfc_create_function_decl (gfc_namespace * ns)
/* Create a declaration for the master function. */
build_function_decl
(
ns
->
proc_name
);
/* Compile t
eh
entry thunks. */
/* Compile t
he
entry thunks. */
if
(
ns
->
entries
)
build_entry_thunks
(
ns
);
...
...
@@ -1873,7 +1875,7 @@ gfc_trans_auto_character_variable (gfc_symbol * sym, tree fnbody)
/* Generate function entry and exit code, and add it to the function body.
This includes:
Allocation and initiali
s
ation of array variables.
Allocation and initiali
z
ation of array variables.
Allocation of character string variables.
Initialization and possibly repacking of dummy arrays. */
...
...
@@ -2088,7 +2090,7 @@ generate_local_decl (gfc_symbol * sym)
if
(
warn_unused_parameter
)
warning
(
"unused parameter `%s'"
,
sym
->
name
);
}
/*
w
arn for unused variables, but not if they're inside a common
/*
W
arn for unused variables, but not if they're inside a common
block or are use_associated. */
else
if
(
warn_unused_variable
&&
!
(
sym
->
attr
.
in_common
||
sym
->
attr
.
use_assoc
))
...
...
@@ -2239,7 +2241,7 @@ gfc_generate_function_code (gfc_namespace * ns)
warning
(
"Function return value not set"
);
else
{
/* Set the return value to the
the
dummy result variable. */
/* Set the return value to the dummy result variable. */
tmp
=
build
(
MODIFY_EXPR
,
TREE_TYPE
(
result
),
DECL_RESULT
(
fndecl
),
result
);
tmp
=
build_v
(
RETURN_EXPR
,
tmp
);
...
...
gcc/fortran/trans-expr.c
View file @
f8d0aee5
...
...
@@ -55,7 +55,7 @@ gfc_copy_se_loopvars (gfc_se * dest, gfc_se * src)
}
/* Initiali
s
e a simple expression holder.
/* Initiali
z
e a simple expression holder.
Care must be taken when multiple se are created with the same parent.
The child se must be kept in sync. The easiest way is to delay creation
...
...
@@ -76,7 +76,7 @@ gfc_init_se (gfc_se * se, gfc_se * parent)
/* Advances to the next SS in the chain. Use this rather than setting
se->ss = se->ss->next because all the parent needs to be kept in sync.
se->ss = se->ss->next because all the parent
s
needs to be kept in sync.
See gfc_init_se. */
void
...
...
@@ -90,7 +90,7 @@ gfc_advance_se_ss_chain (gfc_se * se)
/* Walk down the parent chain. */
while
(
p
!=
NULL
)
{
/* Simple consist
a
ncy check. */
/* Simple consist
e
ncy check. */
assert
(
p
->
parent
==
NULL
||
p
->
parent
->
ss
==
p
->
ss
);
p
->
ss
=
p
->
ss
->
next
;
...
...
@@ -111,7 +111,7 @@ gfc_make_safe_expr (gfc_se * se)
if
(
TREE_CODE_CLASS
(
TREE_CODE
(
se
->
expr
))
==
'c'
)
return
;
/*
we need a temporary for this result
*/
/*
We need a temporary for this result.
*/
var
=
gfc_create_var
(
TREE_TYPE
(
se
->
expr
),
NULL
);
gfc_add_modify_expr
(
&
se
->
pre
,
var
,
se
->
expr
);
se
->
expr
=
var
;
...
...
@@ -158,6 +158,7 @@ gfc_trans_init_string_length (gfc_charlen * cl, stmtblock_t * pblock)
gfc_add_modify_expr
(
pblock
,
tmp
,
se
.
expr
);
}
static
void
gfc_conv_substring
(
gfc_se
*
se
,
gfc_ref
*
ref
,
int
kind
)
{
...
...
@@ -345,7 +346,7 @@ gfc_conv_variable (gfc_se * se, gfc_expr * expr)
ref
=
ref
->
next
;
}
/* Pointer assignment, allocation or pass by reference. Arrays are handled
sep
e
rately. */
sep
a
rately. */
if
(
se
->
want_pointer
)
{
if
(
expr
->
ts
.
type
==
BT_CHARACTER
)
...
...
@@ -376,7 +377,7 @@ gfc_conv_unary_op (enum tree_code code, gfc_se * se, gfc_expr * expr)
/* TRUTH_NOT_EXPR is not a "true" unary operator in GCC.
We must convert it to a compare to 0 (e.g. EQ_EXPR (op1, 0)).
All other unary operators have an equivalent GIMPLE unary operator */
All other unary operators have an equivalent GIMPLE unary operator
.
*/
if
(
code
==
TRUTH_NOT_EXPR
)
se
->
expr
=
build
(
EQ_EXPR
,
type
,
operand
.
expr
,
convert
(
type
,
integer_zero_node
));
...
...
@@ -386,7 +387,7 @@ gfc_conv_unary_op (enum tree_code code, gfc_se * se, gfc_expr * expr)
}
/* Expand power operator to optimal multiplications when a value is raised
to a
n
constant integer n. See section 4.6.3, "Evaluation of Powers" of
to a constant integer n. See section 4.6.3, "Evaluation of Powers" of
Donald E. Knuth, "Seminumerical Algorithms", Vol. 2, "The Art of Computer
Programming", 3rd Edition, 1998. */
...
...
@@ -397,7 +398,7 @@ gfc_conv_unary_op (enum tree_code code, gfc_se * se, gfc_expr * expr)
with the first node being one. */
#define POWI_TABLE_SIZE 256
/* The table is from
B
uiltins.c. */
/* The table is from
b
uiltins.c. */
static
const
unsigned
char
powi_table
[
POWI_TABLE_SIZE
]
=
{
0
,
1
,
1
,
2
,
2
,
3
,
3
,
4
,
/* 0 - 7 */
...
...
@@ -434,11 +435,12 @@ static const unsigned char powi_table[POWI_TABLE_SIZE] =
124
,
166
,
125
,
214
,
126
,
138
,
127
,
153
,
/* 248 - 255 */
};
/* If n is larger than lookup table's max index, we use "window method". */
/* If n is larger than lookup table's max index, we use the "window
method". */
#define POWI_WINDOW_SIZE 3
/* Recursive function to expand
power operator. The temporary values are put
in tmpvar. The function return
tmpvar[1] ** n. */
/* Recursive function to expand
the power operator. The temporary
values are put in tmpvar. The function returns
tmpvar[1] ** n. */
static
tree
gfc_conv_powi
(
gfc_se
*
se
,
int
n
,
tree
*
tmpvar
)
{
...
...
@@ -476,8 +478,10 @@ gfc_conv_powi (gfc_se * se, int n, tree * tmpvar)
return
tmp
;
}
/* Expand lhs ** rhs. rhs is an constant integer. If expand successfully,
return 1. Else return 0 and will call runtime library functions. */
/* Expand lhs ** rhs. rhs is a constant integer. If it expands successfully,
return 1. Else return 0 and a call to runtime library functions
will have to be built. */
static
int
gfc_conv_cst_int_power
(
gfc_se
*
se
,
tree
lhs
,
tree
rhs
)
{
...
...
@@ -509,7 +513,7 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs)
cond
=
build
(
EQ_EXPR
,
boolean_type_node
,
lhs
,
convert
(
TREE_TYPE
(
lhs
),
integer_one_node
));
/* If rhs is
an
even,
/* If rhs is even,
result = (lhs == 1 || lhs == -1) ? 1 : 0. */
if
((
n
&
1
)
==
0
)
{
...
...
@@ -519,7 +523,7 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs)
convert
(
type
,
integer_zero_node
));
return
1
;
}
/* If rhs is
an
odd,
/* If rhs is odd,
result = (lhs == 1) ? 1 : (lhs == -1) ? -1 : 0. */
tmp
=
build
(
COND_EXPR
,
type
,
tmp
,
convert
(
type
,
integer_minus_one_node
),
...
...
@@ -777,9 +781,9 @@ gfc_conv_concat_op (gfc_se * se, gfc_expr * expr)
/* Translates an op expression. Common (binary) cases are handled by this
function, others are passed on. Recursion is used in either case.
We use the fact that (op1.ts == op2.ts) (except for the power
opera
nd
**).
opera
tor
**).
Operators need no special handling for scalarized expressions as long as
they call gfc_conv_siple_val to get their operands.
they call gfc_conv_si
m
ple_val to get their operands.
Character strings get special handling. */
static
void
...
...
@@ -900,7 +904,7 @@ gfc_conv_expr_op (gfc_se * se, gfc_expr * expr)
return
;
}
/* The only exception to this is **, which is handled sep
e
rately anyway. */
/* The only exception to this is **, which is handled sep
a
rately anyway. */
assert
(
expr
->
op1
->
ts
.
type
==
expr
->
op2
->
ts
.
type
);
if
(
checkstring
&&
expr
->
op1
->
ts
.
type
!=
BT_CHARACTER
)
...
...
@@ -946,12 +950,12 @@ gfc_conv_expr_op (gfc_se * se, gfc_expr * expr)
else
se
->
expr
=
fold
(
build
(
code
,
type
,
lse
.
expr
,
rse
.
expr
));
/* Add the post blocks. */
gfc_add_block_to_block
(
&
se
->
post
,
&
rse
.
post
);
gfc_add_block_to_block
(
&
se
->
post
,
&
lse
.
post
);
}
static
void
gfc_conv_function_val
(
gfc_se
*
se
,
gfc_symbol
*
sym
)
{
...
...
@@ -1125,11 +1129,13 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
}
else
{
/* If the procedure requires explicit interface, actual argument
is passed according to corresponing formal argument. We
do not use g77 method and the address of array descriptor
is passed if corresponing formal is pointer or
assumed-shape, Otherwise use g77 method. */
/* If the procedure requires an explicit interface, the
actual argument is passed according to the
corresponding formal argument. If the corresponding
formal argument is a POINTER or assumed shape, we do
not use g77's calling aonvention, and pass the
address of the array descriptor instead. Otherwise we
use g77's calling convention. */
int
f
;
f
=
(
formal
!=
NULL
)
&&
!
formal
->
sym
->
attr
.
pointer
...
...
@@ -1164,8 +1170,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
se
->
expr
=
build
(
CALL_EXPR
,
TREE_TYPE
(
fntype
),
se
->
expr
,
arglist
,
NULL_TREE
);
/* A pure function may still have side-effects - it may modify its
parameters. */
/* A pure function may still have side-effects - it may modify its
parameters. */
TREE_SIDE_EFFECTS
(
se
->
expr
)
=
1
;
#if 0
if (!sym->attr.pure)
...
...
@@ -1324,7 +1330,7 @@ gfc_conv_statement_function (gfc_se * se, gfc_expr * expr)
se
->
string_length
=
sym
->
ts
.
cl
->
backend_decl
;
}
/* Resore the original variables. */
/* Res
t
ore the original variables. */
for
(
fargs
=
sym
->
formal
,
n
=
0
;
fargs
;
fargs
=
fargs
->
next
,
n
++
)
gfc_restore_sym
(
fargs
->
sym
,
&
saved_vars
[
n
]);
gfc_free
(
saved_vars
);
...
...
@@ -1344,7 +1350,7 @@ gfc_conv_function_expr (gfc_se * se, gfc_expr * expr)
return
;
}
/* We distinguish
the statement function from general function
to improve
/* We distinguish
statement functions from general functions
to improve
runtime performance. */
if
(
expr
->
symtree
->
n
.
sym
->
attr
.
proc
==
PROC_ST_FUNCTION
)
{
...
...
@@ -1360,6 +1366,7 @@ gfc_conv_function_expr (gfc_se * se, gfc_expr * expr)
gfc_conv_function_call
(
se
,
sym
,
expr
->
value
.
function
.
actual
);
}
static
void
gfc_conv_array_constructor_expr
(
gfc_se
*
se
,
gfc_expr
*
expr
)
{
...
...
@@ -1372,8 +1379,8 @@ gfc_conv_array_constructor_expr (gfc_se * se, gfc_expr * expr)
/* Build a static initializer. EXPR is the expression for the initial value.
The other parameters describe the variable of
component being initialized.
EXPR may be null. */
The other parameters describe the variable of
the component being
initialized.
EXPR may be null. */
tree
gfc_conv_initializer
(
gfc_expr
*
expr
,
gfc_typespec
*
ts
,
tree
type
,
...
...
@@ -1673,7 +1680,7 @@ gfc_conv_structure (gfc_se * se, gfc_expr * expr, int init)
}
/*
translate a substring expression
*/
/*
Translate a substring expression.
*/
static
void
gfc_conv_substring_expr
(
gfc_se
*
se
,
gfc_expr
*
expr
)
...
...
@@ -1780,7 +1787,7 @@ gfc_conv_expr_type (gfc_se * se, gfc_expr * expr, tree type)
}
/* Converts an expression so that it can be passed by refer
ne
ce. Scalar
/* Converts an expression so that it can be passed by refer
en
ce. Scalar
values only. */
void
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment