1996-02-01 20:33:01 +01:00
|
|
|
|
/* RunTime Type Identification
|
2005-01-18 12:45:39 +01:00
|
|
|
|
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
2012-03-19 16:51:25 +01:00
|
|
|
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
(expand_builtin_strcpy): Pass correct type to size_binop.
(expand_builtin_strcmp): Likewise.
Clean up conditional structure.
* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
(complete_array_type): Don't use size_binop for MAXINDEX.
* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
(c_sizeof_nowarn, c_size_in_bytes): Likewise.
(c_alignof): Use size_one_node.
(build_unary_op): Pass arg of proper type to size_binop.
(really_start_incremental_init, push_init_level): Use sizetype for
constructor{,_bit,_unfilled}_index.
(pop_init_label, output_init_element): Likewise.
(output_pending_init_elements, process_init_element): Likewise.
* calls.c (compute_argument_block_size): Field VAR is ssizetype.
* expr.c (store_expr): Use size_int.
(store_constructor): Use proper types for size_binop args.
(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
(expand_expr_unaligned): Likewise.
(string_contant): Return object of sizetype.
* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
(ARGS_SIZE_TREE): Pass proper types to size_binop.
* fold-const.c (int_const_binop): Refine when size_int is called.
(fold_convert): Likewise.
(size_int_wide): Rework to take KIND as arg, only take low order
bits, handle new sizetype_tab datatype, and chain entries in
size_table.
(size_int_type_wide): New function.
(size_binop): Validate types of arguments.
(ssize_binop): Deleted.
(size_diffop): New function.
(extract_muldiv): Only fold division into multiplication for sizetypes.
* function.c (assign_parms): Use size_diffop and make sure
VAR field is of ssizetype; also pass proper type to size_binop.
(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
(round_down): Deleted from here.
* store-layout.c (sizetype_tab): Now an array.
(sizetype_set, early_root_list): New variables.
(variable_size): Use size_one_node.
(round_up): Pass proper type to size_binop.
(round_down): Moved to here and corrected as above.
(layout_record): Pass proper arg types to size_binop.
(layout_type): Likewise.
If sizetype_set is zero, record the type just laid out.
(make_unsigned_type): Don't call set_sizetype;
(make_signed_type): Likewise; also, call fixup_signed_type.
(initialize_sizetypes): New function.
(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
set name of bitsizetype to "bit_size_type".
Fix up type of sizes of all types made before call.
* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
* tree.c (fix_sizetype): Deleted.
(build_common_tree_nodes): Call initialize_sizetypes.
(build_common_tree_nodes_2): Don't call fix_sizetype.
* tree.h (TYPE_IS_SIZETYPE): New macro.
(initialize_sizetype): New declaration.
(enum size_type_kind): New type.
(struct sizetype_tab): Deleted.
(sizetype_tab): Now array; adjust sizetype macros.
(size_diffop, size_int_type_wide): New functions.
(size_int_wide): Change number of args and type; access macros changed.
(ssize_int, sbitsize_int): New macros.
* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
(ROUND_TYPE_SIZE_UNIT): New macro.
* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
for things that aren't sizes.
(expand_varying_length_assignment): Likewise.
* ch/convert.c (digest_array_tuple, convert): Likewise.
* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
(build_chill_slice_with_range): Likewise.
(build_chill_slice_with_length): Likewise.
(build_array_from_set): Adjust types for size_binop.
* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
(build_chill_sizeof): Use TYPE_SIZE_UNIT.
* ch/tree.c (build_string_type): Pass proper type to size_binop.
* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
size_binop on things that are not sizes; ssize_binop deleted.
Call size_diffop when appropriate.
(dfs_build_vcall_offset_vtbl_entries): Likewise.
(build_primary_vtable, build_secondary_vtable): Likewise.
(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
Variable I is HOST_WIDE_INT.
(get_vfield_offset): Pass proper types to size_binop.
(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
(finish_struct_1): Likewise.
(skip_rtti_stuff): Arg N is now pointer to signed.
(layout_class_type): Use size_zero_node.
* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
(xref_basetypes): BINFO_OFFSET is sizetype.
* cp/error.c (dump_expr): Don't use size_binop non-sizes.
* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
* cp/init.c (construct_virtual_bases): Fix type error.
(build_vec_delete_1): Pass proper type to size_binop and don't
fold result.
* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
* cp/search.c (dfs_find_vbases): Fix type error.
(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
* cp/tree.c (debug_binfo): Variable N is signed.
Use HOST_WIDE_INT_PRINT_DEC.
* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
size_one_node and size_zero_node.
(c_alignof): Use size_one_node.
(build_component_addr): Pass proper types to size_binop.
(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
type.
(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
(ffecom_tree_canonize_ref_): Likewise.
(type_for_mode): Handle TImode.
* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
(ffeste_io_ciclist_): Likewise.
* java/expr.c (build_java_ret): Pass proper type to size_binop.
From-SVN: r32225
2000-02-27 22:39:40 +01:00
|
|
|
|
Free Software Foundation, Inc.
|
1996-04-13 01:55:07 +02:00
|
|
|
|
Mostly written by Jason Merrill (jason@cygnus.com).
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
call.c, [...]: Replace "GNU CC" with "GCC" in the copyright header.
* call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
copyright header.
* lex.h: parse.y is dead, so don't mention it. Also replace the
copyright header with the default GNU copyright header.
From-SVN: r60738
2003-01-01 12:58:58 +01:00
|
|
|
|
This file is part of GCC.
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
call.c, [...]: Replace "GNU CC" with "GCC" in the copyright header.
* call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
copyright header.
* lex.h: parse.y is dead, so don't mention it. Also replace the
copyright header with the default GNU copyright header.
From-SVN: r60738
2003-01-01 12:58:58 +01:00
|
|
|
|
GCC is free software; you can redistribute it and/or modify
|
1996-02-01 20:33:01 +01:00
|
|
|
|
it under the terms of the GNU General Public License as published by
|
typeck.c: Change copyright header to refer to version 3 of the GNU General Public...
* typeck.c: Change copyright header to refer to version 3 of the GNU General
Public License and to point readers at the COPYING3 file and the FSF's license
web page.
* optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c, config-lang.in,
cp-tree.def, call.c, decl.h, ptree.c, Make-lang.in, method.c, rtti.c,
cp-objcp-common.c, g++spec.c, cp-objcp-common.h, except.c, error.c,
operators.def, cvt.c, tree.c, mangle.c, cp-tree.h, dump.c, search.c,
friend.c, expr.c, cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c,
pt.c, cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
name-lookup.h, parser.c: Likewise.
From-SVN: r127154
2007-08-02 12:36:13 +02:00
|
|
|
|
the Free Software Foundation; either version 3, or (at your option)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
any later version.
|
|
|
|
|
|
call.c, [...]: Replace "GNU CC" with "GCC" in the copyright header.
* call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
copyright header.
* lex.h: parse.y is dead, so don't mention it. Also replace the
copyright header with the default GNU copyright header.
From-SVN: r60738
2003-01-01 12:58:58 +01:00
|
|
|
|
GCC is distributed in the hope that it will be useful,
|
1996-02-01 20:33:01 +01:00
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
typeck.c: Change copyright header to refer to version 3 of the GNU General Public...
* typeck.c: Change copyright header to refer to version 3 of the GNU General
Public License and to point readers at the COPYING3 file and the FSF's license
web page.
* optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c, config-lang.in,
cp-tree.def, call.c, decl.h, ptree.c, Make-lang.in, method.c, rtti.c,
cp-objcp-common.c, g++spec.c, cp-objcp-common.h, except.c, error.c,
operators.def, cvt.c, tree.c, mangle.c, cp-tree.h, dump.c, search.c,
friend.c, expr.c, cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c,
pt.c, cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
name-lookup.h, parser.c: Likewise.
From-SVN: r127154
2007-08-02 12:36:13 +02:00
|
|
|
|
along with GCC; see the file COPYING3. If not see
|
|
|
|
|
<http://www.gnu.org/licenses/>. */
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
|
|
|
|
#include "config.h"
|
call.c: Include system.h.
* call.c: Include system.h. Remove includes, declarations and
defines provided by system.h.
* class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
* except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
* lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
* semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
* typeck2.c, xref.c: Likewise.
* Makefile.in: Dependencies updated as appropriate.
* Make-lang.in: Likewise.
system.h cutover from the cp subdir
From-SVN: r18917
1998-03-31 15:25:46 +02:00
|
|
|
|
#include "system.h"
|
2009-12-02 16:49:20 +01:00
|
|
|
|
#include "intl.h"
|
2002-12-16 19:23:00 +01:00
|
|
|
|
#include "coretypes.h"
|
|
|
|
|
#include "tm.h"
|
1996-02-01 20:33:01 +01:00
|
|
|
|
#include "tree.h"
|
|
|
|
|
#include "cp-tree.h"
|
|
|
|
|
#include "flags.h"
|
|
|
|
|
#include "output.h"
|
2003-07-29 03:14:24 +02:00
|
|
|
|
#include "convert.h"
|
2007-01-09 08:48:38 +01:00
|
|
|
|
#include "target.h"
|
2010-06-05 22:33:22 +02:00
|
|
|
|
#include "c-family/c-pragma.h"
|
1996-09-30 23:34:04 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
/* C++ returns type information to the user in struct type_info
|
|
|
|
|
objects. We also use type information to implement dynamic_cast and
|
|
|
|
|
exception handlers. Type information for a particular type is
|
|
|
|
|
indicated with an ABI defined structure derived from type_info.
|
|
|
|
|
This would all be very straight forward, but for the fact that the
|
|
|
|
|
runtime library provides the definitions of the type_info structure
|
|
|
|
|
and the ABI defined derived classes. We cannot build declarations
|
|
|
|
|
of them directly in the compiler, but we need to layout objects of
|
|
|
|
|
their type. Somewhere we have to lie.
|
|
|
|
|
|
|
|
|
|
We define layout compatible POD-structs with compiler-defined names
|
|
|
|
|
and generate the appropriate initializations for them (complete
|
|
|
|
|
with explicit mention of their vtable). When we have to provide a
|
|
|
|
|
type_info to the user we reinterpret_cast the internal compiler
|
|
|
|
|
type to type_info. A well formed program can only explicitly refer
|
|
|
|
|
to the type_infos of complete types (& cv void). However, we chain
|
|
|
|
|
pointer type_infos to the pointed-to-type, and that can be
|
|
|
|
|
incomplete. We only need the addresses of such incomplete
|
|
|
|
|
type_info objects for static initialization.
|
|
|
|
|
|
|
|
|
|
The type information VAR_DECL of a type is held on the
|
|
|
|
|
IDENTIFIER_GLOBAL_VALUE of the type's mangled name. That VAR_DECL
|
|
|
|
|
will be the internal type. It will usually have the correct
|
|
|
|
|
internal type reflecting the kind of type it represents (pointer,
|
|
|
|
|
array, function, class, inherited class, etc). When the type it
|
|
|
|
|
represents is incomplete, it will have the internal type
|
|
|
|
|
corresponding to type_info. That will only happen at the end of
|
|
|
|
|
translation, when we are emitting the type info objects. */
|
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Auxiliary data we hold for each type_info derived object we need. */
|
2009-04-22 20:29:36 +02:00
|
|
|
|
typedef struct GTY (()) tinfo_s {
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree type; /* The RECORD_TYPE for this type_info object */
|
|
|
|
|
|
|
|
|
|
tree vtable; /* The VAR_DECL of the vtable. Only filled at end of
|
|
|
|
|
translation. */
|
|
|
|
|
|
|
|
|
|
tree name; /* IDENTIFIER_NODE for the ABI specified name of
|
|
|
|
|
the type_info derived type. */
|
|
|
|
|
} tinfo_s;
|
|
|
|
|
|
|
|
|
|
DEF_VEC_O(tinfo_s);
|
|
|
|
|
DEF_VEC_ALLOC_O(tinfo_s,gc);
|
|
|
|
|
|
|
|
|
|
typedef enum tinfo_kind
|
|
|
|
|
{
|
2007-11-01 23:50:32 +01:00
|
|
|
|
TK_TYPE_INFO_TYPE, /* abi::__type_info_pseudo */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
TK_BASE_TYPE, /* abi::__base_class_type_info */
|
|
|
|
|
TK_BUILTIN_TYPE, /* abi::__fundamental_type_info */
|
|
|
|
|
TK_ARRAY_TYPE, /* abi::__array_type_info */
|
|
|
|
|
TK_FUNCTION_TYPE, /* abi::__function_type_info */
|
|
|
|
|
TK_ENUMERAL_TYPE, /* abi::__enum_type_info */
|
|
|
|
|
TK_POINTER_TYPE, /* abi::__pointer_type_info */
|
|
|
|
|
TK_POINTER_MEMBER_TYPE, /* abi::__pointer_to_member_type_info */
|
|
|
|
|
TK_CLASS_TYPE, /* abi::__class_type_info */
|
|
|
|
|
TK_SI_CLASS_TYPE, /* abi::__si_class_type_info */
|
2006-06-06 13:44:09 +02:00
|
|
|
|
TK_FIXED /* end of fixed descriptors. */
|
|
|
|
|
/* ... abi::__vmi_type_info<I> */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
} tinfo_kind;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2004-09-22 20:12:10 +02:00
|
|
|
|
/* A vector of all tinfo decls that haven't yet been emitted. */
|
vec.h: Update API to separate allocation mechanism from type.
* vec.h: Update API to separate allocation mechanism from type.
(VEC_safe_grow): New.
* vec.c (calculate_allocation): New.
(vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
(vec_gc_free, vec_heap_free): Remove.
* gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
(VEC): Likewise.
(mangle_macro_name): New.
(struct macro_def): New.
(struct macro): Add multiple argument values.
(macro_expans_end): New.
(push_macro_expansion): Chain on new macro. Process multiple
args, create follow on expansion. Return follow on argument.
(macro_input): Deal with multiple arguments.
* tree.h: Define VEC(tree,heap) and VEC(tree,gc).
(struct tree_binfo): Adjust.
* basic-block.h: Define VEC(edge,gc).
(struct edge_def): Adjust.
(struct basic_block_def, struct edge_iterator): Likewise.
(ei_container, ei_start_1, ei_last_1): Likewise.
* cfg.c (connect_src, connect_dest): Likewise.
* cfgrtl.c (force_nonfallthru_and_redirect)
* dbxout.c (dbxout_type)
* dwarf2out.c (gen_member_die)
* lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
(gcc_tree_to_linear_expression): Adjust.
(gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
lbv_to_gcc_expression, lle_to_gcc_expression,
lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
perfect_nestify): Likewise.
* lambda.h (gcc_loopnest_to_lambda_loopnest,
lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
* profile.c (instrument_values): Adjust.
* tree-cfg.c (modified_noreturn_calls): Adjust.
(remove_fallthru_edge): Likewise.
* tree-dump.c (dequeue_and_dump): Adjust.
* tree-flow-inline.h (mark_stmt_modified): Adjust.
* tree-flow.h (modified_noreturn_calls): Adjust.
(tree_on_heap): Remove. (yay!)
(register_new_def): Adjust.
* tree-into-ssa.c: Define VEC(int,heap).
(block_defs_stack): Adjust.
(find_idf, insert_phi_nodes, register_new_def,
rewrite_initialize_block, rewrite_finalize_block,
register_new_update_single, rewrite_update_init_block,
rewrite_update_fini_block, rewrite_blocks,
ssa_rewrite_finalize_block, ssa_register_new_def,
ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
* tree-loop-linear.c (linear_transform_loops): Adjust.
* tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
(push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
* tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
vrp_variables_stack): Adjust declarations.
(tree_ssa_dominator_optimize): Adjust.
(dom_opt_initialize_block, remove_local_expressions_from_table,
restore_nonzero_vars_to_original_value,
restore_vars_to_original_value,
restore_currdefs_to_original_value, dom_opt_finalize_block,
record_var_is_nonzero, record_cond, record_const_or_copy_1,
optimize_stmt, update_rhs_and_lookup_avail_expr,
lookup_avail_expr, record_range): Likewise.
* tree-ssa-pre.c: Define VEC(basic_block,heap).
(compute_antic_aux): Adjust.
(inserted_exprs, create_expression_by_pieces,
insert_into_preds_of_block, eliminate, mark_operand_necessary,
remove_dead_inserted_code, fini_pre): Likewise.
* tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
(varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
ssa_prop_init): Likewise.
* tree-ssa.c: Define VEC(bitmap,heap).
(verify_name_tags): Adjust.
* value-prof.c (rtl_divmod_values_to_profile): Adjust.
(insn_prefetch_values_to_profile, rtl_find_values_to_profile,
tree_divmod_values_to_profile, tree_find_values_to_profile,
value_profile_transformations): Likewise.
* value-prof.h: Define VEC(histogram_value,heap).
* varasm.c: Remove alias_pair pointer typedef, define
VEC(alias_pair,gc).
(finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
* config/pa/pa.c (typedef extern_symbol): Typedef the structure,
not a pointer to it. Create an object vector.
(extern_symbols): Turn into an object vector.
(pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
* cp/cp-tree.h: Adjust for new VEC API.
Define VEC(tree_pair_s,gc).
(struct save_scope): Adjust.
(struct lang_type_class): Adjust.
(unemitted_tinfo_decls): Adjust.
* cp/class.c (add_method, resort_type_method_vec,
finish_struct_methods, struct find_final_overrider_data,
dfs_find_final_overrider_pre, find_final_overrider,
get_vcall_index, warn_hidden, walk_subobject_offsets,
check_methods, fixup_inline_methods, end_of_class,
warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
add_vcall_offset): Adjust.
* cp/decl.c (xref_basetypes, finish_method): Adjust.
* cp/decl2.c (check_classfn): Adjust.
* cp/init.c (sort_mem_initializers, push_base_cleanups): Adjust.
* cp/method.c (do_build_copy_constructor): Adjust.
* cp/name-lookup.c (new_class_binding, store_binding,
store_bindings, store_class_bindings): Adjust.
* cp/name-lookup.h: Define VEC(cxx_saved_binding,gc),
VEC(cp_class_binding,gc).
(struct cp_binding_level): Adjust.
* cp/parser.c: Define VEC(cp_token_position,heap).
(struct cp_lexer): Adjust.
(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
cp_lexer_save_tokens): Adjust.
* cp/pt.c (retrieve_specialization,
check_explicit_specialization): Adjust.
* cp/rtti.c (unemitted_tinfo_decls): Adjust.
(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
get_pseudo_ti_desc): Adjust.
* cp/search.c (dfs_access_in_type, lookup_conversion_operator,
lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
* cp/semantics.c: Define VEC(deferred_access,gc).
(push_deferring_access_checks): Adjust.
* cp/typeck2.c (abstract_virtuals_error): Adjust.
From-SVN: r98498
2005-04-21 11:18:28 +02:00
|
|
|
|
VEC(tree,gc) *unemitted_tinfo_decls;
|
2003-03-20 22:14:30 +01:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* A vector of all type_info derived types we need. The first few are
|
|
|
|
|
fixed and created early. The remainder are for multiple inheritance
|
|
|
|
|
and are generated as needed. */
|
|
|
|
|
static GTY (()) VEC(tinfo_s,gc) *tinfo_descs;
|
|
|
|
|
|
2003-06-13 16:30:19 +02:00
|
|
|
|
static tree ifnonnull (tree, tree);
|
2009-10-30 23:23:59 +01:00
|
|
|
|
static tree tinfo_name (tree, bool);
|
2008-03-25 14:53:58 +01:00
|
|
|
|
static tree build_dynamic_cast_1 (tree, tree, tsubst_flags_t);
|
2003-06-13 16:30:19 +02:00
|
|
|
|
static tree throw_bad_cast (void);
|
|
|
|
|
static tree throw_bad_typeid (void);
|
|
|
|
|
static tree get_tinfo_decl_dynamic (tree);
|
|
|
|
|
static tree get_tinfo_ptr (tree);
|
|
|
|
|
static bool typeid_ok_p (void);
|
|
|
|
|
static int qualifier_flags (tree);
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
static bool target_incomplete_p (tree);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
static tree tinfo_base_init (tinfo_s *, tree);
|
|
|
|
|
static tree generic_initializer (tinfo_s *, tree);
|
|
|
|
|
static tree ptr_initializer (tinfo_s *, tree);
|
|
|
|
|
static tree ptm_initializer (tinfo_s *, tree);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
static tree class_initializer (tinfo_s *, tree, unsigned, ...);
|
2005-06-16 10:21:00 +02:00
|
|
|
|
static void create_pseudo_type_info (int, const char *, ...);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
static tree get_pseudo_ti_init (tree, unsigned);
|
|
|
|
|
static unsigned get_pseudo_ti_index (tree);
|
2003-06-13 16:30:19 +02:00
|
|
|
|
static void create_tinfo_types (void);
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
static bool typeinfo_in_lib_p (tree);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
|
|
|
|
static int doing_runtime = 0;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2008-02-27 10:09:05 +01:00
|
|
|
|
static void
|
|
|
|
|
push_abi_namespace (void)
|
|
|
|
|
{
|
|
|
|
|
push_nested_namespace (abi_node);
|
2009-11-02 14:39:46 +01:00
|
|
|
|
push_visibility ("default", 2);
|
2008-02-27 10:09:05 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
pop_abi_namespace (void)
|
|
|
|
|
{
|
2009-11-02 14:39:46 +01:00
|
|
|
|
pop_visibility (2);
|
2008-02-27 10:09:05 +01:00
|
|
|
|
pop_nested_namespace (abi_node);
|
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
|
|
|
|
/* Declare language defined type_info type and a pointer to const
|
|
|
|
|
type_info. This is incomplete here, and will be completed when
|
|
|
|
|
the user #includes <typeinfo>. There are language defined
|
|
|
|
|
restrictions on what can be done until that is included. Create
|
|
|
|
|
the internal versions of the ABI types. */
|
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
void
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
init_rtti_processing (void)
|
1996-04-13 01:55:07 +02:00
|
|
|
|
{
|
2004-12-08 09:36:09 +01:00
|
|
|
|
tree type_info_type;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2001-08-02 12:51:17 +02:00
|
|
|
|
push_namespace (std_identifier);
|
2004-12-08 09:36:09 +01:00
|
|
|
|
type_info_type = xref_tag (class_type, get_identifier ("type_info"),
|
2005-03-14 15:33:54 +01:00
|
|
|
|
/*tag_scope=*/ts_current, false);
|
2001-08-02 12:51:17 +02:00
|
|
|
|
pop_namespace ();
|
2004-12-08 09:36:09 +01:00
|
|
|
|
const_type_info_type_node
|
2010-05-19 23:02:27 +02:00
|
|
|
|
= cp_build_qualified_type (type_info_type, TYPE_QUAL_CONST);
|
2004-12-08 09:36:09 +01:00
|
|
|
|
type_info_ptr_type = build_pointer_type (const_type_info_type_node);
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
vec.h: Update API to separate allocation mechanism from type.
* vec.h: Update API to separate allocation mechanism from type.
(VEC_safe_grow): New.
* vec.c (calculate_allocation): New.
(vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
(vec_gc_free, vec_heap_free): Remove.
* gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
(VEC): Likewise.
(mangle_macro_name): New.
(struct macro_def): New.
(struct macro): Add multiple argument values.
(macro_expans_end): New.
(push_macro_expansion): Chain on new macro. Process multiple
args, create follow on expansion. Return follow on argument.
(macro_input): Deal with multiple arguments.
* tree.h: Define VEC(tree,heap) and VEC(tree,gc).
(struct tree_binfo): Adjust.
* basic-block.h: Define VEC(edge,gc).
(struct edge_def): Adjust.
(struct basic_block_def, struct edge_iterator): Likewise.
(ei_container, ei_start_1, ei_last_1): Likewise.
* cfg.c (connect_src, connect_dest): Likewise.
* cfgrtl.c (force_nonfallthru_and_redirect)
* dbxout.c (dbxout_type)
* dwarf2out.c (gen_member_die)
* lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
(gcc_tree_to_linear_expression): Adjust.
(gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
lbv_to_gcc_expression, lle_to_gcc_expression,
lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
perfect_nestify): Likewise.
* lambda.h (gcc_loopnest_to_lambda_loopnest,
lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
* profile.c (instrument_values): Adjust.
* tree-cfg.c (modified_noreturn_calls): Adjust.
(remove_fallthru_edge): Likewise.
* tree-dump.c (dequeue_and_dump): Adjust.
* tree-flow-inline.h (mark_stmt_modified): Adjust.
* tree-flow.h (modified_noreturn_calls): Adjust.
(tree_on_heap): Remove. (yay!)
(register_new_def): Adjust.
* tree-into-ssa.c: Define VEC(int,heap).
(block_defs_stack): Adjust.
(find_idf, insert_phi_nodes, register_new_def,
rewrite_initialize_block, rewrite_finalize_block,
register_new_update_single, rewrite_update_init_block,
rewrite_update_fini_block, rewrite_blocks,
ssa_rewrite_finalize_block, ssa_register_new_def,
ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
* tree-loop-linear.c (linear_transform_loops): Adjust.
* tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
(push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
* tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
vrp_variables_stack): Adjust declarations.
(tree_ssa_dominator_optimize): Adjust.
(dom_opt_initialize_block, remove_local_expressions_from_table,
restore_nonzero_vars_to_original_value,
restore_vars_to_original_value,
restore_currdefs_to_original_value, dom_opt_finalize_block,
record_var_is_nonzero, record_cond, record_const_or_copy_1,
optimize_stmt, update_rhs_and_lookup_avail_expr,
lookup_avail_expr, record_range): Likewise.
* tree-ssa-pre.c: Define VEC(basic_block,heap).
(compute_antic_aux): Adjust.
(inserted_exprs, create_expression_by_pieces,
insert_into_preds_of_block, eliminate, mark_operand_necessary,
remove_dead_inserted_code, fini_pre): Likewise.
* tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
(varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
ssa_prop_init): Likewise.
* tree-ssa.c: Define VEC(bitmap,heap).
(verify_name_tags): Adjust.
* value-prof.c (rtl_divmod_values_to_profile): Adjust.
(insn_prefetch_values_to_profile, rtl_find_values_to_profile,
tree_divmod_values_to_profile, tree_find_values_to_profile,
value_profile_transformations): Likewise.
* value-prof.h: Define VEC(histogram_value,heap).
* varasm.c: Remove alias_pair pointer typedef, define
VEC(alias_pair,gc).
(finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
* config/pa/pa.c (typedef extern_symbol): Typedef the structure,
not a pointer to it. Create an object vector.
(extern_symbols): Turn into an object vector.
(pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
* cp/cp-tree.h: Adjust for new VEC API.
Define VEC(tree_pair_s,gc).
(struct save_scope): Adjust.
(struct lang_type_class): Adjust.
(unemitted_tinfo_decls): Adjust.
* cp/class.c (add_method, resort_type_method_vec,
finish_struct_methods, struct find_final_overrider_data,
dfs_find_final_overrider_pre, find_final_overrider,
get_vcall_index, warn_hidden, walk_subobject_offsets,
check_methods, fixup_inline_methods, end_of_class,
warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
add_vcall_offset): Adjust.
* cp/decl.c (xref_basetypes, finish_method): Adjust.
* cp/decl2.c (check_classfn): Adjust.
* cp/init.c (sort_mem_initializers, push_base_cleanups): Adjust.
* cp/method.c (do_build_copy_constructor): Adjust.
* cp/name-lookup.c (new_class_binding, store_binding,
store_bindings, store_class_bindings): Adjust.
* cp/name-lookup.h: Define VEC(cxx_saved_binding,gc),
VEC(cp_class_binding,gc).
(struct cp_binding_level): Adjust.
* cp/parser.c: Define VEC(cp_token_position,heap).
(struct cp_lexer): Adjust.
(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
cp_lexer_save_tokens): Adjust.
* cp/pt.c (retrieve_specialization,
check_explicit_specialization): Adjust.
* cp/rtti.c (unemitted_tinfo_decls): Adjust.
(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
get_pseudo_ti_desc): Adjust.
* cp/search.c (dfs_access_in_type, lookup_conversion_operator,
lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
* cp/semantics.c: Define VEC(deferred_access,gc).
(push_deferring_access_checks): Adjust.
* cp/typeck2.c (abstract_virtuals_error): Adjust.
From-SVN: r98498
2005-04-21 11:18:28 +02:00
|
|
|
|
unemitted_tinfo_decls = VEC_alloc (tree, gc, 124);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
create_tinfo_types ();
|
1996-04-13 01:55:07 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Given the expression EXP of type `class *', return the head of the
|
|
|
|
|
object pointed to by EXP with type cv void*, if the class has any
|
1999-12-21 01:19:01 +01:00
|
|
|
|
virtual functions (TYPE_POLYMORPHIC_P), else just return the
|
1996-04-13 01:55:07 +02:00
|
|
|
|
expression. */
|
1996-07-11 03:13:25 +02:00
|
|
|
|
|
2007-09-06 03:24:59 +02:00
|
|
|
|
tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
build_headof (tree exp)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
|
|
|
|
tree type = TREE_TYPE (exp);
|
1997-01-21 22:32:30 +01:00
|
|
|
|
tree offset;
|
2000-03-28 21:27:15 +02:00
|
|
|
|
tree index;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
call.c (validate_conversion_obstack): Replace my_friendly_assert with gcc_assert or gcc_unreachable.
* call.c (validate_conversion_obstack): Replace
my_friendly_assert with gcc_assert or gcc_unreachable.
(direct_reference_binding, merge_conversion_sequences,
build_user_type_conversion_1, perform_overload_resolution,
build_op_delete_call, enforce_access, call_builtin_trap,
build_over_call, build_special_member_call, build_new_method_call,
initialize_reference): Likewise.
* class.c (build_base_path, build_primary_vtable, alter_access,
check_bases, update_vtable_entry_for_fn, layout_empty_base,
clone_function_decl, adjust_clone_args,
type_requires_array_cookie, include_empty_classes,
finish_struct_1, resolve_address_of_overloaded_function,
instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
accumulate_vtbl_inits, build_vtbl_initializer,
build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
* cvt.c (build_up_reference, convert_to_reference): Likewise.
* decl.c (poplevel, duplicate_decls, make_typename_type,
cxx_init_decl_processing, reshape_init, check_initializer,
make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
xref_basetypes, start_preparsed_function, save_function_data,
finish_function, finish_method, maybe_register_incomplete_var,
complete_vars): Likewise.
* decl2.c (grok_array_decl, check_member_template,
check_classfn, finish_static_data_member_decl, coerce_new_type,
coerce_delete_type, import_export_class, decl_needed_p,
determine_visibility, import_export_decl, build_cleanup,
start_static_initialization_or_destructi, do_static_destruction,
prune_vars_needing_no_initialization,
build_offset_ref_call_from_tree): Likewise.
* error.c (dump_decl, dump_expr): Likewise.
* init.c (finish_init_stmts, build_zero_init,
expand_virtual_init, expand_default_init, expand_aggr_init_1,
build_offset_ref, build_new_1, build_delete, build_vbase_delete):
Likewise.
* mangle.c (write_method_parms, write_template_args,
write_expression, write_template_arg): Likewise.
* method.c (make_thunk, finish_thunk, use_thunk): Likewise.
* name-lookup.c (pop_binding, begin_scope, leave_scope,
resume_scope, push_using_decl, validate_nonmember_using_decl,
is_ancestor, poplevel_class, set_inherited_value_binding_p,
push_class_level_binding, do_class_using_decl, push_namespace,
pop_namespace, add_using_namespace, ambiguous_decl,
lookup_namespace_name, lookup_type_current_level,
maybe_process_template_type_declaration): Likewise.
* parser.c (cp_lexer_peek_nth_token,
cp_parser_parse_and_diagnose_invalid_typ,
cp_parser_translation_unit, cp_parser_template_id,
cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
* pt.c (push_access_scope, finish_member_template_decl,
push_inline_template_parms_recursive, add_outermost_template_args,
get_innermost_template_args, begin_explicit_instantiation,
end_explicit_instantiation, retrieve_specialization,
is_specialization_of, is_specialization_of_friend,
register_specialization, check_explicit_specialization,
comp_template_parms, process_template_parm,
process_partial_specialization, convert_nontype_argument,
coerce_template_template_parms, coerce_template_parms,
mangle_class_name_for_template, lookup_template_function,
lookup_template_class, instantiate_class_template, tsubst_decl,
tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
instantiate_template, fn_type_unification, type_unification_real,
get_template_base, regenerate_decl_from_template,
template_for_substitution, instantiate_decl,
get_mostly_instantiated_function_type, dependent_scope_ref_p,
value_dependent_expression_p, resolve_typename_type): Likewise.
* repo.c (repo_emit_p): Likewise.
* rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
create_tinfo_types, emit_tinfo_decl): Likewise.
* search.c (lookup_base_r, lookup_base, lookup_field_1,
dfs_access_in_type, build_baselink, lookup_member,
adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
* semantics.c (perform_or_defer_access_check,
finish_non_static_data_member, finish_stmt_expr_expr,
finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
finish_template_template_parm, finish_member_declaration,
emit_associated_thunks): Likewise.
* tree.c (build_target_expr_with_type, force_target_expr,
copy_binfo, get_first_fn, cp_tree_equal): Likewise.
* typeck.c (type_after_usual_arithmetic_conversions, comptypes,
cxx_sizeof_or_alignof_type, perform_integral_promotions,
build_class_member_access_expr, finish_class_member_access_expr,
build_ptrmemfunc_access_expr, build_unary_op,
unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
* typeck2.c (complete_type_check_abstract,
abstract_virtuals_error, process_init_constructor,
add_exception_specifier): Likewise.
From-SVN: r86669
2004-08-27 19:59:33 +02:00
|
|
|
|
gcc_assert (TREE_CODE (type) == POINTER_TYPE);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
type = TREE_TYPE (type);
|
|
|
|
|
|
1999-12-21 01:19:01 +01:00
|
|
|
|
if (!TYPE_POLYMORPHIC_P (type))
|
1996-02-01 20:33:01 +01:00
|
|
|
|
return exp;
|
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
/* We use this a couple of times below, protect it. */
|
|
|
|
|
exp = save_expr (exp);
|
|
|
|
|
|
2001-07-21 02:03:21 +02:00
|
|
|
|
/* The offset-to-top field is at index -2 from the vptr. */
|
tree.h (build_int_cst): New.
.: * tree.h (build_int_cst): New.
(build_int_2): Remove.
* tree.c (build_int_2): Remove.
(build_int_cst): New.
(make_vector_type, build_common_tree_nodes,
build_common_tree_nodes_2): Use build_int_cst.
* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
expand_builtin_strpbrk, expand_builtin_fputs,
build_string_literal, expand_builtin_printf,
expand_builtin_sprintf, fold_builtin_lround, fold_builtin_bitop,
fold_builtin_bitop, fold_builtin_isascii, fold_builtin_toascii,
fold_builtin_isdigit, simplify_builtin_strstr,
simplify_builtin_strpbrk, fold_builtin_fputs,
simplify_builtin_sprintf): Use build_int_cst.
* c-common.c (start_fname_decls, fix_string_type,
c_common_nodes_and_builtins, c_init_attributes,
shorten_compare): Likewise.
* c-decl.c (complete_array_type,
check_bitfield_type_and_width): Likewise.
* c-lex.c (interpret_integer, lex_charconst): Likewise.
* c-parse.in (primary): <TYPES_COMPATIBLE_P> Likewise.
* c-pretty-print.c (pp_c_integer_constant): Likewise.
* c-typeck.c (really_start_incremental_init, push_init_level,
set_nonincremental_init_from_string): Likewise.
* calls.c (load_register_parameters): Likewise.
* convert.c (convert_to_pointer): Likewise.
* coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
build_fn_info_type, build_ctr_info_value, build_gcov_info):
Likewise.
* except.c (init_eh, assign_filter_values, assign_filter_values):
Likewise.
* expmed.c (store_fixed_bit_field, extract_bit_field,
extract_fixed_bit_field, extract_split_bit_field, expand_shift,
expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
* expr.c (convert_move, emit_group_load, emit_group_store,
expand_assignment, store_constructor, store_field,
expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
* fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
invert_truthvalue, optimize_bit_field_compare,
decode_field_reference, all_ones_mask_p, constant_boolean_node,
fold_div_compare, fold, fold_read_from_constant_string,
fold_negate_const, fold_abs_const, fold_not_const): Likewise.
* function.c (assign_parm_setup_block): Likewise.
* stmt.c (shift_return_value, expand_end_case_type,
estimate_case_costs): Likewise.
* stor-layout.c (layout_type, initialize_sizetypes,
set_min_and_max_values_for_integral_type): Likewise.
* tree-chrec.c (chrec_fold_multiply_poly_poly,
reset_evolution_in_loop): Likewise.
* tree-chrec.h (build_polynomial_chrec): Likewise.
* tree-complex.c (build_replicated_const): Likewise.
* tree-eh.c (honor_protect_cleanup_actions,
lower_try_finally_onedest, lower_try_finally_copy,
lower_try_finally_switch): Likewise.
* tree-mudflap.c (mf_build_string, mx_register_decls,
mudflap_register_call, mudflap_enqueue_constant): Likewise.
* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
Likewise.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
* tree-ssa-loop-niter.c (number_of_iterations_cond,
loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
Likewise.
* config/alpha/alpha.c (alpha_initialize_trampoline,
alpha_va_start, alpha_gimplify_va_arg_1): Use build_int_cst.
* config/arm/arm.c (arm_get_cookie_size): Likewise.
* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
* config/i860/i860.c (i860_va_start): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
mips_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
add_compiler_branch_island): Likewise.
* config/s390/s390.c (s390_va_start): Likewise.
* config/sh/sh.c (sh_va_start): Likewise.
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
Likewise.
* config/xtensa/xtensa.c (xtensa_va_start,
xtensa_gimplify_va_arg_expr): Likewise.
* objc/objc-act.c (build_objc_string_object,
build_objc_symtab_template, init_def_list, init_objc_symtab,
init_module_descriptor, generate_static_references,
build_selector_translation_table, get_proto_encoding,
build_typed_selector_reference, build_selector_reference,
build_next_objc_exception_stuff,
build_method_prototype_list_template, generate_descriptor_table,
generate_protocols, build_protocol_initializer,
build_ivar_list_template, build_method_list_template,
build_ivar_list_initializer, generate_ivars_list,
generate_dispatch_table, generate_protocol_list,
build_category_initializer, build_shared_structure_initializer,
generate_shared_structures, handle_impent,
generate_objc_image_info): Use build_int_cst.
ada:
* cuintp.c (UI_To_gnu): Use build_int_cst..
* trans.c (Exception_Handler_to_gnu_sjlj, gnat_to_gnu): Likewise.
* utils.c (init_gigi_decls): Likewise.
* utils2.c (build_call_raise): Likewise.
cp:
* call.c (convert_class_to_reference,
build_user_type_conversion_1, convert_like_real,
build_java_interface_fn_ref, build_special_member_call): Use
build_int_cst.
* class.c (build_vtbl_initializer): Likewise.
* cp-gimplify.c (cp_gimplify_expr): Likewise.
* cvt.c (cp_convert_to_pointer): Likewise.
* decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
* decl2.c (start_static_initialization_or_destruction,
generate_ctor_or_dtor_function): Likewise.
* except.c (build_throw): Likewise.
* lex.c (cxx_init): Likewise.
* mangle.c (write_integer_cst): Likewise.
* rtti.c (build_headof, get_tinfo_decl_dynamic,
build_dynamic_cast_1, ptr_initializer, ptm_initializer,
get_pseudo_ti_init): Likewise.
* search.c (get_dynamic_cast_base_type): Likewise.
* tree.c (build_shared_int_cst): Likewise.
fortran:
* trans-array.c (gfc_trans_array_constructor_value): Use
build_int_cst.
* trans-const.c (gfc_build_string_const,
gfc_init_constants, gfc_conv_mpz_to_tree,
gfc_conv_constant_to_tree): Likewise.
* trans-decl.c (gfc_get_symbol_decl): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_ibits,
gfc_conv_intrinsic_len, prepare_arg_info): Likewise.
* trans-io.c (add_case, set_error_locus, build_dt,
transfer_expr): Likewise.
* trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause,
gfc_trans_stop, gfc_trans_character_select): Likewise.
* trans-types.c (gfc_init_types, gfc_get_dtype): Likewise.
* trans.c (gfc_trans_runtime_check): Likewise.
java:
* boehm.c (get_boehm_type_descriptor): Use build_int_cst.
* class.c (build_utf8_ref, build_static_field_ref,
make_field_value, make_method_value, get_dispatch_table,
make_class_data, emit_symbol_table, emit_catch_table): Likewise.
* constants.c (get_tag_node, build_ref_from_constant_pool,
build_constants_constructor): Likewise.
* decl.c (java_init_decl_processing): Likewise.
* expr.c (build_java_array_length_access, build_newarray,
expand_java_multianewarray, expand_java_pushc, expand_iinc,
build_java_binop, build_field_ref, expand_java_add_case,
expand_java_call, build_known_method_ref, build_invokevirtual,
build_invokeinterface, build_jni_stub): Likewise.
* java-gimplify.c (java_gimplify_new_array_init): Likewise.
* jcf-parse.c (get_constant): Likewise.
* lex.c (do_java_lex): Likewise.
* parse.y (patch_binop, patch_unaryop, patch_cast,
build_null_of_type, patch_newarray): Likewise.
* resource.c (compile_resource_data): Likewise.
* typeck.c (build_prim_array_type): Likewise.
From-SVN: r86022
2004-08-15 17:45:33 +02:00
|
|
|
|
index = build_int_cst (NULL_TREE,
|
tree.h (build_int_cst): New, sign extended constant.
* tree.h (build_int_cst): New, sign extended constant.
(build_int_cstu): New, zero extended constant.
(build_int_cst_wide): Renamed from build_int_cst.
* tree.c (build_int_cst, build_int_cstu): New.
(build_int_cst_wide): Renamed from build_int_cst.
(make_vector_type, build_common_tree_nodes,
build_common_tree_nodes_2): Adjust build_int_cst calls.
* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
expand_builtin_strpbrk, expand_builtin_fputs,
build_string_literal, expand_builtin_printf,
expand_builtin_sprintf, fold_builtin_classify_type,
fold_builtin_lround, fold_builtin_bitop, fold_builtin_isascii,
fold_builtin_toascii, fold_builtin_isdigit,
simplify_builtin_strstr, simplify_builtin_strpbrk,
fold_builtin_fputs, simplify_builtin_sprintf): Likewise.
* c-common.c (start_fname_decls, fix_string_type, shorten_compare,
DEF_ATTR_INT): Likewise.
* c-decl.c (complete_array_type, check_bitfield_type_and_width):
Likewise.
* c-lex.c (interpret_integer, lex_charconst): Likewise.
* c-parse.in (primary) <TYPES_COMPATIBLE_P> Likewise.
* c-pretty-print.c (pp_c_integer_constant): Likewise.
* c-typeck.c (really_start_incremental_init, push_init_level,
set_nonincremental_init_from_string): Likewise.
* calls.c (load_register_parameters): Likewise.
convert.c (convert_to_pointer): Likewise.
coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
build_fn_info_type, build_fn_info_value, build_ctr_info_value,
build_gcov_info): Likewise.
* except.c (init_eh, assign_filter_values): Likewise.
* expmed.c (store_fixed_bit_field, extract_bit_field,
extract_fixed_bit_field, extract_split_bit_field, expand_shift,
expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
* expr.c (convert_move, emit_group_load, emit_group_store,
expand_assignment, store_constructor, store_field,
expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
invert_truthvalue, optimize_bit_field_compare,
decode_field_reference, all_ones_mask_p, constant_boolean_node,
fold_div_compare, fold, fold_read_from_constant_string,
fold_negate_const, fold_abs_const, fold_not_const, round_up,
round_down): Likewise.
* function.c (assign_parm_setup_block): Likewise.
* stmt.c (shift_return_value, expand_case, estimate_case_costs):
Likewise.
* stor-layout.c (layout_type, initialize_sizetypes,
set_min_and_max_values_for_integral_type): Likewise.
* tree-chrec.c (chrec_fold_multiply_poly_poly,
reset_evolution_in_loop): Likewise.
* tree-chrec.h (build_polynomial_chrec): Likewise.
* tree-complex.c (build_replicated_const): Likewise.
* tree-eh.c (honor_protect_cleanup_actions,
lower_try_finally_onedest, lower_try_finally_copy,
lower_try_finally_switch): Likewise.
* tree-mudflap.c (mf_build_string, mx_register_decls,
mudflap_register_call, mudflap_enqueue_constant): Likewise.
* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
Likewise.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
* tree-ssa-loop-niter.c (number_of_iterations_cond,
loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
Likewise.
* tree-ssa-loop-ivcanon.c (create_canonical_iv,
canonicalize_loop_induction_variables): Likewise.
* tree-vectorizer.c (vect_create_index_for_array_ref,
vect_transform_loop_bound, vect_compute_data_ref_alignment):
Likewise.
* config/alpha/alpha.c (alpha_initialize_trampoline, alpha_va_start,
alpha_gimplify_va_arg_1): Likewise.
* config/arm/arm.c (arm_get_cookie_size): Likewise.
* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
mips_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
add_compiler_branch_island): Likewise.
* config/s390/s390.c (s390_va_start): Likewise.
* config/sh/sh.c (sh_va_start): Likewise.
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
Likewise.
* config/xtensa/xtensa.c (xtensa_va_start,
xtensa_gimplify_va_arg_expr): Likewise.
* objc/objc-act.c (build_objc_string_object,
build_objc_symtab_template, init_def_list, init_objc_symtab,
init_module_descriptor, generate_static_references,
build_selector_translation_table, get_proto_encoding,
build_typed_selector_reference, build_selector_reference,
build_next_objc_exception_stuff,
build_method_prototype_list_template, generate_descriptor_table,
generate_protocols, build_protocol_initializer,
build_ivar_list_template, build_method_list_template,
build_ivar_list_initializer, generate_ivars_list,
generate_dispatch_table, generate_protocol_list,
build_category_initializer, build_shared_structure_initializer,
generate_shared_structures, handle_impent,
generate_objc_image_info): Likewise.
2004-04-25 Paolo Bonzini <bonzini@gnu.org>
* cfglayout.c (duplicate_insn_chain): Remove references to
NOTE_INSN_LOOP_VTOP and NOTE_INSN_LOOP_CONT.
* cfgloop.h (struct loop): Remove fields vtop, cont and cont_dominator.
* cfgrtl.c (rtl_delete_block): Remove handling of NOTE_INSN_LOOP_CONT.
* final.c (final_scan_insn): Remove references to NOTE_INSN_LOOP_VTOP
and NOTE_INSN_LOOP_CONT.
* insn-notes.def (NOTE_INSN_LOOP_VTOP, NOTE_INSN_LOOP_CONT): Remove.
* jump.c (squeeze_notes): Remove references to NOTE_INSN_LOOP_VTOP
and NOTE_INSN_LOOP_CONT.
* loop.c (scan_loops, find_and_verify_loops, for_each_insn_in_loop,
check_dbra_loop, loop_dump_aux): Remove references to removed notes
and fields.
* reorg.c (mostly_true_jump): Do not rely on NOTE_INSN_LOOP_VTOPs.
* unroll.c (unroll_loop, copy_loop_body, loop_iterations): Remove
references to removed notes and fields.
(subtract_reg_term, ujump_to_loop_cont): Remove.
From-SVN: r86544
2004-08-25 11:52:54 +02:00
|
|
|
|
-2 * TARGET_VTABLE_DATA_ENTRY_DISTANCE);
|
2000-03-28 21:27:15 +02:00
|
|
|
|
|
re PR c/40885 (build_indirect_ref i18n problems)
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
PR c/40885
* c-common.h (ref_operator): New type.
(build_indirect_ref): Adjust prototype with new argument.
* c-typeck.c (build_indirect_ref): Accept ref_operator as argument and
emit the diagnostics for easy translation.
(build_array_ref): Update calls to build_indirect_ref.
* c-omp.c (c_finish_omp_atomic): Likewise.
* c-parser.c (c_parser_unary_expression,
c_parser_postfix_expression_after_primary): Likewise.
cp/
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
* typeck.c (build_indirect_ref): Update the argument.
(build_x_indirect_ref): Likewise.
(cp_build_indirect_ref): Update the argument and emit the diagnostics
for easy translation.
(build_class_member_access_expr, build_array_ref,
get_member_function_from_ptrfunc): Update calls.
* cp-tree.h (build_x_indirect_ref, cp_build_indirect_ref): Update
prototypes.
* call.c (build_new_op, convert_like_real, build_x_va_arg,
build_over_call): Update calls.
* class.c (build_base_path, build_simple_base_path, build_vfn_ref):
Likewise.
* decl.c (start_preparsed_function): Likewise.
* except.c (expand_start_catch_block, build_throw): Likewise.
* init.c (emit_mem_initializers, expand_virtual_init,
expand_virtual_init, build_new_1, build_vec_init, build_delete,
build_vec_delete): Likewise.
* parser.c (cp_parser_unary_expression): Likewise.
* pt.c (tsubst_copy_and_build): Likewise.
* rtti.c (build_headof, get_tinfo_decl_dynamic, get_typeid): Likewise.
* semantics.c (finish_non_static_data_member, thisify_lambda_field):
Likewise.
* tree.c (build_dummy_object, stabilize_expr): Likewise.
* typeck2.c (build_x_arrow): Likewise.
testsuite/
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
* g++.old-deja/g++.mike/net31.C: Make expected dg-error strings
explicit.
* g++.old-deja/g++.bugs/900213_02.C: Likewise.
* g++.old-deja/g++.bugs/900215_02.C: Likewise.
From-SVN: r155302
2009-12-17 04:22:22 +01:00
|
|
|
|
offset = build_vtbl_ref (cp_build_indirect_ref (exp, RO_NULL,
|
2008-03-25 14:53:58 +01:00
|
|
|
|
tf_warning_or_error),
|
|
|
|
|
index);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2010-05-19 23:02:27 +02:00
|
|
|
|
type = cp_build_qualified_type (ptr_type_node,
|
|
|
|
|
cp_type_quals (TREE_TYPE (exp)));
|
2011-07-19 16:01:59 +02:00
|
|
|
|
return fold_build_pointer_plus (exp, offset);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
1996-09-30 23:34:04 +02:00
|
|
|
|
|
|
|
|
|
/* Get a bad_cast node for the program to throw...
|
|
|
|
|
|
|
|
|
|
See libstdc++/exception.cc for __throw_bad_cast */
|
|
|
|
|
|
|
|
|
|
static tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
throw_bad_cast (void)
|
1996-09-30 23:34:04 +02:00
|
|
|
|
{
|
2001-02-12 10:58:18 +01:00
|
|
|
|
tree fn = get_identifier ("__cxa_bad_cast");
|
2003-09-27 18:44:05 +02:00
|
|
|
|
if (!get_global_value_if_present (fn, &fn))
|
2010-06-09 17:18:40 +02:00
|
|
|
|
fn = push_throw_library_fn (fn, build_function_type_list (ptr_type_node,
|
|
|
|
|
NULL_TREE));
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
Delete, and replace with...
(fold_builtin_call_array): This. Update callers to use it.
* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
(fold_build_call_array): This.
(fold_build_call_list_initializer): Delete, and replace with...
(fold_build_call_array_initializer): This.
* gcc/tree.h: Update declarations to reflect above changes.
* gcc/c-typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/c-format.c: (check_function_format): Pass arguments in an
array instead of a list.
* gcc/c-common.c (check_function_nonnull): Likewise.
(check_function_sentinel): Likewise.
(check_function_arguments): Likewise.
* gcc/c-common.h: Update declarations to reflect above changes.
* gcc/cp/typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/cp/call.c (build_call): Delete, and replace with...
(build_call_n, build_call_a): New.
(build_op_delete_call): Rewrite to avoid constructing argument lists.
(build_over_call): Store converted arguments in a stack-allocated
array instead of building a list.
(build_cxx_call): Pass arguments in an array instead of as a list.
(build_java_interface_fn_ref): Rewrite to avoid constructing
argument lists.
* gcc/cp/tree.h: Update declarations to reflect above changes.
* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
the arguments instead of a list.
* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
(throw_bad_typeid): Likewise.
(build_dynamic_cast_1): Likewise.
* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
* gcc/cp/decl.c (expand_static_init): Likewise.
* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
(gimplify_must_not_throw_expr): Likewise.
(cxx_omp_apply_fn): Use build_call_a.
From-SVN: r122411
2007-02-28 20:21:20 +01:00
|
|
|
|
return build_cxx_call (fn, 0, NULL);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
}
|
|
|
|
|
|
2003-01-10 21:30:56 +01:00
|
|
|
|
/* Return an expression for "__cxa_bad_typeid()". The expression
|
|
|
|
|
returned is an lvalue of type "const std::type_info". */
|
|
|
|
|
|
1996-09-30 23:34:04 +02:00
|
|
|
|
static tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
throw_bad_typeid (void)
|
1996-09-30 23:34:04 +02:00
|
|
|
|
{
|
2001-02-12 10:58:18 +01:00
|
|
|
|
tree fn = get_identifier ("__cxa_bad_typeid");
|
2003-09-27 18:44:05 +02:00
|
|
|
|
if (!get_global_value_if_present (fn, &fn))
|
2000-03-11 01:23:18 +01:00
|
|
|
|
{
|
2004-12-08 09:36:09 +01:00
|
|
|
|
tree t;
|
|
|
|
|
|
|
|
|
|
t = build_reference_type (const_type_info_type_node);
|
2010-06-09 17:18:40 +02:00
|
|
|
|
t = build_function_type_list (t, NULL_TREE);
|
2000-03-11 01:23:18 +01:00
|
|
|
|
fn = push_throw_library_fn (fn, t);
|
|
|
|
|
}
|
2000-01-24 13:16:59 +01:00
|
|
|
|
|
builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
Delete, and replace with...
(fold_builtin_call_array): This. Update callers to use it.
* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
(fold_build_call_array): This.
(fold_build_call_list_initializer): Delete, and replace with...
(fold_build_call_array_initializer): This.
* gcc/tree.h: Update declarations to reflect above changes.
* gcc/c-typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/c-format.c: (check_function_format): Pass arguments in an
array instead of a list.
* gcc/c-common.c (check_function_nonnull): Likewise.
(check_function_sentinel): Likewise.
(check_function_arguments): Likewise.
* gcc/c-common.h: Update declarations to reflect above changes.
* gcc/cp/typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/cp/call.c (build_call): Delete, and replace with...
(build_call_n, build_call_a): New.
(build_op_delete_call): Rewrite to avoid constructing argument lists.
(build_over_call): Store converted arguments in a stack-allocated
array instead of building a list.
(build_cxx_call): Pass arguments in an array instead of as a list.
(build_java_interface_fn_ref): Rewrite to avoid constructing
argument lists.
* gcc/cp/tree.h: Update declarations to reflect above changes.
* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
the arguments instead of a list.
* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
(throw_bad_typeid): Likewise.
(build_dynamic_cast_1): Likewise.
* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
* gcc/cp/decl.c (expand_static_init): Likewise.
* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
(gimplify_must_not_throw_expr): Likewise.
(cxx_omp_apply_fn): Use build_call_a.
From-SVN: r122411
2007-02-28 20:21:20 +01:00
|
|
|
|
return build_cxx_call (fn, 0, NULL);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
}
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2003-01-10 21:30:56 +01:00
|
|
|
|
/* Return an lvalue expression whose type is "const std::type_info"
|
|
|
|
|
and whose value indicates the type of the expression EXP. If EXP
|
|
|
|
|
is a reference to a polymorphic class, return the dynamic type;
|
1996-09-30 23:34:04 +02:00
|
|
|
|
otherwise return the static type of the expression. */
|
1996-07-11 03:13:25 +02:00
|
|
|
|
|
2000-01-18 11:23:31 +01:00
|
|
|
|
static tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
get_tinfo_decl_dynamic (tree exp)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
|
|
|
|
tree type;
|
2003-01-10 21:30:56 +01:00
|
|
|
|
tree t;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2006-06-22 11:28:02 +02:00
|
|
|
|
if (error_operand_p (exp))
|
1996-02-01 20:33:01 +01:00
|
|
|
|
return error_mark_node;
|
|
|
|
|
|
2009-11-26 16:59:52 +01:00
|
|
|
|
exp = resolve_nondeduced_context (exp);
|
|
|
|
|
|
1996-07-11 03:13:25 +02:00
|
|
|
|
/* peel back references, so they match. */
|
2003-07-08 03:38:44 +02:00
|
|
|
|
type = non_reference (TREE_TYPE (exp));
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
1996-07-11 03:13:25 +02:00
|
|
|
|
/* Peel off cv qualifiers. */
|
1996-02-01 20:33:01 +01:00
|
|
|
|
type = TYPE_MAIN_VARIANT (type);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2008-07-31 20:07:20 +02:00
|
|
|
|
/* For UNKNOWN_TYPEs call complete_type_or_else to get diagnostics. */
|
2010-05-13 07:04:14 +02:00
|
|
|
|
if (CLASS_TYPE_P (type) || type == unknown_type_node
|
|
|
|
|
|| type == init_list_type_node)
|
2000-01-18 11:23:31 +01:00
|
|
|
|
type = complete_type_or_else (type, exp);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-18 11:23:31 +01:00
|
|
|
|
if (!type)
|
|
|
|
|
return error_mark_node;
|
1998-11-16 21:45:16 +01:00
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
/* If exp is a reference to polymorphic type, get the real type_info. */
|
1999-12-21 01:19:01 +01:00
|
|
|
|
if (TYPE_POLYMORPHIC_P (type) && ! resolves_to_fixed_type_p (exp, 0))
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
|
|
|
|
/* build reference to type_info from vtable. */
|
2000-03-28 21:27:15 +02:00
|
|
|
|
tree index;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2001-02-18 21:31:44 +01:00
|
|
|
|
/* The RTTI information is at index -1. */
|
tree.h (build_int_cst): New.
.: * tree.h (build_int_cst): New.
(build_int_2): Remove.
* tree.c (build_int_2): Remove.
(build_int_cst): New.
(make_vector_type, build_common_tree_nodes,
build_common_tree_nodes_2): Use build_int_cst.
* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
expand_builtin_strpbrk, expand_builtin_fputs,
build_string_literal, expand_builtin_printf,
expand_builtin_sprintf, fold_builtin_lround, fold_builtin_bitop,
fold_builtin_bitop, fold_builtin_isascii, fold_builtin_toascii,
fold_builtin_isdigit, simplify_builtin_strstr,
simplify_builtin_strpbrk, fold_builtin_fputs,
simplify_builtin_sprintf): Use build_int_cst.
* c-common.c (start_fname_decls, fix_string_type,
c_common_nodes_and_builtins, c_init_attributes,
shorten_compare): Likewise.
* c-decl.c (complete_array_type,
check_bitfield_type_and_width): Likewise.
* c-lex.c (interpret_integer, lex_charconst): Likewise.
* c-parse.in (primary): <TYPES_COMPATIBLE_P> Likewise.
* c-pretty-print.c (pp_c_integer_constant): Likewise.
* c-typeck.c (really_start_incremental_init, push_init_level,
set_nonincremental_init_from_string): Likewise.
* calls.c (load_register_parameters): Likewise.
* convert.c (convert_to_pointer): Likewise.
* coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
build_fn_info_type, build_ctr_info_value, build_gcov_info):
Likewise.
* except.c (init_eh, assign_filter_values, assign_filter_values):
Likewise.
* expmed.c (store_fixed_bit_field, extract_bit_field,
extract_fixed_bit_field, extract_split_bit_field, expand_shift,
expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
* expr.c (convert_move, emit_group_load, emit_group_store,
expand_assignment, store_constructor, store_field,
expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
* fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
invert_truthvalue, optimize_bit_field_compare,
decode_field_reference, all_ones_mask_p, constant_boolean_node,
fold_div_compare, fold, fold_read_from_constant_string,
fold_negate_const, fold_abs_const, fold_not_const): Likewise.
* function.c (assign_parm_setup_block): Likewise.
* stmt.c (shift_return_value, expand_end_case_type,
estimate_case_costs): Likewise.
* stor-layout.c (layout_type, initialize_sizetypes,
set_min_and_max_values_for_integral_type): Likewise.
* tree-chrec.c (chrec_fold_multiply_poly_poly,
reset_evolution_in_loop): Likewise.
* tree-chrec.h (build_polynomial_chrec): Likewise.
* tree-complex.c (build_replicated_const): Likewise.
* tree-eh.c (honor_protect_cleanup_actions,
lower_try_finally_onedest, lower_try_finally_copy,
lower_try_finally_switch): Likewise.
* tree-mudflap.c (mf_build_string, mx_register_decls,
mudflap_register_call, mudflap_enqueue_constant): Likewise.
* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
Likewise.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
* tree-ssa-loop-niter.c (number_of_iterations_cond,
loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
Likewise.
* config/alpha/alpha.c (alpha_initialize_trampoline,
alpha_va_start, alpha_gimplify_va_arg_1): Use build_int_cst.
* config/arm/arm.c (arm_get_cookie_size): Likewise.
* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
* config/i860/i860.c (i860_va_start): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
mips_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
add_compiler_branch_island): Likewise.
* config/s390/s390.c (s390_va_start): Likewise.
* config/sh/sh.c (sh_va_start): Likewise.
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
Likewise.
* config/xtensa/xtensa.c (xtensa_va_start,
xtensa_gimplify_va_arg_expr): Likewise.
* objc/objc-act.c (build_objc_string_object,
build_objc_symtab_template, init_def_list, init_objc_symtab,
init_module_descriptor, generate_static_references,
build_selector_translation_table, get_proto_encoding,
build_typed_selector_reference, build_selector_reference,
build_next_objc_exception_stuff,
build_method_prototype_list_template, generate_descriptor_table,
generate_protocols, build_protocol_initializer,
build_ivar_list_template, build_method_list_template,
build_ivar_list_initializer, generate_ivars_list,
generate_dispatch_table, generate_protocol_list,
build_category_initializer, build_shared_structure_initializer,
generate_shared_structures, handle_impent,
generate_objc_image_info): Use build_int_cst.
ada:
* cuintp.c (UI_To_gnu): Use build_int_cst..
* trans.c (Exception_Handler_to_gnu_sjlj, gnat_to_gnu): Likewise.
* utils.c (init_gigi_decls): Likewise.
* utils2.c (build_call_raise): Likewise.
cp:
* call.c (convert_class_to_reference,
build_user_type_conversion_1, convert_like_real,
build_java_interface_fn_ref, build_special_member_call): Use
build_int_cst.
* class.c (build_vtbl_initializer): Likewise.
* cp-gimplify.c (cp_gimplify_expr): Likewise.
* cvt.c (cp_convert_to_pointer): Likewise.
* decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
* decl2.c (start_static_initialization_or_destruction,
generate_ctor_or_dtor_function): Likewise.
* except.c (build_throw): Likewise.
* lex.c (cxx_init): Likewise.
* mangle.c (write_integer_cst): Likewise.
* rtti.c (build_headof, get_tinfo_decl_dynamic,
build_dynamic_cast_1, ptr_initializer, ptm_initializer,
get_pseudo_ti_init): Likewise.
* search.c (get_dynamic_cast_base_type): Likewise.
* tree.c (build_shared_int_cst): Likewise.
fortran:
* trans-array.c (gfc_trans_array_constructor_value): Use
build_int_cst.
* trans-const.c (gfc_build_string_const,
gfc_init_constants, gfc_conv_mpz_to_tree,
gfc_conv_constant_to_tree): Likewise.
* trans-decl.c (gfc_get_symbol_decl): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_ibits,
gfc_conv_intrinsic_len, prepare_arg_info): Likewise.
* trans-io.c (add_case, set_error_locus, build_dt,
transfer_expr): Likewise.
* trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause,
gfc_trans_stop, gfc_trans_character_select): Likewise.
* trans-types.c (gfc_init_types, gfc_get_dtype): Likewise.
* trans.c (gfc_trans_runtime_check): Likewise.
java:
* boehm.c (get_boehm_type_descriptor): Use build_int_cst.
* class.c (build_utf8_ref, build_static_field_ref,
make_field_value, make_method_value, get_dispatch_table,
make_class_data, emit_symbol_table, emit_catch_table): Likewise.
* constants.c (get_tag_node, build_ref_from_constant_pool,
build_constants_constructor): Likewise.
* decl.c (java_init_decl_processing): Likewise.
* expr.c (build_java_array_length_access, build_newarray,
expand_java_multianewarray, expand_java_pushc, expand_iinc,
build_java_binop, build_field_ref, expand_java_add_case,
expand_java_call, build_known_method_ref, build_invokevirtual,
build_invokeinterface, build_jni_stub): Likewise.
* java-gimplify.c (java_gimplify_new_array_init): Likewise.
* jcf-parse.c (get_constant): Likewise.
* lex.c (do_java_lex): Likewise.
* parse.y (patch_binop, patch_unaryop, patch_cast,
build_null_of_type, patch_newarray): Likewise.
* resource.c (compile_resource_data): Likewise.
* typeck.c (build_prim_array_type): Likewise.
From-SVN: r86022
2004-08-15 17:45:33 +02:00
|
|
|
|
index = build_int_cst (NULL_TREE,
|
tree.h (build_int_cst): New, sign extended constant.
* tree.h (build_int_cst): New, sign extended constant.
(build_int_cstu): New, zero extended constant.
(build_int_cst_wide): Renamed from build_int_cst.
* tree.c (build_int_cst, build_int_cstu): New.
(build_int_cst_wide): Renamed from build_int_cst.
(make_vector_type, build_common_tree_nodes,
build_common_tree_nodes_2): Adjust build_int_cst calls.
* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
expand_builtin_strpbrk, expand_builtin_fputs,
build_string_literal, expand_builtin_printf,
expand_builtin_sprintf, fold_builtin_classify_type,
fold_builtin_lround, fold_builtin_bitop, fold_builtin_isascii,
fold_builtin_toascii, fold_builtin_isdigit,
simplify_builtin_strstr, simplify_builtin_strpbrk,
fold_builtin_fputs, simplify_builtin_sprintf): Likewise.
* c-common.c (start_fname_decls, fix_string_type, shorten_compare,
DEF_ATTR_INT): Likewise.
* c-decl.c (complete_array_type, check_bitfield_type_and_width):
Likewise.
* c-lex.c (interpret_integer, lex_charconst): Likewise.
* c-parse.in (primary) <TYPES_COMPATIBLE_P> Likewise.
* c-pretty-print.c (pp_c_integer_constant): Likewise.
* c-typeck.c (really_start_incremental_init, push_init_level,
set_nonincremental_init_from_string): Likewise.
* calls.c (load_register_parameters): Likewise.
convert.c (convert_to_pointer): Likewise.
coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
build_fn_info_type, build_fn_info_value, build_ctr_info_value,
build_gcov_info): Likewise.
* except.c (init_eh, assign_filter_values): Likewise.
* expmed.c (store_fixed_bit_field, extract_bit_field,
extract_fixed_bit_field, extract_split_bit_field, expand_shift,
expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
* expr.c (convert_move, emit_group_load, emit_group_store,
expand_assignment, store_constructor, store_field,
expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
invert_truthvalue, optimize_bit_field_compare,
decode_field_reference, all_ones_mask_p, constant_boolean_node,
fold_div_compare, fold, fold_read_from_constant_string,
fold_negate_const, fold_abs_const, fold_not_const, round_up,
round_down): Likewise.
* function.c (assign_parm_setup_block): Likewise.
* stmt.c (shift_return_value, expand_case, estimate_case_costs):
Likewise.
* stor-layout.c (layout_type, initialize_sizetypes,
set_min_and_max_values_for_integral_type): Likewise.
* tree-chrec.c (chrec_fold_multiply_poly_poly,
reset_evolution_in_loop): Likewise.
* tree-chrec.h (build_polynomial_chrec): Likewise.
* tree-complex.c (build_replicated_const): Likewise.
* tree-eh.c (honor_protect_cleanup_actions,
lower_try_finally_onedest, lower_try_finally_copy,
lower_try_finally_switch): Likewise.
* tree-mudflap.c (mf_build_string, mx_register_decls,
mudflap_register_call, mudflap_enqueue_constant): Likewise.
* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
Likewise.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
* tree-ssa-loop-niter.c (number_of_iterations_cond,
loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
Likewise.
* tree-ssa-loop-ivcanon.c (create_canonical_iv,
canonicalize_loop_induction_variables): Likewise.
* tree-vectorizer.c (vect_create_index_for_array_ref,
vect_transform_loop_bound, vect_compute_data_ref_alignment):
Likewise.
* config/alpha/alpha.c (alpha_initialize_trampoline, alpha_va_start,
alpha_gimplify_va_arg_1): Likewise.
* config/arm/arm.c (arm_get_cookie_size): Likewise.
* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
mips_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
add_compiler_branch_island): Likewise.
* config/s390/s390.c (s390_va_start): Likewise.
* config/sh/sh.c (sh_va_start): Likewise.
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
Likewise.
* config/xtensa/xtensa.c (xtensa_va_start,
xtensa_gimplify_va_arg_expr): Likewise.
* objc/objc-act.c (build_objc_string_object,
build_objc_symtab_template, init_def_list, init_objc_symtab,
init_module_descriptor, generate_static_references,
build_selector_translation_table, get_proto_encoding,
build_typed_selector_reference, build_selector_reference,
build_next_objc_exception_stuff,
build_method_prototype_list_template, generate_descriptor_table,
generate_protocols, build_protocol_initializer,
build_ivar_list_template, build_method_list_template,
build_ivar_list_initializer, generate_ivars_list,
generate_dispatch_table, generate_protocol_list,
build_category_initializer, build_shared_structure_initializer,
generate_shared_structures, handle_impent,
generate_objc_image_info): Likewise.
2004-04-25 Paolo Bonzini <bonzini@gnu.org>
* cfglayout.c (duplicate_insn_chain): Remove references to
NOTE_INSN_LOOP_VTOP and NOTE_INSN_LOOP_CONT.
* cfgloop.h (struct loop): Remove fields vtop, cont and cont_dominator.
* cfgrtl.c (rtl_delete_block): Remove handling of NOTE_INSN_LOOP_CONT.
* final.c (final_scan_insn): Remove references to NOTE_INSN_LOOP_VTOP
and NOTE_INSN_LOOP_CONT.
* insn-notes.def (NOTE_INSN_LOOP_VTOP, NOTE_INSN_LOOP_CONT): Remove.
* jump.c (squeeze_notes): Remove references to NOTE_INSN_LOOP_VTOP
and NOTE_INSN_LOOP_CONT.
* loop.c (scan_loops, find_and_verify_loops, for_each_insn_in_loop,
check_dbra_loop, loop_dump_aux): Remove references to removed notes
and fields.
* reorg.c (mostly_true_jump): Do not rely on NOTE_INSN_LOOP_VTOPs.
* unroll.c (unroll_loop, copy_loop_body, loop_iterations): Remove
references to removed notes and fields.
(subtract_reg_term, ujump_to_loop_cont): Remove.
From-SVN: r86544
2004-08-25 11:52:54 +02:00
|
|
|
|
-1 * TARGET_VTABLE_DATA_ENTRY_DISTANCE);
|
2001-08-15 01:51:27 +02:00
|
|
|
|
t = build_vtbl_ref (exp, index);
|
2004-05-13 08:41:07 +02:00
|
|
|
|
t = convert (type_info_ptr_type, t);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
2003-01-10 21:30:56 +01:00
|
|
|
|
else
|
|
|
|
|
/* Otherwise return the type_info for the static type of the expr. */
|
|
|
|
|
t = get_tinfo_ptr (TYPE_MAIN_VARIANT (type));
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
re PR c/40885 (build_indirect_ref i18n problems)
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
PR c/40885
* c-common.h (ref_operator): New type.
(build_indirect_ref): Adjust prototype with new argument.
* c-typeck.c (build_indirect_ref): Accept ref_operator as argument and
emit the diagnostics for easy translation.
(build_array_ref): Update calls to build_indirect_ref.
* c-omp.c (c_finish_omp_atomic): Likewise.
* c-parser.c (c_parser_unary_expression,
c_parser_postfix_expression_after_primary): Likewise.
cp/
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
* typeck.c (build_indirect_ref): Update the argument.
(build_x_indirect_ref): Likewise.
(cp_build_indirect_ref): Update the argument and emit the diagnostics
for easy translation.
(build_class_member_access_expr, build_array_ref,
get_member_function_from_ptrfunc): Update calls.
* cp-tree.h (build_x_indirect_ref, cp_build_indirect_ref): Update
prototypes.
* call.c (build_new_op, convert_like_real, build_x_va_arg,
build_over_call): Update calls.
* class.c (build_base_path, build_simple_base_path, build_vfn_ref):
Likewise.
* decl.c (start_preparsed_function): Likewise.
* except.c (expand_start_catch_block, build_throw): Likewise.
* init.c (emit_mem_initializers, expand_virtual_init,
expand_virtual_init, build_new_1, build_vec_init, build_delete,
build_vec_delete): Likewise.
* parser.c (cp_parser_unary_expression): Likewise.
* pt.c (tsubst_copy_and_build): Likewise.
* rtti.c (build_headof, get_tinfo_decl_dynamic, get_typeid): Likewise.
* semantics.c (finish_non_static_data_member, thisify_lambda_field):
Likewise.
* tree.c (build_dummy_object, stabilize_expr): Likewise.
* typeck2.c (build_x_arrow): Likewise.
testsuite/
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
* g++.old-deja/g++.mike/net31.C: Make expected dg-error strings
explicit.
* g++.old-deja/g++.bugs/900213_02.C: Likewise.
* g++.old-deja/g++.bugs/900215_02.C: Likewise.
From-SVN: r155302
2009-12-17 04:22:22 +01:00
|
|
|
|
return cp_build_indirect_ref (t, RO_NULL, tf_warning_or_error);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
}
|
|
|
|
|
|
2001-07-24 10:56:12 +02:00
|
|
|
|
static bool
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
typeid_ok_p (void)
|
1996-09-30 23:34:04 +02:00
|
|
|
|
{
|
2007-11-01 23:50:32 +01:00
|
|
|
|
tree pseudo_type_info, type_info_type;
|
|
|
|
|
|
1999-04-27 11:41:33 +02:00
|
|
|
|
if (! flag_rtti)
|
|
|
|
|
{
|
|
|
|
|
error ("cannot use typeid with -fno-rtti");
|
2001-07-24 10:56:12 +02:00
|
|
|
|
return false;
|
1999-04-27 11:41:33 +02:00
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2004-12-08 09:36:09 +01:00
|
|
|
|
if (!COMPLETE_TYPE_P (const_type_info_type_node))
|
1998-11-16 21:45:16 +01:00
|
|
|
|
{
|
|
|
|
|
error ("must #include <typeinfo> before using typeid");
|
2001-07-24 10:56:12 +02:00
|
|
|
|
return false;
|
1998-11-16 21:45:16 +01:00
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2007-11-01 23:50:32 +01:00
|
|
|
|
pseudo_type_info
|
|
|
|
|
= VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE)->type;
|
|
|
|
|
type_info_type = TYPE_MAIN_VARIANT (const_type_info_type_node);
|
|
|
|
|
|
|
|
|
|
/* Make sure abi::__type_info_pseudo has the same alias set
|
|
|
|
|
as std::type_info. */
|
|
|
|
|
if (! TYPE_ALIAS_SET_KNOWN_P (pseudo_type_info))
|
|
|
|
|
TYPE_ALIAS_SET (pseudo_type_info) = get_alias_set (type_info_type);
|
|
|
|
|
else
|
|
|
|
|
gcc_assert (TYPE_ALIAS_SET (pseudo_type_info)
|
|
|
|
|
== get_alias_set (type_info_type));
|
|
|
|
|
|
2001-07-24 10:56:12 +02:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2003-01-10 21:30:56 +01:00
|
|
|
|
/* Return an expression for "typeid(EXP)". The expression returned is
|
|
|
|
|
an lvalue of type "const std::type_info". */
|
|
|
|
|
|
2001-07-24 10:56:12 +02:00
|
|
|
|
tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
build_typeid (tree exp)
|
2001-07-24 10:56:12 +02:00
|
|
|
|
{
|
C++ support for -Wunused-but-set-variable
gcc/cp/ChangeLog:
PR 18624
* cp-tree.h (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): Declare ...
* expr.c (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): ... new fns.
* typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call mark_type_use.
(perform_integral_promotions): Call mark_rvalue_use.
(cp_build_unary_op): Call mark_lvalue_use.
(decay_conversion): Update comment. Call mark_lvalue.
* decl.c (unused_but_set_errorcount): New variable.
(poplevel): Issue -Wunused-but-set-variable diagnostics.
(duplicate_decls): Merge DECL_READ_P flags.
(start_cleanup_fn): Set DECL_READ_P flag.
(finish_function): Issue -Wunused-but-set-parameter diagnostics.
* tree.c (rvalue): Call mark_rvalue_use.
* pt.c (convert_nontype_argument): Likewise.
* semantics.c (finish_typeof, finish_decltype_type): Call
mark_type_use.
(finish_asm_stmt): Call mark_lvalue_use.
(finish_expr_stmt): Call mark_exp_read.
* call.c (convert_like_real) <ck_identity, ck_user>: Call
mark_rvalue_use.
(build_x_va_arg): Call mark_lvalue_use.
(build_over_call): Call mark_type_use.
* init.c (build_new, build_delete): Call mark_value_use.
* rtti.c (build_typeid): Call mark_lvalue_use or mark_type_use.
(build_dynamic_cast_1): call mark_lvalue_use or mark_rvalue_use.
gcc/testsuite/ChangeLog:
PR 18624
* g++.dg/warn/Wunused-7.C: Add dg-warning.
* g++.dg/template/sfinae16.C: Likewise.
* gcc.dg/Wunused-var-1.c: Moved to...
* c-c++-common/Wunused-var-1.c: ...here. New test.
* gcc.dg/Wunused-var-2.c: Moved to...
* c-c++-common/Wunused-var-2.c: ...here. New test.
* gcc.dg/Wunused-var-3.c: Moved to...
* c-c++-common/Wunused-var-3.c: ...here. New test.
* gcc.dg/Wunused-var-4.c: Moved to...
* gcc.dg/Wunused-var-1.c: ... here.
* gcc.dg/Wunused-var-5.c: Moved to...
* c-c++-common/Wunused-var-4.c: ...here. New test.
* gcc.dg/Wunused-var-7.c: Moved to...
* c-c++-common/Wunused-var-5.c: ...here. New test.
* gcc.dg/Wunused-var-6.c: Moved to...
* gcc.dg/Wunused-var-2.c: ... here.
* c-c++-common/Wunused-var-1.c: New test.
* c-c++-common/Wunused-var-2.c: New test.
* c-c++-common/Wunused-var-3.c: New test.
* c-c++-common/Wunused-var-4.c: New test.
* c-c++-common/Wunused-var-5.c: New test.
* g++.dg/warn/Wunused-var-1.C: New test.
* g++.dg/warn/Wunused-var-2.C: New test.
* g++.dg/warn/Wunused-var-3.C: New test.
* g++.dg/warn/Wunused-var-4.C: New test.
* g++.dg/warn/Wunused-var-5.C: New test.
* g++.dg/warn/Wunused-var-6.C: New test.
* g++.dg/warn/Wunused-var-7.C: New test.
* g++.dg/warn/Wunused-var-8.C: New test.
* g++.dg/warn/Wunused-parm-1.C: New test.
* g++.dg/warn/Wunused-parm-2.C: New test.
* g++.dg/warn/Wunused-parm-3.C: New test.
Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r159096
2010-05-06 08:52:30 +02:00
|
|
|
|
tree cond = NULL_TREE, initial_expr = exp;
|
2001-07-24 10:56:12 +02:00
|
|
|
|
int nonnull = 0;
|
|
|
|
|
|
|
|
|
|
if (exp == error_mark_node || !typeid_ok_p ())
|
|
|
|
|
return error_mark_node;
|
|
|
|
|
|
1996-09-30 23:34:04 +02:00
|
|
|
|
if (processing_template_decl)
|
2004-12-08 09:36:09 +01:00
|
|
|
|
return build_min (TYPEID_EXPR, const_type_info_type_node, exp);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
|
2010-11-02 02:31:18 +01:00
|
|
|
|
/* FIXME when integrating with c_fully_fold, mark
|
|
|
|
|
resolves_to_fixed_type_p case as a non-constant expression. */
|
1996-09-30 23:34:04 +02:00
|
|
|
|
if (TREE_CODE (exp) == INDIRECT_REF
|
|
|
|
|
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 0))) == POINTER_TYPE
|
1999-12-21 01:19:01 +01:00
|
|
|
|
&& TYPE_POLYMORPHIC_P (TREE_TYPE (exp))
|
1996-09-30 23:34:04 +02:00
|
|
|
|
&& ! resolves_to_fixed_type_p (exp, &nonnull)
|
|
|
|
|
&& ! nonnull)
|
|
|
|
|
{
|
C++ support for -Wunused-but-set-variable
gcc/cp/ChangeLog:
PR 18624
* cp-tree.h (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): Declare ...
* expr.c (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): ... new fns.
* typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call mark_type_use.
(perform_integral_promotions): Call mark_rvalue_use.
(cp_build_unary_op): Call mark_lvalue_use.
(decay_conversion): Update comment. Call mark_lvalue.
* decl.c (unused_but_set_errorcount): New variable.
(poplevel): Issue -Wunused-but-set-variable diagnostics.
(duplicate_decls): Merge DECL_READ_P flags.
(start_cleanup_fn): Set DECL_READ_P flag.
(finish_function): Issue -Wunused-but-set-parameter diagnostics.
* tree.c (rvalue): Call mark_rvalue_use.
* pt.c (convert_nontype_argument): Likewise.
* semantics.c (finish_typeof, finish_decltype_type): Call
mark_type_use.
(finish_asm_stmt): Call mark_lvalue_use.
(finish_expr_stmt): Call mark_exp_read.
* call.c (convert_like_real) <ck_identity, ck_user>: Call
mark_rvalue_use.
(build_x_va_arg): Call mark_lvalue_use.
(build_over_call): Call mark_type_use.
* init.c (build_new, build_delete): Call mark_value_use.
* rtti.c (build_typeid): Call mark_lvalue_use or mark_type_use.
(build_dynamic_cast_1): call mark_lvalue_use or mark_rvalue_use.
gcc/testsuite/ChangeLog:
PR 18624
* g++.dg/warn/Wunused-7.C: Add dg-warning.
* g++.dg/template/sfinae16.C: Likewise.
* gcc.dg/Wunused-var-1.c: Moved to...
* c-c++-common/Wunused-var-1.c: ...here. New test.
* gcc.dg/Wunused-var-2.c: Moved to...
* c-c++-common/Wunused-var-2.c: ...here. New test.
* gcc.dg/Wunused-var-3.c: Moved to...
* c-c++-common/Wunused-var-3.c: ...here. New test.
* gcc.dg/Wunused-var-4.c: Moved to...
* gcc.dg/Wunused-var-1.c: ... here.
* gcc.dg/Wunused-var-5.c: Moved to...
* c-c++-common/Wunused-var-4.c: ...here. New test.
* gcc.dg/Wunused-var-7.c: Moved to...
* c-c++-common/Wunused-var-5.c: ...here. New test.
* gcc.dg/Wunused-var-6.c: Moved to...
* gcc.dg/Wunused-var-2.c: ... here.
* c-c++-common/Wunused-var-1.c: New test.
* c-c++-common/Wunused-var-2.c: New test.
* c-c++-common/Wunused-var-3.c: New test.
* c-c++-common/Wunused-var-4.c: New test.
* c-c++-common/Wunused-var-5.c: New test.
* g++.dg/warn/Wunused-var-1.C: New test.
* g++.dg/warn/Wunused-var-2.C: New test.
* g++.dg/warn/Wunused-var-3.C: New test.
* g++.dg/warn/Wunused-var-4.C: New test.
* g++.dg/warn/Wunused-var-5.C: New test.
* g++.dg/warn/Wunused-var-6.C: New test.
* g++.dg/warn/Wunused-var-7.C: New test.
* g++.dg/warn/Wunused-var-8.C: New test.
* g++.dg/warn/Wunused-parm-1.C: New test.
* g++.dg/warn/Wunused-parm-2.C: New test.
* g++.dg/warn/Wunused-parm-3.C: New test.
Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r159096
2010-05-06 08:52:30 +02:00
|
|
|
|
/* So we need to look into the vtable of the type of exp.
|
|
|
|
|
This is an lvalue use of expr then. */
|
|
|
|
|
exp = mark_lvalue_use (exp);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
exp = stabilize_reference (exp);
|
1997-05-29 01:20:02 +02:00
|
|
|
|
cond = cp_convert (boolean_type_node, TREE_OPERAND (exp, 0));
|
1996-09-30 23:34:04 +02:00
|
|
|
|
}
|
|
|
|
|
|
2000-01-18 11:23:31 +01:00
|
|
|
|
exp = get_tinfo_decl_dynamic (exp);
|
1996-11-12 20:49:48 +01:00
|
|
|
|
|
|
|
|
|
if (exp == error_mark_node)
|
|
|
|
|
return error_mark_node;
|
|
|
|
|
|
1996-09-30 23:34:04 +02:00
|
|
|
|
if (cond)
|
|
|
|
|
{
|
|
|
|
|
tree bad = throw_bad_typeid ();
|
|
|
|
|
|
call.c (build_vfield_ref, [...]): Replace calls to build with calls to buildN.
* call.c (build_vfield_ref, build_call, build_conditional_expr,
convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
build_java_interface_fn_ref, build_special_member_call,
build_new_method_call, initialize_reference): Replace calls to
build with calls to buildN.
* class.c (build_base_path, convert_to_base_statically,
build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
build_vtbl_initializer): Likewise.
* cp-gimplify.c (genericize_try_block, genericize_catch_block,
gimplify_if_stmt, cp_genericize_r): Likewise.
* cvt.c (convert_to_void): Likewise.
* decl.c (check_initializer, finish_constructor_body,
finish_destructor_body): Likewise.
* error.c (dump_expr): Likewise.
* except.c (build_exc_ptr, expand_start_catch_block, build_throw):
Likewise.
* init.c (perform_member_init, expand_virtual_init,
expand_cleanup_for_base, build_init, expand_default_init,
build_offset_ref, decl_constant_value, build_new, build_new_1,
build_vec_delete_1, build_vec_init, build_delete,
push_base_cleanups, build_vec_delete): Likewise.
* mangle.c (write_integer_cst): Likewise.
* method.c (thunk_adjust, do_build_copy_constructor,
do_build_assign_ref): Likewise.
* pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
unify, build_non_dependent_expr): Likewise.
* rtti.c (build_headof, build_typeid, ifnonnull,
build_dyanmic_cast_1, tinfo_base_init): Likewise.
* semantics.c (begin_compound_stmt, finish_call_expr,
finish_pseudo_destructor_expr, finish_id_expression,
simplify_aggr_init_expr, finalize_nrv_r): Likewise.
* tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
array_type_nelts_total, stabilize_call): Likewise.
* typeck.c (decay_conversion, build_class_member_access_expr,
lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
build_x_unary_op, build_unary_op, unary_complex_lvalue,
build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
check_return_expr): Likewise.
* typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
split_nonconstant_init, store_init_value, build_m_component_ref):
Likewise.
From-SVN: r86047
2004-08-16 04:08:06 +02:00
|
|
|
|
exp = build3 (COND_EXPR, TREE_TYPE (exp), cond, exp, bad);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
}
|
C++ support for -Wunused-but-set-variable
gcc/cp/ChangeLog:
PR 18624
* cp-tree.h (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): Declare ...
* expr.c (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): ... new fns.
* typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call mark_type_use.
(perform_integral_promotions): Call mark_rvalue_use.
(cp_build_unary_op): Call mark_lvalue_use.
(decay_conversion): Update comment. Call mark_lvalue.
* decl.c (unused_but_set_errorcount): New variable.
(poplevel): Issue -Wunused-but-set-variable diagnostics.
(duplicate_decls): Merge DECL_READ_P flags.
(start_cleanup_fn): Set DECL_READ_P flag.
(finish_function): Issue -Wunused-but-set-parameter diagnostics.
* tree.c (rvalue): Call mark_rvalue_use.
* pt.c (convert_nontype_argument): Likewise.
* semantics.c (finish_typeof, finish_decltype_type): Call
mark_type_use.
(finish_asm_stmt): Call mark_lvalue_use.
(finish_expr_stmt): Call mark_exp_read.
* call.c (convert_like_real) <ck_identity, ck_user>: Call
mark_rvalue_use.
(build_x_va_arg): Call mark_lvalue_use.
(build_over_call): Call mark_type_use.
* init.c (build_new, build_delete): Call mark_value_use.
* rtti.c (build_typeid): Call mark_lvalue_use or mark_type_use.
(build_dynamic_cast_1): call mark_lvalue_use or mark_rvalue_use.
gcc/testsuite/ChangeLog:
PR 18624
* g++.dg/warn/Wunused-7.C: Add dg-warning.
* g++.dg/template/sfinae16.C: Likewise.
* gcc.dg/Wunused-var-1.c: Moved to...
* c-c++-common/Wunused-var-1.c: ...here. New test.
* gcc.dg/Wunused-var-2.c: Moved to...
* c-c++-common/Wunused-var-2.c: ...here. New test.
* gcc.dg/Wunused-var-3.c: Moved to...
* c-c++-common/Wunused-var-3.c: ...here. New test.
* gcc.dg/Wunused-var-4.c: Moved to...
* gcc.dg/Wunused-var-1.c: ... here.
* gcc.dg/Wunused-var-5.c: Moved to...
* c-c++-common/Wunused-var-4.c: ...here. New test.
* gcc.dg/Wunused-var-7.c: Moved to...
* c-c++-common/Wunused-var-5.c: ...here. New test.
* gcc.dg/Wunused-var-6.c: Moved to...
* gcc.dg/Wunused-var-2.c: ... here.
* c-c++-common/Wunused-var-1.c: New test.
* c-c++-common/Wunused-var-2.c: New test.
* c-c++-common/Wunused-var-3.c: New test.
* c-c++-common/Wunused-var-4.c: New test.
* c-c++-common/Wunused-var-5.c: New test.
* g++.dg/warn/Wunused-var-1.C: New test.
* g++.dg/warn/Wunused-var-2.C: New test.
* g++.dg/warn/Wunused-var-3.C: New test.
* g++.dg/warn/Wunused-var-4.C: New test.
* g++.dg/warn/Wunused-var-5.C: New test.
* g++.dg/warn/Wunused-var-6.C: New test.
* g++.dg/warn/Wunused-var-7.C: New test.
* g++.dg/warn/Wunused-var-8.C: New test.
* g++.dg/warn/Wunused-parm-1.C: New test.
* g++.dg/warn/Wunused-parm-2.C: New test.
* g++.dg/warn/Wunused-parm-3.C: New test.
Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r159096
2010-05-06 08:52:30 +02:00
|
|
|
|
else
|
|
|
|
|
mark_type_use (initial_expr);
|
1996-09-30 23:34:04 +02:00
|
|
|
|
|
2003-01-10 21:30:56 +01:00
|
|
|
|
return exp;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
2009-10-30 23:23:59 +01:00
|
|
|
|
/* Generate the NTBS name of a type. If MARK_PRIVATE, put a '*' in front so that
|
|
|
|
|
comparisons will be done by pointer rather than string comparison. */
|
cp-tree.h (CPTI_TP_DESC_TYPE, [...]): Remove cp_tree_index enumerations.
* cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
(CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
(CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
(CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
(CPTI_TINFO_VAR_ID): New enumeration.
(__tp_desc_type_node, __access_mode_type_node,
__bltn_desc_type_node, __user_desc_type_node,
__class_desc_type_node, __ptr_desc_type_node,
__attr_desc_type_node, __func_desc_type_node,
__ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
enum_desc_type_node, class_desc_type_node,
si_class_desc_type_node, vmi_class_desc_type_node,
ptmd_desc_type_node, base_desc_type_node): New #defines.
(tinfo_fn_id, tinfo_fn_type): Rename to ...
(tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
(tinfo_var_id): New enumeration.
(DECL_TINFO_FN_P): Augment comment.
* decl.c (cp_global_trees): Adjust documentation.
* rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
tinfo_decl_type and tinfo_var_id.
(get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
(build_typeid): Remove unused variable.
(get_tinfo_var): Use tinfo_var_id.
(tinfo_name): New static function.
(get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
(tinfo_from_decl): Likewise.
(get_base_offset): New static function, broken out of
expand_class_desc.
(expand_si_desc): Use tinfo_name.
(expand_class_desc): Likewise. Lose local static variable.
Use base_desc_type_node. Use get_base_offset.
(expand_ptr_desc): Use tinfo_name.
(expand_attr_desc): Likewise.
(expand_generic_desc): Likewise.
* tinfo.cc (__GXX_ABI_VERSION): Test value and existance.
* tinfo.h (__GXX_ABI_VERSION): Test value and existance.
From-SVN: r31582
2000-01-24 11:23:26 +01:00
|
|
|
|
static tree
|
2009-10-30 23:23:59 +01:00
|
|
|
|
tinfo_name (tree type, bool mark_private)
|
cp-tree.h (CPTI_TP_DESC_TYPE, [...]): Remove cp_tree_index enumerations.
* cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
(CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
(CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
(CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
(CPTI_TINFO_VAR_ID): New enumeration.
(__tp_desc_type_node, __access_mode_type_node,
__bltn_desc_type_node, __user_desc_type_node,
__class_desc_type_node, __ptr_desc_type_node,
__attr_desc_type_node, __func_desc_type_node,
__ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
enum_desc_type_node, class_desc_type_node,
si_class_desc_type_node, vmi_class_desc_type_node,
ptmd_desc_type_node, base_desc_type_node): New #defines.
(tinfo_fn_id, tinfo_fn_type): Rename to ...
(tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
(tinfo_var_id): New enumeration.
(DECL_TINFO_FN_P): Augment comment.
* decl.c (cp_global_trees): Adjust documentation.
* rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
tinfo_decl_type and tinfo_var_id.
(get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
(build_typeid): Remove unused variable.
(get_tinfo_var): Use tinfo_var_id.
(tinfo_name): New static function.
(get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
(tinfo_from_decl): Likewise.
(get_base_offset): New static function, broken out of
expand_class_desc.
(expand_si_desc): Use tinfo_name.
(expand_class_desc): Likewise. Lose local static variable.
Use base_desc_type_node. Use get_base_offset.
(expand_ptr_desc): Use tinfo_name.
(expand_attr_desc): Likewise.
(expand_generic_desc): Likewise.
* tinfo.cc (__GXX_ABI_VERSION): Test value and existance.
* tinfo.h (__GXX_ABI_VERSION): Test value and existance.
From-SVN: r31582
2000-01-24 11:23:26 +01:00
|
|
|
|
{
|
2000-06-04 23:12:27 +02:00
|
|
|
|
const char *name;
|
2009-10-30 23:23:59 +01:00
|
|
|
|
int length;
|
2000-06-04 23:12:27 +02:00
|
|
|
|
tree name_string;
|
|
|
|
|
|
2009-10-30 23:23:59 +01:00
|
|
|
|
name = mangle_type_string (type);
|
|
|
|
|
length = strlen (name);
|
|
|
|
|
|
|
|
|
|
if (mark_private)
|
|
|
|
|
{
|
|
|
|
|
/* Inject '*' at beginning of name to force pointer comparison. */
|
2009-11-01 06:06:52 +01:00
|
|
|
|
char* buf = (char*) XALLOCAVEC (char, length + 2);
|
2009-10-30 23:23:59 +01:00
|
|
|
|
buf[0] = '*';
|
2009-11-01 06:06:52 +01:00
|
|
|
|
memcpy (buf + 1, name, length + 1);
|
|
|
|
|
name_string = build_string (length + 2, buf);
|
2009-10-30 23:23:59 +01:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
name_string = build_string (length + 1, name);
|
|
|
|
|
|
|
|
|
|
return fix_string_type (name_string);
|
cp-tree.h (CPTI_TP_DESC_TYPE, [...]): Remove cp_tree_index enumerations.
* cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
(CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
(CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
(CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
(CPTI_TINFO_VAR_ID): New enumeration.
(__tp_desc_type_node, __access_mode_type_node,
__bltn_desc_type_node, __user_desc_type_node,
__class_desc_type_node, __ptr_desc_type_node,
__attr_desc_type_node, __func_desc_type_node,
__ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
enum_desc_type_node, class_desc_type_node,
si_class_desc_type_node, vmi_class_desc_type_node,
ptmd_desc_type_node, base_desc_type_node): New #defines.
(tinfo_fn_id, tinfo_fn_type): Rename to ...
(tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
(tinfo_var_id): New enumeration.
(DECL_TINFO_FN_P): Augment comment.
* decl.c (cp_global_trees): Adjust documentation.
* rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
tinfo_decl_type and tinfo_var_id.
(get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
(build_typeid): Remove unused variable.
(get_tinfo_var): Use tinfo_var_id.
(tinfo_name): New static function.
(get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
(tinfo_from_decl): Likewise.
(get_base_offset): New static function, broken out of
expand_class_desc.
(expand_si_desc): Use tinfo_name.
(expand_class_desc): Likewise. Lose local static variable.
Use base_desc_type_node. Use get_base_offset.
(expand_ptr_desc): Use tinfo_name.
(expand_attr_desc): Likewise.
(expand_generic_desc): Likewise.
* tinfo.cc (__GXX_ABI_VERSION): Test value and existance.
* tinfo.h (__GXX_ABI_VERSION): Test value and existance.
From-SVN: r31582
2000-01-24 11:23:26 +01:00
|
|
|
|
}
|
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
/* Return a VAR_DECL for the internal ABI defined type_info object for
|
|
|
|
|
TYPE. You must arrange that the decl is mark_used, if actually use
|
2005-06-14 22:01:59 +02:00
|
|
|
|
it --- decls in vtables are only used if the vtable is output. */
|
1999-11-13 10:39:11 +01:00
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
get_tinfo_decl (tree type)
|
1996-04-13 01:55:07 +02:00
|
|
|
|
{
|
1996-11-12 20:49:48 +01:00
|
|
|
|
tree name;
|
1996-04-13 01:55:07 +02:00
|
|
|
|
tree d;
|
|
|
|
|
|
2006-10-13 06:09:41 +02:00
|
|
|
|
if (variably_modified_type_p (type, /*fn=*/NULL_TREE))
|
2001-04-04 06:45:23 +02:00
|
|
|
|
{
|
Convert diagnostics to use quoting flag q 7/n
cp/
Convert diagnostics to use quoting flag q 7/n
* typeck.c (composite_pointer_type_r, composite_pointer_type,
cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr,
string_conv_p, build_class_member_access_expr,
build_class_member_access_expr, lookup_destructor,
finish_class_member_access_expr, build_indirect_ref,
get_member_function_from_ptrfunc, build_function_call,
convert_arguments, build_binary_op, pointer_diff,
build_unary_op,
check_for_casting_away_constness, build_static_cast,
build_reinterpret_cast, build_const_cast, build_c_cast,
build_modify_expr, get_delta_difference, build_ptrmemfunc,
dubious_conversion_warnings, convert_for_assignment,
convert_for_initialization,
maybe_warn_about_returning_address_of_local,
check_return_expr):
Use quoting marks.
* typeck2.c (error_not_base_type, readonly_error,
abstract_virtuals_error, cxx_incomplete_type_diagnostic,
store_init_value, digest_init, build_x_arrow,
build_m_component_ref, require_complete_eh_spec_types):
Likewise.
* tree.c (cp_build_qualified_type_real,
handle_java_interface_attribute,
handle_init_priority_attribute):
Likewise.
* semantics.c (finish_asm_stmt, finish_non_static_data_member,
finish_pseudo_destructor_expr,
check_template_template_default_arg, begin_class_definition,
finish_base_specifier, qualified_name_lookup_error,
finish_id_expression, finish_typeof): Likewise.
* search.c (lookup_base, check_final_overrider,
look_for_overrides_r): Likewise.
* rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.
testsuite/
* g++.dg/overload/pmf1.C: Adjust quoting marks.
* g++.dg/warn/incomplete1.C: Likewise.
* g++.dg/template/qualttp20.C: Likewise.
From-SVN: r88854
2004-10-10 23:36:42 +02:00
|
|
|
|
error ("cannot create type information for type %qT because "
|
2006-10-13 06:09:41 +02:00
|
|
|
|
"it involves types of variable size",
|
2002-06-30 22:41:38 +02:00
|
|
|
|
type);
|
2001-04-04 06:45:23 +02:00
|
|
|
|
return error_mark_node;
|
|
|
|
|
}
|
|
|
|
|
|
1996-11-12 20:49:48 +01:00
|
|
|
|
if (TREE_CODE (type) == METHOD_TYPE)
|
|
|
|
|
type = build_function_type (TREE_TYPE (type),
|
|
|
|
|
TREE_CHAIN (TYPE_ARG_TYPES (type)));
|
|
|
|
|
|
2011-07-01 02:53:10 +02:00
|
|
|
|
type = complete_type (type);
|
|
|
|
|
|
2002-12-01 21:27:37 +01:00
|
|
|
|
/* For a class type, the variable is cached in the type node
|
|
|
|
|
itself. */
|
|
|
|
|
if (CLASS_TYPE_P (type))
|
|
|
|
|
{
|
|
|
|
|
d = CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type));
|
|
|
|
|
if (d)
|
|
|
|
|
return d;
|
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2001-02-12 10:58:18 +01:00
|
|
|
|
name = mangle_typeinfo_for_type (type);
|
2000-06-09 18:26:24 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
d = IDENTIFIER_GLOBAL_VALUE (name);
|
2002-06-30 22:41:38 +02:00
|
|
|
|
if (!d)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2005-06-16 10:21:00 +02:00
|
|
|
|
int ix = get_pseudo_ti_index (type);
|
|
|
|
|
tinfo_s *ti = VEC_index (tinfo_s, tinfo_descs, ix);
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
d = build_lang_decl (VAR_DECL, name, ti->type);
|
2004-07-29 19:59:31 +02:00
|
|
|
|
SET_DECL_ASSEMBLER_NAME (d, name);
|
2004-08-04 07:27:52 +02:00
|
|
|
|
/* Remember the type it is for. */
|
|
|
|
|
TREE_TYPE (name) = type;
|
2004-07-29 19:59:31 +02:00
|
|
|
|
DECL_TINFO_P (d) = 1;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
DECL_ARTIFICIAL (d) = 1;
|
2005-01-01 02:43:12 +01:00
|
|
|
|
DECL_IGNORED_P (d) = 1;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
TREE_READONLY (d) = 1;
|
|
|
|
|
TREE_STATIC (d) = 1;
|
2004-07-29 19:59:31 +02:00
|
|
|
|
/* Mark the variable as undefined -- but remember that we can
|
|
|
|
|
define it later if we need to do so. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
DECL_EXTERNAL (d) = 1;
|
2004-07-29 19:59:31 +02:00
|
|
|
|
DECL_NOT_REALLY_EXTERN (d) = 1;
|
2006-11-30 22:53:57 +01:00
|
|
|
|
set_linkage_according_to_type (type, d);
|
|
|
|
|
|
|
|
|
|
d = pushdecl_top_level_and_finish (d, NULL_TREE);
|
2004-08-04 07:27:52 +02:00
|
|
|
|
if (CLASS_TYPE_P (type))
|
|
|
|
|
CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
2003-07-07 01:23:46 +02:00
|
|
|
|
/* Add decl to the global array of tinfo decls. */
|
vec.h: Update API to separate allocation mechanism from type.
* vec.h: Update API to separate allocation mechanism from type.
(VEC_safe_grow): New.
* vec.c (calculate_allocation): New.
(vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
(vec_gc_free, vec_heap_free): Remove.
* gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
(VEC): Likewise.
(mangle_macro_name): New.
(struct macro_def): New.
(struct macro): Add multiple argument values.
(macro_expans_end): New.
(push_macro_expansion): Chain on new macro. Process multiple
args, create follow on expansion. Return follow on argument.
(macro_input): Deal with multiple arguments.
* tree.h: Define VEC(tree,heap) and VEC(tree,gc).
(struct tree_binfo): Adjust.
* basic-block.h: Define VEC(edge,gc).
(struct edge_def): Adjust.
(struct basic_block_def, struct edge_iterator): Likewise.
(ei_container, ei_start_1, ei_last_1): Likewise.
* cfg.c (connect_src, connect_dest): Likewise.
* cfgrtl.c (force_nonfallthru_and_redirect)
* dbxout.c (dbxout_type)
* dwarf2out.c (gen_member_die)
* lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
(gcc_tree_to_linear_expression): Adjust.
(gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
lbv_to_gcc_expression, lle_to_gcc_expression,
lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
perfect_nestify): Likewise.
* lambda.h (gcc_loopnest_to_lambda_loopnest,
lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
* profile.c (instrument_values): Adjust.
* tree-cfg.c (modified_noreturn_calls): Adjust.
(remove_fallthru_edge): Likewise.
* tree-dump.c (dequeue_and_dump): Adjust.
* tree-flow-inline.h (mark_stmt_modified): Adjust.
* tree-flow.h (modified_noreturn_calls): Adjust.
(tree_on_heap): Remove. (yay!)
(register_new_def): Adjust.
* tree-into-ssa.c: Define VEC(int,heap).
(block_defs_stack): Adjust.
(find_idf, insert_phi_nodes, register_new_def,
rewrite_initialize_block, rewrite_finalize_block,
register_new_update_single, rewrite_update_init_block,
rewrite_update_fini_block, rewrite_blocks,
ssa_rewrite_finalize_block, ssa_register_new_def,
ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
* tree-loop-linear.c (linear_transform_loops): Adjust.
* tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
(push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
* tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
vrp_variables_stack): Adjust declarations.
(tree_ssa_dominator_optimize): Adjust.
(dom_opt_initialize_block, remove_local_expressions_from_table,
restore_nonzero_vars_to_original_value,
restore_vars_to_original_value,
restore_currdefs_to_original_value, dom_opt_finalize_block,
record_var_is_nonzero, record_cond, record_const_or_copy_1,
optimize_stmt, update_rhs_and_lookup_avail_expr,
lookup_avail_expr, record_range): Likewise.
* tree-ssa-pre.c: Define VEC(basic_block,heap).
(compute_antic_aux): Adjust.
(inserted_exprs, create_expression_by_pieces,
insert_into_preds_of_block, eliminate, mark_operand_necessary,
remove_dead_inserted_code, fini_pre): Likewise.
* tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
(varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
ssa_prop_init): Likewise.
* tree-ssa.c: Define VEC(bitmap,heap).
(verify_name_tags): Adjust.
* value-prof.c (rtl_divmod_values_to_profile): Adjust.
(insn_prefetch_values_to_profile, rtl_find_values_to_profile,
tree_divmod_values_to_profile, tree_find_values_to_profile,
value_profile_transformations): Likewise.
* value-prof.h: Define VEC(histogram_value,heap).
* varasm.c: Remove alias_pair pointer typedef, define
VEC(alias_pair,gc).
(finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
* config/pa/pa.c (typedef extern_symbol): Typedef the structure,
not a pointer to it. Create an object vector.
(extern_symbols): Turn into an object vector.
(pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
* cp/cp-tree.h: Adjust for new VEC API.
Define VEC(tree_pair_s,gc).
(struct save_scope): Adjust.
(struct lang_type_class): Adjust.
(unemitted_tinfo_decls): Adjust.
* cp/class.c (add_method, resort_type_method_vec,
finish_struct_methods, struct find_final_overrider_data,
dfs_find_final_overrider_pre, find_final_overrider,
get_vcall_index, warn_hidden, walk_subobject_offsets,
check_methods, fixup_inline_methods, end_of_class,
warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
add_vcall_offset): Adjust.
* cp/decl.c (xref_basetypes, finish_method): Adjust.
* cp/decl2.c (check_classfn): Adjust.
* cp/init.c (sort_mem_initializers, push_base_cleanups): Adjust.
* cp/method.c (do_build_copy_constructor): Adjust.
* cp/name-lookup.c (new_class_binding, store_binding,
store_bindings, store_class_bindings): Adjust.
* cp/name-lookup.h: Define VEC(cxx_saved_binding,gc),
VEC(cp_class_binding,gc).
(struct cp_binding_level): Adjust.
* cp/parser.c: Define VEC(cp_token_position,heap).
(struct cp_lexer): Adjust.
(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
cp_lexer_save_tokens): Adjust.
* cp/pt.c (retrieve_specialization,
check_explicit_specialization): Adjust.
* cp/rtti.c (unemitted_tinfo_decls): Adjust.
(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
get_pseudo_ti_desc): Adjust.
* cp/search.c (dfs_access_in_type, lookup_conversion_operator,
lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
* cp/semantics.c: Define VEC(deferred_access,gc).
(push_deferring_access_checks): Adjust.
* cp/typeck2.c (abstract_virtuals_error): Adjust.
From-SVN: r98498
2005-04-21 11:18:28 +02:00
|
|
|
|
VEC_safe_push (tree, gc, unemitted_tinfo_decls, d);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
return d;
|
|
|
|
|
}
|
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
/* Return a pointer to a type_info object describing TYPE, suitably
|
|
|
|
|
cast to the language defined type. */
|
|
|
|
|
|
|
|
|
|
static tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
get_tinfo_ptr (tree type)
|
2002-06-30 22:41:38 +02:00
|
|
|
|
{
|
2003-06-23 19:46:26 +02:00
|
|
|
|
tree decl = get_tinfo_decl (type);
|
|
|
|
|
|
|
|
|
|
mark_used (decl);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
return build_nop (type_info_ptr_type,
|
2003-06-23 19:46:26 +02:00
|
|
|
|
build_address (decl));
|
2002-06-30 22:41:38 +02:00
|
|
|
|
}
|
|
|
|
|
|
2000-01-18 11:23:31 +01:00
|
|
|
|
/* Return the type_info object for TYPE. */
|
1996-07-11 03:13:25 +02:00
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
get_typeid (tree type)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
2001-07-24 10:56:12 +02:00
|
|
|
|
if (type == error_mark_node || !typeid_ok_p ())
|
1996-02-01 20:33:01 +01:00
|
|
|
|
return error_mark_node;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
1997-02-12 21:23:55 +01:00
|
|
|
|
if (processing_template_decl)
|
2004-12-08 09:36:09 +01:00
|
|
|
|
return build_min (TYPEID_EXPR, const_type_info_type_node, type);
|
1997-02-12 21:23:55 +01:00
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
/* If the type of the type-id is a reference type, the result of the
|
|
|
|
|
typeid expression refers to a type_info object representing the
|
|
|
|
|
referenced type. */
|
2003-07-08 03:38:44 +02:00
|
|
|
|
type = non_reference (type);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
/* The top-level cv-qualifiers of the lvalue expression or the type-id
|
1996-07-11 03:13:25 +02:00
|
|
|
|
that is the operand of typeid are always ignored. */
|
1996-04-13 01:55:07 +02:00
|
|
|
|
type = TYPE_MAIN_VARIANT (type);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2008-07-31 20:07:20 +02:00
|
|
|
|
/* For UNKNOWN_TYPEs call complete_type_or_else to get diagnostics. */
|
2010-05-13 07:04:14 +02:00
|
|
|
|
if (CLASS_TYPE_P (type) || type == unknown_type_node
|
|
|
|
|
|| type == init_list_type_node)
|
2000-01-18 11:23:31 +01:00
|
|
|
|
type = complete_type_or_else (type, NULL_TREE);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-18 11:23:31 +01:00
|
|
|
|
if (!type)
|
|
|
|
|
return error_mark_node;
|
1998-11-16 21:45:16 +01:00
|
|
|
|
|
re PR c/40885 (build_indirect_ref i18n problems)
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
PR c/40885
* c-common.h (ref_operator): New type.
(build_indirect_ref): Adjust prototype with new argument.
* c-typeck.c (build_indirect_ref): Accept ref_operator as argument and
emit the diagnostics for easy translation.
(build_array_ref): Update calls to build_indirect_ref.
* c-omp.c (c_finish_omp_atomic): Likewise.
* c-parser.c (c_parser_unary_expression,
c_parser_postfix_expression_after_primary): Likewise.
cp/
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
* typeck.c (build_indirect_ref): Update the argument.
(build_x_indirect_ref): Likewise.
(cp_build_indirect_ref): Update the argument and emit the diagnostics
for easy translation.
(build_class_member_access_expr, build_array_ref,
get_member_function_from_ptrfunc): Update calls.
* cp-tree.h (build_x_indirect_ref, cp_build_indirect_ref): Update
prototypes.
* call.c (build_new_op, convert_like_real, build_x_va_arg,
build_over_call): Update calls.
* class.c (build_base_path, build_simple_base_path, build_vfn_ref):
Likewise.
* decl.c (start_preparsed_function): Likewise.
* except.c (expand_start_catch_block, build_throw): Likewise.
* init.c (emit_mem_initializers, expand_virtual_init,
expand_virtual_init, build_new_1, build_vec_init, build_delete,
build_vec_delete): Likewise.
* parser.c (cp_parser_unary_expression): Likewise.
* pt.c (tsubst_copy_and_build): Likewise.
* rtti.c (build_headof, get_tinfo_decl_dynamic, get_typeid): Likewise.
* semantics.c (finish_non_static_data_member, thisify_lambda_field):
Likewise.
* tree.c (build_dummy_object, stabilize_expr): Likewise.
* typeck2.c (build_x_arrow): Likewise.
testsuite/
2009-12-17 Shujing Zhao <pearly.zhao@oracle.com>
* g++.old-deja/g++.mike/net31.C: Make expected dg-error strings
explicit.
* g++.old-deja/g++.bugs/900213_02.C: Likewise.
* g++.old-deja/g++.bugs/900215_02.C: Likewise.
From-SVN: r155302
2009-12-17 04:22:22 +01:00
|
|
|
|
return cp_build_indirect_ref (get_tinfo_ptr (type), RO_NULL,
|
2008-03-25 14:53:58 +01:00
|
|
|
|
tf_warning_or_error);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
1996-04-19 02:48:03 +02:00
|
|
|
|
/* Check whether TEST is null before returning RESULT. If TEST is used in
|
|
|
|
|
RESULT, it must have previously had a save_expr applied to it. */
|
|
|
|
|
|
1997-02-04 03:31:49 +01:00
|
|
|
|
static tree
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
ifnonnull (tree test, tree result)
|
1996-04-19 02:48:03 +02:00
|
|
|
|
{
|
call.c (build_vfield_ref, [...]): Replace calls to build with calls to buildN.
* call.c (build_vfield_ref, build_call, build_conditional_expr,
convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
build_java_interface_fn_ref, build_special_member_call,
build_new_method_call, initialize_reference): Replace calls to
build with calls to buildN.
* class.c (build_base_path, convert_to_base_statically,
build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
build_vtbl_initializer): Likewise.
* cp-gimplify.c (genericize_try_block, genericize_catch_block,
gimplify_if_stmt, cp_genericize_r): Likewise.
* cvt.c (convert_to_void): Likewise.
* decl.c (check_initializer, finish_constructor_body,
finish_destructor_body): Likewise.
* error.c (dump_expr): Likewise.
* except.c (build_exc_ptr, expand_start_catch_block, build_throw):
Likewise.
* init.c (perform_member_init, expand_virtual_init,
expand_cleanup_for_base, build_init, expand_default_init,
build_offset_ref, decl_constant_value, build_new, build_new_1,
build_vec_delete_1, build_vec_init, build_delete,
push_base_cleanups, build_vec_delete): Likewise.
* mangle.c (write_integer_cst): Likewise.
* method.c (thunk_adjust, do_build_copy_constructor,
do_build_assign_ref): Likewise.
* pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
unify, build_non_dependent_expr): Likewise.
* rtti.c (build_headof, build_typeid, ifnonnull,
build_dyanmic_cast_1, tinfo_base_init): Likewise.
* semantics.c (begin_compound_stmt, finish_call_expr,
finish_pseudo_destructor_expr, finish_id_expression,
simplify_aggr_init_expr, finalize_nrv_r): Likewise.
* tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
array_type_nelts_total, stabilize_call): Likewise.
* typeck.c (decay_conversion, build_class_member_access_expr,
lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
build_x_unary_op, build_unary_op, unary_complex_lvalue,
build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
check_return_expr): Likewise.
* typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
split_nonconstant_init, store_init_value, build_m_component_ref):
Likewise.
From-SVN: r86047
2004-08-16 04:08:06 +02:00
|
|
|
|
return build3 (COND_EXPR, TREE_TYPE (result),
|
2005-06-14 22:01:59 +02:00
|
|
|
|
build2 (EQ_EXPR, boolean_type_node, test,
|
2011-11-30 19:31:30 +01:00
|
|
|
|
cp_convert (TREE_TYPE (test), nullptr_node)),
|
|
|
|
|
cp_convert (TREE_TYPE (result), nullptr_node),
|
call.c (build_vfield_ref, [...]): Replace calls to build with calls to buildN.
* call.c (build_vfield_ref, build_call, build_conditional_expr,
convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
build_java_interface_fn_ref, build_special_member_call,
build_new_method_call, initialize_reference): Replace calls to
build with calls to buildN.
* class.c (build_base_path, convert_to_base_statically,
build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
build_vtbl_initializer): Likewise.
* cp-gimplify.c (genericize_try_block, genericize_catch_block,
gimplify_if_stmt, cp_genericize_r): Likewise.
* cvt.c (convert_to_void): Likewise.
* decl.c (check_initializer, finish_constructor_body,
finish_destructor_body): Likewise.
* error.c (dump_expr): Likewise.
* except.c (build_exc_ptr, expand_start_catch_block, build_throw):
Likewise.
* init.c (perform_member_init, expand_virtual_init,
expand_cleanup_for_base, build_init, expand_default_init,
build_offset_ref, decl_constant_value, build_new, build_new_1,
build_vec_delete_1, build_vec_init, build_delete,
push_base_cleanups, build_vec_delete): Likewise.
* mangle.c (write_integer_cst): Likewise.
* method.c (thunk_adjust, do_build_copy_constructor,
do_build_assign_ref): Likewise.
* pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
unify, build_non_dependent_expr): Likewise.
* rtti.c (build_headof, build_typeid, ifnonnull,
build_dyanmic_cast_1, tinfo_base_init): Likewise.
* semantics.c (begin_compound_stmt, finish_call_expr,
finish_pseudo_destructor_expr, finish_id_expression,
simplify_aggr_init_expr, finalize_nrv_r): Likewise.
* tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
array_type_nelts_total, stabilize_call): Likewise.
* typeck.c (decay_conversion, build_class_member_access_expr,
lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
build_x_unary_op, build_unary_op, unary_complex_lvalue,
build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
check_return_expr): Likewise.
* typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
split_nonconstant_init, store_init_value, build_m_component_ref):
Likewise.
From-SVN: r86047
2004-08-16 04:08:06 +02:00
|
|
|
|
result);
|
1996-04-19 02:48:03 +02:00
|
|
|
|
}
|
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
/* Execute a dynamic cast, as described in section 5.2.6 of the 9/93 working
|
|
|
|
|
paper. */
|
1996-04-13 01:55:07 +02:00
|
|
|
|
|
1997-07-24 23:09:25 +02:00
|
|
|
|
static tree
|
2008-03-25 14:53:58 +01:00
|
|
|
|
build_dynamic_cast_1 (tree type, tree expr, tsubst_flags_t complain)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
|
|
|
|
enum tree_code tc = TREE_CODE (type);
|
2012-01-03 16:29:42 +01:00
|
|
|
|
tree exprtype;
|
1996-04-13 01:55:07 +02:00
|
|
|
|
tree dcast_fn;
|
1998-11-16 21:45:16 +01:00
|
|
|
|
tree old_expr = expr;
|
2000-04-04 22:46:23 +02:00
|
|
|
|
const char *errstr = NULL;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2006-05-05 21:57:38 +02:00
|
|
|
|
/* Save casted types in the function's used types hash table. */
|
|
|
|
|
used_types_insert (type);
|
|
|
|
|
|
2000-03-17 01:56:12 +01:00
|
|
|
|
/* T shall be a pointer or reference to a complete class type, or
|
|
|
|
|
`pointer to cv void''. */
|
1996-02-01 20:33:01 +01:00
|
|
|
|
switch (tc)
|
|
|
|
|
{
|
|
|
|
|
case POINTER_TYPE:
|
2000-03-17 01:56:12 +01:00
|
|
|
|
if (TREE_CODE (TREE_TYPE (type)) == VOID_TYPE)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
break;
|
2004-12-08 09:36:09 +01:00
|
|
|
|
/* Fall through. */
|
1996-02-01 20:33:01 +01:00
|
|
|
|
case REFERENCE_TYPE:
|
cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2008-03-21 Paolo Carlini <pcarlini@suse.de>
* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
(SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
(IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
(PROMOTES_TO_AGGR_TYPE): Remove.
(CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
* typeck.c (unary_complex_lvalue, build_modify_expr,
convert_for_initialization): Adjust.
* init.c (is_aggr_type): Remove.
(is_class_type): Add.
(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
build_delete): Adjust.
* lex.c (make_aggr_type): Remove.
(make_class_type): Add.
(cxx_make_type): Adjust.
* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
Adjust.
* decl.c (build_typename_type, make_typename_type,
make_unbound_class_template, cxx_init_decl_processing,
check_tag_decl, groktypename, start_decl_1, layout_var_decl,
check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
grok_op_properties, xref_tag, check_function_type): Adjust.
* call.c (check_dtor_name, standard_conversion, implicit_conversion,
add_builtin_candidate, add_builtin_candidates,
build_user_type_conversion_1, convert_like_real, build_cxx_call,
is_subseq, compare_ics): Adjust.
* method.c (use_thunk): Adjust.
* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
create_tinfo_types): Adjust.
* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
build_up_reference, convert_to_reference, convert_from_reference,
ocp_convert, build_expr_type_conversion): Adjust.
* tree.c (bind_template_template_parm, error_type): Adjust.
* dump.c (cp_dump_tree): Adjust.
* search.c (lookup_member): Adjust.
* friend.c (make_friend_class, do_friend): Adjust.
* typeck2.c (store_init_value, process_init_constructor_array,
process_init_constructor_record, build_x_arrow, build_m_component_ref,
build_functional_cast): Adjust.
* pt.c (finish_member_template_decl, process_template_parm,
lookup_template_class, tsubst_function_type, tsubst,
tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
Adjust.
* semantics.c (begin_class_definition, finish_base_specifier,
finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
Adjust.
* name-lookup.c (constructor_name_p, push_overloaded_decl,
do_class_using_decl, lookup_qualified_name,
maybe_process_template_type_declaration): Adjust.
* decl2.c (grok_array_decl, check_member_template,
constrain_class_visibility): Adjust.
* parser.c (cp_parser_class_name): Adjust.
From-SVN: r133434
2008-03-21 19:56:51 +01:00
|
|
|
|
if (! MAYBE_CLASS_TYPE_P (TREE_TYPE (type)))
|
2000-03-17 01:56:12 +01:00
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("target is not pointer or reference to class");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
tree.h (COMPLETE_TYPE_P): New macro.
gcc
* tree.h (COMPLETE_TYPE_P): New macro.
(COMPLETE_OR_VOID_TYPE_P): New macro.
(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
* c-aux-info.c (gen_type): Use them.
* c-common.c (c_expand_expr_stmt): Likewise.
* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
grokdeclarator, grokparms, finish_struct, start_function,
store_parm_decls, combine_parm_decls): Likewise.
* c-parse.y (cast_expr): Likewise.
* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
c_size_in_bytes, c_alignof, build_component_ref,
build_indirect_ref, build_array_ref, convert_arguments,
build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
* calls.c (initialize_argument_information): Likewise.
* convert.c (convert_to_integer): Likewise.
* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
* dwarfout.c (location_or_const_value_attribute,
output_enumeration_type_die, output_structure_type_die,
output_union_type_die, output_type): Likewise.
* expr.c (safe_from_p, expand_expr): Likewise.
* function.c (assign_parms): Likewise.
* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
* tree.c (build_array_type, build_function_type,
build_method_type, build_offset_type, build_complex_type): Likewise.
* c-parse.c, c-parse.h: Regenerated.
gcc/cp
* typeck.c (require_complete_type, complete_type,
complete_type_or_else, c_sizeof, c_sizeof_nowarn,
build_array_ref, convert_arguments, pointer_diff,
build_x_unary_op, build_unary_op, build_c_cast,
build_modify_expr): Use COMPLETE_TYPE_P etc.
* call.c (is_complete, convert_like_real,
build_new_method_call): Likewise.
* class.c (build_vbase_pointer_fields, check_bases,
build_base_field, finish_struct_1, pushclass): Likewise.
* cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
* decl.c (maybe_process_template_type_declaration, pushtag,
pushdecl, redeclaration_error_message, start_decl, start_decl_1,
layout_var_decl, check_initializer, cp_finish_decl,
grokdeclarator, require_complete_types_for_parms,
grok_op_properties, xref_tag, xref_basetypes,
check_function_type): Likewise.
* decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
* friend.c (do_friend): Likewise.
* init.c (build_offset_ref): Likewise.
* parse.y (structsp): Likewise.
* pt.c (maybe_process_partial_specialization,
tsubst_friend_function, instantiate_class_template, tsubst,
do_type_instantiation, instantiate_pending_templates): Likewise.
* repo.c (repo_get_id): Likewise.
* rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
synthesize_tinfo_var, emit_support_tinfos): Likewise.
* search.c (lookup_fnfields_1, lookup_conversions): Likewise.
* semantics.c (begin_class_definition): Likewise.
* tree.c (build_cplus_method_type): Likewise.
* typeck2.c (digest_init, build_functional_cast,
add_exception_specifier): Likewise.
* parse.h, parse.c: Regenerated.
From-SVN: r32671
2000-03-21 19:10:48 +01:00
|
|
|
|
if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (type))))
|
2000-03-17 01:56:12 +01:00
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("target is not pointer or reference to complete type");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
1996-04-05 20:07:00 +02:00
|
|
|
|
break;
|
2000-03-17 01:56:12 +01:00
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
default:
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("target is not pointer or reference");
|
1996-02-01 20:33:01 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
|
|
|
|
|
2000-03-17 01:56:12 +01:00
|
|
|
|
if (tc == POINTER_TYPE)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
2012-01-03 16:29:42 +01:00
|
|
|
|
expr = decay_conversion (expr);
|
|
|
|
|
exprtype = TREE_TYPE (expr);
|
|
|
|
|
|
2000-03-17 01:56:12 +01:00
|
|
|
|
/* If T is a pointer type, v shall be an rvalue of a pointer to
|
|
|
|
|
complete class type, and the result is an rvalue of type T. */
|
|
|
|
|
|
C++ support for -Wunused-but-set-variable
gcc/cp/ChangeLog:
PR 18624
* cp-tree.h (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): Declare ...
* expr.c (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): ... new fns.
* typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call mark_type_use.
(perform_integral_promotions): Call mark_rvalue_use.
(cp_build_unary_op): Call mark_lvalue_use.
(decay_conversion): Update comment. Call mark_lvalue.
* decl.c (unused_but_set_errorcount): New variable.
(poplevel): Issue -Wunused-but-set-variable diagnostics.
(duplicate_decls): Merge DECL_READ_P flags.
(start_cleanup_fn): Set DECL_READ_P flag.
(finish_function): Issue -Wunused-but-set-parameter diagnostics.
* tree.c (rvalue): Call mark_rvalue_use.
* pt.c (convert_nontype_argument): Likewise.
* semantics.c (finish_typeof, finish_decltype_type): Call
mark_type_use.
(finish_asm_stmt): Call mark_lvalue_use.
(finish_expr_stmt): Call mark_exp_read.
* call.c (convert_like_real) <ck_identity, ck_user>: Call
mark_rvalue_use.
(build_x_va_arg): Call mark_lvalue_use.
(build_over_call): Call mark_type_use.
* init.c (build_new, build_delete): Call mark_value_use.
* rtti.c (build_typeid): Call mark_lvalue_use or mark_type_use.
(build_dynamic_cast_1): call mark_lvalue_use or mark_rvalue_use.
gcc/testsuite/ChangeLog:
PR 18624
* g++.dg/warn/Wunused-7.C: Add dg-warning.
* g++.dg/template/sfinae16.C: Likewise.
* gcc.dg/Wunused-var-1.c: Moved to...
* c-c++-common/Wunused-var-1.c: ...here. New test.
* gcc.dg/Wunused-var-2.c: Moved to...
* c-c++-common/Wunused-var-2.c: ...here. New test.
* gcc.dg/Wunused-var-3.c: Moved to...
* c-c++-common/Wunused-var-3.c: ...here. New test.
* gcc.dg/Wunused-var-4.c: Moved to...
* gcc.dg/Wunused-var-1.c: ... here.
* gcc.dg/Wunused-var-5.c: Moved to...
* c-c++-common/Wunused-var-4.c: ...here. New test.
* gcc.dg/Wunused-var-7.c: Moved to...
* c-c++-common/Wunused-var-5.c: ...here. New test.
* gcc.dg/Wunused-var-6.c: Moved to...
* gcc.dg/Wunused-var-2.c: ... here.
* c-c++-common/Wunused-var-1.c: New test.
* c-c++-common/Wunused-var-2.c: New test.
* c-c++-common/Wunused-var-3.c: New test.
* c-c++-common/Wunused-var-4.c: New test.
* c-c++-common/Wunused-var-5.c: New test.
* g++.dg/warn/Wunused-var-1.C: New test.
* g++.dg/warn/Wunused-var-2.C: New test.
* g++.dg/warn/Wunused-var-3.C: New test.
* g++.dg/warn/Wunused-var-4.C: New test.
* g++.dg/warn/Wunused-var-5.C: New test.
* g++.dg/warn/Wunused-var-6.C: New test.
* g++.dg/warn/Wunused-var-7.C: New test.
* g++.dg/warn/Wunused-var-8.C: New test.
* g++.dg/warn/Wunused-parm-1.C: New test.
* g++.dg/warn/Wunused-parm-2.C: New test.
* g++.dg/warn/Wunused-parm-3.C: New test.
Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r159096
2010-05-06 08:52:30 +02:00
|
|
|
|
expr = mark_rvalue_use (expr);
|
|
|
|
|
|
2000-03-17 01:56:12 +01:00
|
|
|
|
if (TREE_CODE (exprtype) != POINTER_TYPE)
|
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("source is not a pointer");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2008-03-21 Paolo Carlini <pcarlini@suse.de>
* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
(SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
(IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
(PROMOTES_TO_AGGR_TYPE): Remove.
(CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
* typeck.c (unary_complex_lvalue, build_modify_expr,
convert_for_initialization): Adjust.
* init.c (is_aggr_type): Remove.
(is_class_type): Add.
(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
build_delete): Adjust.
* lex.c (make_aggr_type): Remove.
(make_class_type): Add.
(cxx_make_type): Adjust.
* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
Adjust.
* decl.c (build_typename_type, make_typename_type,
make_unbound_class_template, cxx_init_decl_processing,
check_tag_decl, groktypename, start_decl_1, layout_var_decl,
check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
grok_op_properties, xref_tag, check_function_type): Adjust.
* call.c (check_dtor_name, standard_conversion, implicit_conversion,
add_builtin_candidate, add_builtin_candidates,
build_user_type_conversion_1, convert_like_real, build_cxx_call,
is_subseq, compare_ics): Adjust.
* method.c (use_thunk): Adjust.
* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
create_tinfo_types): Adjust.
* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
build_up_reference, convert_to_reference, convert_from_reference,
ocp_convert, build_expr_type_conversion): Adjust.
* tree.c (bind_template_template_parm, error_type): Adjust.
* dump.c (cp_dump_tree): Adjust.
* search.c (lookup_member): Adjust.
* friend.c (make_friend_class, do_friend): Adjust.
* typeck2.c (store_init_value, process_init_constructor_array,
process_init_constructor_record, build_x_arrow, build_m_component_ref,
build_functional_cast): Adjust.
* pt.c (finish_member_template_decl, process_template_parm,
lookup_template_class, tsubst_function_type, tsubst,
tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
Adjust.
* semantics.c (begin_class_definition, finish_base_specifier,
finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
Adjust.
* name-lookup.c (constructor_name_p, push_overloaded_decl,
do_class_using_decl, lookup_qualified_name,
maybe_process_template_type_declaration): Adjust.
* decl2.c (grok_array_decl, check_member_template,
constrain_class_visibility): Adjust.
* parser.c (cp_parser_class_name): Adjust.
From-SVN: r133434
2008-03-21 19:56:51 +01:00
|
|
|
|
if (! MAYBE_CLASS_TYPE_P (TREE_TYPE (exprtype)))
|
2000-03-17 01:56:12 +01:00
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("source is not a pointer to class");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
tree.h (COMPLETE_TYPE_P): New macro.
gcc
* tree.h (COMPLETE_TYPE_P): New macro.
(COMPLETE_OR_VOID_TYPE_P): New macro.
(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
* c-aux-info.c (gen_type): Use them.
* c-common.c (c_expand_expr_stmt): Likewise.
* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
grokdeclarator, grokparms, finish_struct, start_function,
store_parm_decls, combine_parm_decls): Likewise.
* c-parse.y (cast_expr): Likewise.
* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
c_size_in_bytes, c_alignof, build_component_ref,
build_indirect_ref, build_array_ref, convert_arguments,
build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
* calls.c (initialize_argument_information): Likewise.
* convert.c (convert_to_integer): Likewise.
* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
* dwarfout.c (location_or_const_value_attribute,
output_enumeration_type_die, output_structure_type_die,
output_union_type_die, output_type): Likewise.
* expr.c (safe_from_p, expand_expr): Likewise.
* function.c (assign_parms): Likewise.
* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
* tree.c (build_array_type, build_function_type,
build_method_type, build_offset_type, build_complex_type): Likewise.
* c-parse.c, c-parse.h: Regenerated.
gcc/cp
* typeck.c (require_complete_type, complete_type,
complete_type_or_else, c_sizeof, c_sizeof_nowarn,
build_array_ref, convert_arguments, pointer_diff,
build_x_unary_op, build_unary_op, build_c_cast,
build_modify_expr): Use COMPLETE_TYPE_P etc.
* call.c (is_complete, convert_like_real,
build_new_method_call): Likewise.
* class.c (build_vbase_pointer_fields, check_bases,
build_base_field, finish_struct_1, pushclass): Likewise.
* cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
* decl.c (maybe_process_template_type_declaration, pushtag,
pushdecl, redeclaration_error_message, start_decl, start_decl_1,
layout_var_decl, check_initializer, cp_finish_decl,
grokdeclarator, require_complete_types_for_parms,
grok_op_properties, xref_tag, xref_basetypes,
check_function_type): Likewise.
* decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
* friend.c (do_friend): Likewise.
* init.c (build_offset_ref): Likewise.
* parse.y (structsp): Likewise.
* pt.c (maybe_process_partial_specialization,
tsubst_friend_function, instantiate_class_template, tsubst,
do_type_instantiation, instantiate_pending_templates): Likewise.
* repo.c (repo_get_id): Likewise.
* rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
synthesize_tinfo_var, emit_support_tinfos): Likewise.
* search.c (lookup_fnfields_1, lookup_conversions): Likewise.
* semantics.c (begin_class_definition): Likewise.
* tree.c (build_cplus_method_type): Likewise.
* typeck2.c (digest_init, build_functional_cast,
add_exception_specifier): Likewise.
* parse.h, parse.c: Regenerated.
From-SVN: r32671
2000-03-21 19:10:48 +01:00
|
|
|
|
if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (exprtype))))
|
2000-03-17 01:56:12 +01:00
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("source is a pointer to incomplete type");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
C++ support for -Wunused-but-set-variable
gcc/cp/ChangeLog:
PR 18624
* cp-tree.h (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): Declare ...
* expr.c (mark_exp_read, mark_rvalue_use, mark_lvalue_use,
mark_type_use): ... new fns.
* typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call mark_type_use.
(perform_integral_promotions): Call mark_rvalue_use.
(cp_build_unary_op): Call mark_lvalue_use.
(decay_conversion): Update comment. Call mark_lvalue.
* decl.c (unused_but_set_errorcount): New variable.
(poplevel): Issue -Wunused-but-set-variable diagnostics.
(duplicate_decls): Merge DECL_READ_P flags.
(start_cleanup_fn): Set DECL_READ_P flag.
(finish_function): Issue -Wunused-but-set-parameter diagnostics.
* tree.c (rvalue): Call mark_rvalue_use.
* pt.c (convert_nontype_argument): Likewise.
* semantics.c (finish_typeof, finish_decltype_type): Call
mark_type_use.
(finish_asm_stmt): Call mark_lvalue_use.
(finish_expr_stmt): Call mark_exp_read.
* call.c (convert_like_real) <ck_identity, ck_user>: Call
mark_rvalue_use.
(build_x_va_arg): Call mark_lvalue_use.
(build_over_call): Call mark_type_use.
* init.c (build_new, build_delete): Call mark_value_use.
* rtti.c (build_typeid): Call mark_lvalue_use or mark_type_use.
(build_dynamic_cast_1): call mark_lvalue_use or mark_rvalue_use.
gcc/testsuite/ChangeLog:
PR 18624
* g++.dg/warn/Wunused-7.C: Add dg-warning.
* g++.dg/template/sfinae16.C: Likewise.
* gcc.dg/Wunused-var-1.c: Moved to...
* c-c++-common/Wunused-var-1.c: ...here. New test.
* gcc.dg/Wunused-var-2.c: Moved to...
* c-c++-common/Wunused-var-2.c: ...here. New test.
* gcc.dg/Wunused-var-3.c: Moved to...
* c-c++-common/Wunused-var-3.c: ...here. New test.
* gcc.dg/Wunused-var-4.c: Moved to...
* gcc.dg/Wunused-var-1.c: ... here.
* gcc.dg/Wunused-var-5.c: Moved to...
* c-c++-common/Wunused-var-4.c: ...here. New test.
* gcc.dg/Wunused-var-7.c: Moved to...
* c-c++-common/Wunused-var-5.c: ...here. New test.
* gcc.dg/Wunused-var-6.c: Moved to...
* gcc.dg/Wunused-var-2.c: ... here.
* c-c++-common/Wunused-var-1.c: New test.
* c-c++-common/Wunused-var-2.c: New test.
* c-c++-common/Wunused-var-3.c: New test.
* c-c++-common/Wunused-var-4.c: New test.
* c-c++-common/Wunused-var-5.c: New test.
* g++.dg/warn/Wunused-var-1.C: New test.
* g++.dg/warn/Wunused-var-2.C: New test.
* g++.dg/warn/Wunused-var-3.C: New test.
* g++.dg/warn/Wunused-var-4.C: New test.
* g++.dg/warn/Wunused-var-5.C: New test.
* g++.dg/warn/Wunused-var-6.C: New test.
* g++.dg/warn/Wunused-var-7.C: New test.
* g++.dg/warn/Wunused-var-8.C: New test.
* g++.dg/warn/Wunused-parm-1.C: New test.
* g++.dg/warn/Wunused-parm-2.C: New test.
* g++.dg/warn/Wunused-parm-3.C: New test.
Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r159096
2010-05-06 08:52:30 +02:00
|
|
|
|
expr = mark_lvalue_use (expr);
|
|
|
|
|
|
2012-01-03 16:29:42 +01:00
|
|
|
|
exprtype = build_reference_type (TREE_TYPE (expr));
|
2004-12-08 09:36:09 +01:00
|
|
|
|
|
2000-03-17 01:56:12 +01:00
|
|
|
|
/* T is a reference type, v shall be an lvalue of a complete class
|
|
|
|
|
type, and the result is an lvalue of the type referred to by T. */
|
|
|
|
|
|
cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2008-03-21 Paolo Carlini <pcarlini@suse.de>
* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
(SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
(IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
(PROMOTES_TO_AGGR_TYPE): Remove.
(CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
* typeck.c (unary_complex_lvalue, build_modify_expr,
convert_for_initialization): Adjust.
* init.c (is_aggr_type): Remove.
(is_class_type): Add.
(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
build_delete): Adjust.
* lex.c (make_aggr_type): Remove.
(make_class_type): Add.
(cxx_make_type): Adjust.
* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
Adjust.
* decl.c (build_typename_type, make_typename_type,
make_unbound_class_template, cxx_init_decl_processing,
check_tag_decl, groktypename, start_decl_1, layout_var_decl,
check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
grok_op_properties, xref_tag, check_function_type): Adjust.
* call.c (check_dtor_name, standard_conversion, implicit_conversion,
add_builtin_candidate, add_builtin_candidates,
build_user_type_conversion_1, convert_like_real, build_cxx_call,
is_subseq, compare_ics): Adjust.
* method.c (use_thunk): Adjust.
* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
create_tinfo_types): Adjust.
* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
build_up_reference, convert_to_reference, convert_from_reference,
ocp_convert, build_expr_type_conversion): Adjust.
* tree.c (bind_template_template_parm, error_type): Adjust.
* dump.c (cp_dump_tree): Adjust.
* search.c (lookup_member): Adjust.
* friend.c (make_friend_class, do_friend): Adjust.
* typeck2.c (store_init_value, process_init_constructor_array,
process_init_constructor_record, build_x_arrow, build_m_component_ref,
build_functional_cast): Adjust.
* pt.c (finish_member_template_decl, process_template_parm,
lookup_template_class, tsubst_function_type, tsubst,
tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
Adjust.
* semantics.c (begin_class_definition, finish_base_specifier,
finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
Adjust.
* name-lookup.c (constructor_name_p, push_overloaded_decl,
do_class_using_decl, lookup_qualified_name,
maybe_process_template_type_declaration): Adjust.
* decl2.c (grok_array_decl, check_member_template,
constrain_class_visibility): Adjust.
* parser.c (cp_parser_class_name): Adjust.
From-SVN: r133434
2008-03-21 19:56:51 +01:00
|
|
|
|
if (! MAYBE_CLASS_TYPE_P (TREE_TYPE (exprtype)))
|
2000-03-17 01:56:12 +01:00
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("source is not of class type");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
tree.h (COMPLETE_TYPE_P): New macro.
gcc
* tree.h (COMPLETE_TYPE_P): New macro.
(COMPLETE_OR_VOID_TYPE_P): New macro.
(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
* c-aux-info.c (gen_type): Use them.
* c-common.c (c_expand_expr_stmt): Likewise.
* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
grokdeclarator, grokparms, finish_struct, start_function,
store_parm_decls, combine_parm_decls): Likewise.
* c-parse.y (cast_expr): Likewise.
* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
c_size_in_bytes, c_alignof, build_component_ref,
build_indirect_ref, build_array_ref, convert_arguments,
build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
* calls.c (initialize_argument_information): Likewise.
* convert.c (convert_to_integer): Likewise.
* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
* dwarfout.c (location_or_const_value_attribute,
output_enumeration_type_die, output_structure_type_die,
output_union_type_die, output_type): Likewise.
* expr.c (safe_from_p, expand_expr): Likewise.
* function.c (assign_parms): Likewise.
* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
* tree.c (build_array_type, build_function_type,
build_method_type, build_offset_type, build_complex_type): Likewise.
* c-parse.c, c-parse.h: Regenerated.
gcc/cp
* typeck.c (require_complete_type, complete_type,
complete_type_or_else, c_sizeof, c_sizeof_nowarn,
build_array_ref, convert_arguments, pointer_diff,
build_x_unary_op, build_unary_op, build_c_cast,
build_modify_expr): Use COMPLETE_TYPE_P etc.
* call.c (is_complete, convert_like_real,
build_new_method_call): Likewise.
* class.c (build_vbase_pointer_fields, check_bases,
build_base_field, finish_struct_1, pushclass): Likewise.
* cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
* decl.c (maybe_process_template_type_declaration, pushtag,
pushdecl, redeclaration_error_message, start_decl, start_decl_1,
layout_var_decl, check_initializer, cp_finish_decl,
grokdeclarator, require_complete_types_for_parms,
grok_op_properties, xref_tag, xref_basetypes,
check_function_type): Likewise.
* decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
* friend.c (do_friend): Likewise.
* init.c (build_offset_ref): Likewise.
* parse.y (structsp): Likewise.
* pt.c (maybe_process_partial_specialization,
tsubst_friend_function, instantiate_class_template, tsubst,
do_type_instantiation, instantiate_pending_templates): Likewise.
* repo.c (repo_get_id): Likewise.
* rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
synthesize_tinfo_var, emit_support_tinfos): Likewise.
* search.c (lookup_fnfields_1, lookup_conversions): Likewise.
* semantics.c (begin_class_definition): Likewise.
* tree.c (build_cplus_method_type): Likewise.
* typeck2.c (digest_init, build_functional_cast,
add_exception_specifier): Likewise.
* parse.h, parse.c: Regenerated.
From-SVN: r32671
2000-03-21 19:10:48 +01:00
|
|
|
|
if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (exprtype))))
|
2000-03-17 01:56:12 +01:00
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("source is of incomplete class type");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2006-04-19 19:15:54 +02:00
|
|
|
|
/* Apply trivial conversion T -> T& for dereferenced ptrs. */
|
|
|
|
|
expr = convert_to_reference (exprtype, expr, CONV_IMPLICIT,
|
|
|
|
|
LOOKUP_NORMAL, NULL_TREE);
|
2000-03-17 01:56:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* The dynamic_cast operator shall not cast away constness. */
|
|
|
|
|
if (!at_least_as_qualified_p (TREE_TYPE (type),
|
|
|
|
|
TREE_TYPE (exprtype)))
|
|
|
|
|
{
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("conversion casts away constness");
|
2000-03-17 01:56:12 +01:00
|
|
|
|
goto fail;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* If *type is an unambiguous accessible base class of *exprtype,
|
|
|
|
|
convert statically. */
|
|
|
|
|
{
|
2001-11-25 14:21:45 +01:00
|
|
|
|
tree binfo;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2001-11-25 14:21:45 +01:00
|
|
|
|
binfo = lookup_base (TREE_TYPE (exprtype), TREE_TYPE (type),
|
2004-10-18 19:21:36 +02:00
|
|
|
|
ba_check, NULL);
|
1998-11-16 21:45:16 +01:00
|
|
|
|
|
2001-11-25 14:21:45 +01:00
|
|
|
|
if (binfo)
|
1998-11-16 21:45:16 +01:00
|
|
|
|
{
|
2001-11-25 14:21:45 +01:00
|
|
|
|
expr = build_base_path (PLUS_EXPR, convert_from_reference (expr),
|
2011-09-24 11:55:01 +02:00
|
|
|
|
binfo, 0, complain);
|
2000-04-11 02:38:39 +02:00
|
|
|
|
if (TREE_CODE (exprtype) == POINTER_TYPE)
|
2005-09-06 16:55:06 +02:00
|
|
|
|
expr = rvalue (expr);
|
2000-04-11 02:38:39 +02:00
|
|
|
|
return expr;
|
|
|
|
|
}
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Otherwise *exprtype must be a polymorphic class (have a vtbl). */
|
1999-12-21 01:19:01 +01:00
|
|
|
|
if (TYPE_POLYMORPHIC_P (TREE_TYPE (exprtype)))
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
1996-04-19 02:48:03 +02:00
|
|
|
|
tree expr1;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
/* if TYPE is `void *', return pointer to complete object. */
|
2000-06-20 17:42:55 +02:00
|
|
|
|
if (tc == POINTER_TYPE && VOID_TYPE_P (TREE_TYPE (type)))
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
|
|
|
|
/* if b is an object, dynamic_cast<void *>(&b) == (void *)&b. */
|
|
|
|
|
if (TREE_CODE (expr) == ADDR_EXPR
|
|
|
|
|
&& TREE_CODE (TREE_OPERAND (expr, 0)) == VAR_DECL
|
|
|
|
|
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == RECORD_TYPE)
|
|
|
|
|
return build1 (NOP_EXPR, type, expr);
|
|
|
|
|
|
1996-04-19 02:48:03 +02:00
|
|
|
|
/* Since expr is used twice below, save it. */
|
|
|
|
|
expr = save_expr (expr);
|
|
|
|
|
|
|
|
|
|
expr1 = build_headof (expr);
|
|
|
|
|
if (TREE_TYPE (expr1) != type)
|
|
|
|
|
expr1 = build1 (NOP_EXPR, type, expr1);
|
|
|
|
|
return ifnonnull (expr, expr1);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
tree retval;
|
builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
Delete, and replace with...
(fold_builtin_call_array): This. Update callers to use it.
* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
(fold_build_call_array): This.
(fold_build_call_list_initializer): Delete, and replace with...
(fold_build_call_array_initializer): This.
* gcc/tree.h: Update declarations to reflect above changes.
* gcc/c-typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/c-format.c: (check_function_format): Pass arguments in an
array instead of a list.
* gcc/c-common.c (check_function_nonnull): Likewise.
(check_function_sentinel): Likewise.
(check_function_arguments): Likewise.
* gcc/c-common.h: Update declarations to reflect above changes.
* gcc/cp/typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/cp/call.c (build_call): Delete, and replace with...
(build_call_n, build_call_a): New.
(build_op_delete_call): Rewrite to avoid constructing argument lists.
(build_over_call): Store converted arguments in a stack-allocated
array instead of building a list.
(build_cxx_call): Pass arguments in an array instead of as a list.
(build_java_interface_fn_ref): Rewrite to avoid constructing
argument lists.
* gcc/cp/tree.h: Update declarations to reflect above changes.
* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
the arguments instead of a list.
* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
(throw_bad_typeid): Likewise.
(build_dynamic_cast_1): Likewise.
* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
* gcc/cp/decl.c (expand_static_init): Likewise.
* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
(gimplify_must_not_throw_expr): Likewise.
(cxx_omp_apply_fn): Use build_call_a.
From-SVN: r122411
2007-02-28 20:21:20 +01:00
|
|
|
|
tree result, td2, td3;
|
|
|
|
|
tree elems[4];
|
2005-06-15 02:41:35 +02:00
|
|
|
|
tree static_type, target_type, boff;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
2005-06-15 02:41:35 +02:00
|
|
|
|
/* If we got here, we can't convert statically. Therefore,
|
1996-02-01 20:33:01 +01:00
|
|
|
|
dynamic_cast<D&>(b) (b an object) cannot succeed. */
|
2000-03-17 01:56:12 +01:00
|
|
|
|
if (tc == REFERENCE_TYPE)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
1998-11-16 21:45:16 +01:00
|
|
|
|
if (TREE_CODE (old_expr) == VAR_DECL
|
|
|
|
|
&& TREE_CODE (TREE_TYPE (old_expr)) == RECORD_TYPE)
|
1996-02-01 20:33:01 +01:00
|
|
|
|
{
|
2005-06-15 02:41:35 +02:00
|
|
|
|
tree expr = throw_bad_cast ();
|
2008-03-25 14:53:58 +01:00
|
|
|
|
if (complain & tf_warning)
|
|
|
|
|
warning (0, "dynamic_cast of %q#D to %q#T can never succeed",
|
|
|
|
|
old_expr, type);
|
2005-06-15 02:41:35 +02:00
|
|
|
|
/* Bash it to the expected type. */
|
|
|
|
|
TREE_TYPE (expr) = type;
|
2000-01-24 13:16:59 +01:00
|
|
|
|
return expr;
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/* Ditto for dynamic_cast<D*>(&b). */
|
|
|
|
|
else if (TREE_CODE (expr) == ADDR_EXPR)
|
|
|
|
|
{
|
|
|
|
|
tree op = TREE_OPERAND (expr, 0);
|
|
|
|
|
if (TREE_CODE (op) == VAR_DECL
|
|
|
|
|
&& TREE_CODE (TREE_TYPE (op)) == RECORD_TYPE)
|
|
|
|
|
{
|
2008-03-25 14:53:58 +01:00
|
|
|
|
if (complain & tf_warning)
|
|
|
|
|
warning (0, "dynamic_cast of %q#D to %q#T can never succeed",
|
|
|
|
|
op, type);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
retval = build_int_cst (type, 0);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
return retval;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2006-08-23 16:04:24 +02:00
|
|
|
|
/* Use of dynamic_cast when -fno-rtti is prohibited. */
|
|
|
|
|
if (!flag_rtti)
|
|
|
|
|
{
|
2008-03-25 14:53:58 +01:00
|
|
|
|
if (complain & tf_error)
|
|
|
|
|
error ("%<dynamic_cast%> not permitted with -fno-rtti");
|
2006-08-23 16:04:24 +02:00
|
|
|
|
return error_mark_node;
|
|
|
|
|
}
|
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
target_type = TYPE_MAIN_VARIANT (TREE_TYPE (type));
|
|
|
|
|
static_type = TYPE_MAIN_VARIANT (TREE_TYPE (exprtype));
|
2003-06-23 19:46:26 +02:00
|
|
|
|
td2 = get_tinfo_decl (target_type);
|
|
|
|
|
mark_used (td2);
|
Require lvalues as specified by the standard.
* typeck.c (lvalue_or_else): Use real_lvalue_p.
(cp_build_addr_expr_1): Split out of cp_build_unary_op.
(cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces.
(decay_conversion, get_member_function_from_ptrfunc): Adjust.
(build_x_unary_op, build_reinterpret_cast_1): Adjust.
(build_const_cast_1): Adjust.
* cp-tree.h: Declare new fns.
* call.c (build_this, convert_like_real, build_over_call): Adjust.
(initialize_reference): Adjust.
* class.c (build_base_path, convert_to_base_statically): Adjust.
(build_vfn_ref, resolve_address_of_overloaded_function): Adjust.
* cvt.c (build_up_reference, convert_to_reference): Adjust.
* decl.c (register_dtor_fn): Adjust.
* decl2.c (build_offset_ref_call_from_tree): Adjust.
* except.c (initialize_handler_parm): Adjust.
* init.c (build_offset_ref, build_delete, build_vec_delete): Adjust.
* rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust.
* tree.c (stabilize_expr): Adjust.
From-SVN: r164666
2010-09-27 22:05:34 +02:00
|
|
|
|
td2 = cp_build_addr_expr (td2, complain);
|
2003-06-23 19:46:26 +02:00
|
|
|
|
td3 = get_tinfo_decl (static_type);
|
|
|
|
|
mark_used (td3);
|
Require lvalues as specified by the standard.
* typeck.c (lvalue_or_else): Use real_lvalue_p.
(cp_build_addr_expr_1): Split out of cp_build_unary_op.
(cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces.
(decay_conversion, get_member_function_from_ptrfunc): Adjust.
(build_x_unary_op, build_reinterpret_cast_1): Adjust.
(build_const_cast_1): Adjust.
* cp-tree.h: Declare new fns.
* call.c (build_this, convert_like_real, build_over_call): Adjust.
(initialize_reference): Adjust.
* class.c (build_base_path, convert_to_base_statically): Adjust.
(build_vfn_ref, resolve_address_of_overloaded_function): Adjust.
* cvt.c (build_up_reference, convert_to_reference): Adjust.
* decl.c (register_dtor_fn): Adjust.
* decl2.c (build_offset_ref_call_from_tree): Adjust.
* except.c (initialize_handler_parm): Adjust.
* init.c (build_offset_ref, build_delete, build_vec_delete): Adjust.
* rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust.
* tree.c (stabilize_expr): Adjust.
From-SVN: r164666
2010-09-27 22:05:34 +02:00
|
|
|
|
td3 = cp_build_addr_expr (td3, complain);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
2005-06-15 02:41:35 +02:00
|
|
|
|
/* Determine how T and V are related. */
|
|
|
|
|
boff = dcast_base_hint (static_type, target_type);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
1996-04-13 01:55:07 +02:00
|
|
|
|
/* Since expr is used twice below, save it. */
|
|
|
|
|
expr = save_expr (expr);
|
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
expr1 = expr;
|
|
|
|
|
if (tc == REFERENCE_TYPE)
|
Require lvalues as specified by the standard.
* typeck.c (lvalue_or_else): Use real_lvalue_p.
(cp_build_addr_expr_1): Split out of cp_build_unary_op.
(cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces.
(decay_conversion, get_member_function_from_ptrfunc): Adjust.
(build_x_unary_op, build_reinterpret_cast_1): Adjust.
(build_const_cast_1): Adjust.
* cp-tree.h: Declare new fns.
* call.c (build_this, convert_like_real, build_over_call): Adjust.
(initialize_reference): Adjust.
* class.c (build_base_path, convert_to_base_statically): Adjust.
(build_vfn_ref, resolve_address_of_overloaded_function): Adjust.
* cvt.c (build_up_reference, convert_to_reference): Adjust.
* decl.c (register_dtor_fn): Adjust.
* decl2.c (build_offset_ref_call_from_tree): Adjust.
* except.c (initialize_handler_parm): Adjust.
* init.c (build_offset_ref, build_delete, build_vec_delete): Adjust.
* rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust.
* tree.c (stabilize_expr): Adjust.
From-SVN: r164666
2010-09-27 22:05:34 +02:00
|
|
|
|
expr1 = cp_build_addr_expr (expr1, complain);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
Delete, and replace with...
(fold_builtin_call_array): This. Update callers to use it.
* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
(fold_build_call_array): This.
(fold_build_call_list_initializer): Delete, and replace with...
(fold_build_call_array_initializer): This.
* gcc/tree.h: Update declarations to reflect above changes.
* gcc/c-typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/c-format.c: (check_function_format): Pass arguments in an
array instead of a list.
* gcc/c-common.c (check_function_nonnull): Likewise.
(check_function_sentinel): Likewise.
(check_function_arguments): Likewise.
* gcc/c-common.h: Update declarations to reflect above changes.
* gcc/cp/typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/cp/call.c (build_call): Delete, and replace with...
(build_call_n, build_call_a): New.
(build_op_delete_call): Rewrite to avoid constructing argument lists.
(build_over_call): Store converted arguments in a stack-allocated
array instead of building a list.
(build_cxx_call): Pass arguments in an array instead of as a list.
(build_java_interface_fn_ref): Rewrite to avoid constructing
argument lists.
* gcc/cp/tree.h: Update declarations to reflect above changes.
* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
the arguments instead of a list.
* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
(throw_bad_typeid): Likewise.
(build_dynamic_cast_1): Likewise.
* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
* gcc/cp/decl.c (expand_static_init): Likewise.
* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
(gimplify_must_not_throw_expr): Likewise.
(cxx_omp_apply_fn): Use build_call_a.
From-SVN: r122411
2007-02-28 20:21:20 +01:00
|
|
|
|
elems[0] = expr1;
|
|
|
|
|
elems[1] = td3;
|
|
|
|
|
elems[2] = td2;
|
|
|
|
|
elems[3] = boff;
|
1996-04-13 01:55:07 +02:00
|
|
|
|
|
2000-01-24 13:16:59 +01:00
|
|
|
|
dcast_fn = dynamic_cast_node;
|
|
|
|
|
if (!dcast_fn)
|
1996-04-13 01:55:07 +02:00
|
|
|
|
{
|
|
|
|
|
tree tmp;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
tree tinfo_ptr;
|
|
|
|
|
const char *name;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2008-02-27 10:09:05 +01:00
|
|
|
|
push_abi_namespace ();
|
2002-06-26 19:03:44 +02:00
|
|
|
|
tinfo_ptr = xref_tag (class_type,
|
2001-02-18 21:31:44 +01:00
|
|
|
|
get_identifier ("__class_type_info"),
|
2005-03-14 15:33:54 +01:00
|
|
|
|
/*tag_scope=*/ts_current, false);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2001-02-18 21:31:44 +01:00
|
|
|
|
tinfo_ptr = build_pointer_type
|
2010-05-19 23:02:27 +02:00
|
|
|
|
(cp_build_qualified_type
|
2001-02-18 21:31:44 +01:00
|
|
|
|
(tinfo_ptr, TYPE_QUAL_CONST));
|
|
|
|
|
name = "__dynamic_cast";
|
2010-06-09 17:18:40 +02:00
|
|
|
|
tmp = build_function_type_list (ptr_type_node,
|
|
|
|
|
const_ptr_type_node,
|
|
|
|
|
tinfo_ptr, tinfo_ptr,
|
|
|
|
|
ptrdiff_type_node, NULL_TREE);
|
2000-08-09 11:57:55 +02:00
|
|
|
|
dcast_fn = build_library_fn_ptr (name, tmp);
|
[multiple changes]
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
PATCH rtl/7335
PATCH rtl/33826
* see.c (see_copy_insn): Copy new pure const attributes for new
call.
* c-decl.c (merge_decls): Ditto.
* postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
to RTL_CONST_OR_PURE_CALL_P.
* tree.c (define_local_buitin): Rename DECL_IS_PURE to
DECL_PURE_P. Initialized DECL_LOOPING_CONST_PURE.
(process_call_operands): Set tree_side_effects properly.
* tree.h (TREE_READONLY_DECL_P): Removed.
(DECL_IS_PURE): Renamed to DECL_PURE_P.
(DECL_LOOPING_OR_CONST_P): New macro.
(struct tree_function_decl): Added looping_const_or_pure_p.
(ECF_*) Renumbered.
(ECF_LOOPING_OR_CONST_P): New macro,
* rtlanal.c (pure_const_p): Removed.
* builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
* reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
to RTL_CONST_CALL_P.
* ipa-pure-const.c (pure_const_state_e): Added looping field.
(check_decl, check_tree, check_call, scan_function): Initialize
looping.
(analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
(static_execute): Set looping true for recursive functions.
Undo setting state to IPA_NEITHER for recursive functions.
* cse.c (cse_insn):
* ifcvt.c (noce_can_store_speculate_p): Changed
CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
RTL_CONST_OR_PURE_CALL_P.
* dse.c (scan_insn): Ditto.
* local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
* gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
RTL_CONST_OR_PURE_CALL_P.
(store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
pure_call_p to RTL_CONST_CALL_P.
* gimplify.c (gimplify_call_expr): Clear side effects for
non-looping pure and constant calls.
* calls.c (emit_call_1): Set rtl flags from ecf flags.
(flags_from_decl_or_type): Set ecf flags from decl flags.
(initialize_argument_information): Turn off
ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
Change const to pure if callee_copies is true rather than just
turning off const.
(expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
way of marking pure calls.
(emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
Remove hack that was supposed to fix pr7335 and remove old
way of marking pure calls.
* emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
* cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
RTL_CONST_OR_PURE_CALL_P.
* tree-ssa-pre.c (can_value_number_call): Fixed spacing.
* loop-invariant.c (find_exits, find_invariant_bb): Changed
CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
* sched-deps.c (schedule_analyze): Ditto.
* rtl.h (struct rtx_def): Use call field, unchanging field, and
return_val field of calls to represent pure and const function
info.
(CONST_OR_PURE_CALL_P): Deleted macro.
(RTL_CONST_CALL_P, RTL_PURE_CALL_P,
RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
* tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
TREE_READONLY.
* tree-optimize.c (execute_fixup_cfg): Added test for
ECF_LOOPING_CONST_OR_PURE.
* c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
DECL_PURE_P.
* tree-cfg.c (update_call_expr_flags): Do not clear tree side
effects for looping pure or const calls.
(verify_gimple_expr): Added verification code.
* config/alpha/alpha.c (alpha_legitimize_address,
alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
RTL_CONST_CALL_P.
* config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
* config/mips/mips.c (mips_call_tls_get_addr): Ditto.
* cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
RTL_CONST_OR_PURE_CALL_P.
* dce.c (deletable_insn_p): Allow non looping, non sibling, pure
and const calls to be deleted.
java:
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
* decl.c (java_init_decl_processing): Change DECL_IS_PURE to
DECL_PURE_P.
cp:
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
* decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
DECL_LOOPING_CONST_OR_PURE_P attributes.
* rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
DECL_PURE_P.
gfortran:
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>
* trans-decl.c (gfc_get_extern_function_decl, build_function_decl):
Rename DECL_IS_PURE to DECL_PURE_P.
From-SVN: r135053
2008-05-07 22:48:07 +02:00
|
|
|
|
DECL_PURE_P (dcast_fn) = 1;
|
2008-02-27 10:09:05 +01:00
|
|
|
|
pop_abi_namespace ();
|
2005-06-15 02:41:35 +02:00
|
|
|
|
dynamic_cast_node = dcast_fn;
|
1996-04-13 01:55:07 +02:00
|
|
|
|
}
|
builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
Delete, and replace with...
(fold_builtin_call_array): This. Update callers to use it.
* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
(fold_build_call_array): This.
(fold_build_call_list_initializer): Delete, and replace with...
(fold_build_call_array_initializer): This.
* gcc/tree.h: Update declarations to reflect above changes.
* gcc/c-typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/c-format.c: (check_function_format): Pass arguments in an
array instead of a list.
* gcc/c-common.c (check_function_nonnull): Likewise.
(check_function_sentinel): Likewise.
(check_function_arguments): Likewise.
* gcc/c-common.h: Update declarations to reflect above changes.
* gcc/cp/typeck.c (build_function_call): Store converted arguments
in a stack-allocated array instead of building a list.
(convert_arguments): Store arguments in the array passed in as an
argument, and return the actual number of arguments.
* gcc/cp/call.c (build_call): Delete, and replace with...
(build_call_n, build_call_a): New.
(build_op_delete_call): Rewrite to avoid constructing argument lists.
(build_over_call): Store converted arguments in a stack-allocated
array instead of building a list.
(build_cxx_call): Pass arguments in an array instead of as a list.
(build_java_interface_fn_ref): Rewrite to avoid constructing
argument lists.
* gcc/cp/tree.h: Update declarations to reflect above changes.
* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
the arguments instead of a list.
* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
(throw_bad_typeid): Likewise.
(build_dynamic_cast_1): Likewise.
* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
* gcc/cp/decl.c (expand_static_init): Likewise.
* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
(gimplify_must_not_throw_expr): Likewise.
(cxx_omp_apply_fn): Use build_call_a.
From-SVN: r122411
2007-02-28 20:21:20 +01:00
|
|
|
|
result = build_cxx_call (dcast_fn, 4, elems);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
|
|
|
|
|
if (tc == REFERENCE_TYPE)
|
|
|
|
|
{
|
2000-01-28 14:30:13 +01:00
|
|
|
|
tree bad = throw_bad_cast ();
|
2006-06-04 20:25:40 +02:00
|
|
|
|
tree neq;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
result = save_expr (result);
|
2011-11-30 19:31:30 +01:00
|
|
|
|
neq = cp_truthvalue_conversion (result);
|
2008-09-17 21:07:27 +02:00
|
|
|
|
return cp_convert (type,
|
|
|
|
|
build3 (COND_EXPR, TREE_TYPE (result),
|
|
|
|
|
neq, result, bad));
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
1996-07-11 03:13:25 +02:00
|
|
|
|
/* Now back to the type we want from a void*. */
|
1997-05-29 01:20:02 +02:00
|
|
|
|
result = cp_convert (type, result);
|
2005-06-15 02:41:35 +02:00
|
|
|
|
return ifnonnull (expr, result);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
2000-03-17 01:56:12 +01:00
|
|
|
|
else
|
2009-12-02 16:49:20 +01:00
|
|
|
|
errstr = _("source type is not polymorphic");
|
1999-10-29 01:55:28 +02:00
|
|
|
|
|
1996-02-01 20:33:01 +01:00
|
|
|
|
fail:
|
2008-03-25 14:53:58 +01:00
|
|
|
|
if (complain & tf_error)
|
|
|
|
|
error ("cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)",
|
2012-01-03 16:29:42 +01:00
|
|
|
|
old_expr, TREE_TYPE (old_expr), type, errstr);
|
1996-02-01 20:33:01 +01:00
|
|
|
|
return error_mark_node;
|
|
|
|
|
}
|
1997-07-24 23:09:25 +02:00
|
|
|
|
|
|
|
|
|
tree
|
2008-03-25 14:53:58 +01:00
|
|
|
|
build_dynamic_cast (tree type, tree expr, tsubst_flags_t complain)
|
1997-07-24 23:09:25 +02:00
|
|
|
|
{
|
2012-03-19 16:51:25 +01:00
|
|
|
|
tree r;
|
|
|
|
|
|
1997-11-26 11:14:51 +01:00
|
|
|
|
if (type == error_mark_node || expr == error_mark_node)
|
|
|
|
|
return error_mark_node;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
1997-11-26 11:14:51 +01:00
|
|
|
|
if (processing_template_decl)
|
2003-09-05 10:24:28 +02:00
|
|
|
|
{
|
|
|
|
|
expr = build_min (DYNAMIC_CAST_EXPR, type, expr);
|
|
|
|
|
TREE_SIDE_EFFECTS (expr) = 1;
|
2007-12-11 09:20:15 +01:00
|
|
|
|
return convert_from_reference (expr);
|
2003-09-05 10:24:28 +02:00
|
|
|
|
}
|
1997-11-26 11:14:51 +01:00
|
|
|
|
|
2012-03-19 16:51:25 +01:00
|
|
|
|
r = convert_from_reference (build_dynamic_cast_1 (type, expr, complain));
|
|
|
|
|
if (r != error_mark_node)
|
|
|
|
|
maybe_warn_about_useless_cast (type, expr, complain);
|
|
|
|
|
return r;
|
1997-07-24 23:09:25 +02:00
|
|
|
|
}
|
2012-03-19 16:51:25 +01:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
/* Return the runtime bit mask encoding the qualifiers of TYPE. */
|
|
|
|
|
|
|
|
|
|
static int
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
qualifier_flags (tree type)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
|
|
|
|
int flags = 0;
|
2002-11-23 00:19:17 +01:00
|
|
|
|
int quals = cp_type_quals (type);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
if (quals & TYPE_QUAL_CONST)
|
|
|
|
|
flags |= 1;
|
|
|
|
|
if (quals & TYPE_QUAL_VOLATILE)
|
|
|
|
|
flags |= 2;
|
2000-04-10 18:21:28 +02:00
|
|
|
|
if (quals & TYPE_QUAL_RESTRICT)
|
|
|
|
|
flags |= 4;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
return flags;
|
|
|
|
|
}
|
|
|
|
|
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
/* Return true, if the pointer chain TYPE ends at an incomplete type, or
|
2000-04-20 16:25:33 +02:00
|
|
|
|
contains a pointer to member of an incomplete class. */
|
|
|
|
|
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
static bool
|
|
|
|
|
target_incomplete_p (tree type)
|
2000-04-20 16:25:33 +02:00
|
|
|
|
{
|
2003-07-23 01:30:22 +02:00
|
|
|
|
while (true)
|
2000-04-20 16:25:33 +02:00
|
|
|
|
if (TYPE_PTRMEM_P (type))
|
|
|
|
|
{
|
2003-07-23 01:30:22 +02:00
|
|
|
|
if (!COMPLETE_TYPE_P (TYPE_PTRMEM_CLASS_TYPE (type)))
|
|
|
|
|
return true;
|
|
|
|
|
type = TYPE_PTRMEM_POINTED_TO_TYPE (type);
|
2000-04-20 16:25:33 +02:00
|
|
|
|
}
|
2003-07-23 01:30:22 +02:00
|
|
|
|
else if (TREE_CODE (type) == POINTER_TYPE)
|
2000-04-20 16:25:33 +02:00
|
|
|
|
type = TREE_TYPE (type);
|
2003-07-23 01:30:22 +02:00
|
|
|
|
else
|
|
|
|
|
return !COMPLETE_OR_VOID_TYPE_P (type);
|
2000-04-20 16:25:33 +02:00
|
|
|
|
}
|
|
|
|
|
|
2004-07-29 19:59:31 +02:00
|
|
|
|
/* Returns true if TYPE involves an incomplete class type; in that
|
|
|
|
|
case, typeinfo variables for TYPE should be emitted with internal
|
|
|
|
|
linkage. */
|
|
|
|
|
|
|
|
|
|
static bool
|
|
|
|
|
involves_incomplete_p (tree type)
|
|
|
|
|
{
|
|
|
|
|
switch (TREE_CODE (type))
|
|
|
|
|
{
|
|
|
|
|
case POINTER_TYPE:
|
|
|
|
|
return target_incomplete_p (TREE_TYPE (type));
|
|
|
|
|
|
|
|
|
|
case OFFSET_TYPE:
|
|
|
|
|
ptrmem:
|
2005-06-14 22:01:59 +02:00
|
|
|
|
return
|
2004-07-29 19:59:31 +02:00
|
|
|
|
(target_incomplete_p (TYPE_PTRMEM_POINTED_TO_TYPE (type))
|
|
|
|
|
|| !COMPLETE_TYPE_P (TYPE_PTRMEM_CLASS_TYPE (type)));
|
|
|
|
|
|
|
|
|
|
case RECORD_TYPE:
|
|
|
|
|
if (TYPE_PTRMEMFUNC_P (type))
|
|
|
|
|
goto ptrmem;
|
|
|
|
|
/* Fall through. */
|
|
|
|
|
case UNION_TYPE:
|
|
|
|
|
if (!COMPLETE_TYPE_P (type))
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
/* All other types do not involve incomplete class types. */
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
/* Return a CONSTRUCTOR for the common part of the type_info objects. This
|
2000-04-20 16:25:33 +02:00
|
|
|
|
is the vtable pointer and NTBS name. The NTBS name is emitted as a
|
|
|
|
|
comdat const char array, so it becomes a unique key for the type. Generate
|
|
|
|
|
and emit that VAR_DECL here. (We can't always emit the type_info itself
|
|
|
|
|
as comdat, because of pointers to incomplete.) */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
|
|
|
|
static tree
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tinfo_base_init (tinfo_s *ti, tree target)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2010-05-24 19:17:57 +02:00
|
|
|
|
tree init;
|
2000-04-20 16:25:33 +02:00
|
|
|
|
tree name_decl;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
tree vtable_ptr;
|
2010-05-24 19:17:57 +02:00
|
|
|
|
VEC(constructor_elt,gc) *v;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-04-20 16:25:33 +02:00
|
|
|
|
{
|
2009-10-30 23:23:59 +01:00
|
|
|
|
tree name_name, name_string;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-04-20 16:25:33 +02:00
|
|
|
|
/* Generate the NTBS array variable. */
|
|
|
|
|
tree name_type = build_cplus_array_type
|
2010-05-19 23:02:27 +02:00
|
|
|
|
(cp_build_qualified_type (char_type_node, TYPE_QUAL_CONST),
|
2005-06-15 02:41:35 +02:00
|
|
|
|
NULL_TREE);
|
2000-06-04 23:12:27 +02:00
|
|
|
|
|
2004-07-29 19:59:31 +02:00
|
|
|
|
/* Determine the name of the variable -- and remember with which
|
|
|
|
|
type it is associated. */
|
2001-02-12 10:58:18 +01:00
|
|
|
|
name_name = mangle_typeinfo_string_for_type (target);
|
2004-07-29 19:59:31 +02:00
|
|
|
|
TREE_TYPE (name_name) = target;
|
|
|
|
|
|
2000-04-20 16:25:33 +02:00
|
|
|
|
name_decl = build_lang_decl (VAR_DECL, name_name, name_type);
|
2004-08-04 07:27:52 +02:00
|
|
|
|
SET_DECL_ASSEMBLER_NAME (name_decl, name_name);
|
2000-04-20 16:25:33 +02:00
|
|
|
|
DECL_ARTIFICIAL (name_decl) = 1;
|
2005-01-01 02:43:12 +01:00
|
|
|
|
DECL_IGNORED_P (name_decl) = 1;
|
2000-04-20 16:25:33 +02:00
|
|
|
|
TREE_READONLY (name_decl) = 1;
|
|
|
|
|
TREE_STATIC (name_decl) = 1;
|
|
|
|
|
DECL_EXTERNAL (name_decl) = 0;
|
2004-07-29 19:59:31 +02:00
|
|
|
|
DECL_TINFO_P (name_decl) = 1;
|
2006-10-22 18:07:41 +02:00
|
|
|
|
set_linkage_according_to_type (target, name_decl);
|
2004-07-29 19:59:31 +02:00
|
|
|
|
import_export_decl (name_decl);
|
2009-10-30 23:23:59 +01:00
|
|
|
|
name_string = tinfo_name (target, !TREE_PUBLIC (name_decl));
|
2000-04-20 16:25:33 +02:00
|
|
|
|
DECL_INITIAL (name_decl) = name_string;
|
2003-06-23 19:46:26 +02:00
|
|
|
|
mark_used (name_decl);
|
2003-06-20 02:48:44 +02:00
|
|
|
|
pushdecl_top_level_and_finish (name_decl, name_string);
|
2000-04-20 16:25:33 +02:00
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
vtable_ptr = ti->vtable;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
if (!vtable_ptr)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2002-06-30 22:41:38 +02:00
|
|
|
|
tree real_type;
|
2008-02-27 10:09:05 +01:00
|
|
|
|
push_abi_namespace ();
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
real_type = xref_tag (class_type, ti->name,
|
2005-03-14 15:33:54 +01:00
|
|
|
|
/*tag_scope=*/ts_current, false);
|
2008-02-27 10:09:05 +01:00
|
|
|
|
pop_abi_namespace ();
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
if (!COMPLETE_TYPE_P (real_type))
|
|
|
|
|
{
|
2005-06-15 02:41:35 +02:00
|
|
|
|
/* We never saw a definition of this type, so we need to
|
2002-06-30 22:41:38 +02:00
|
|
|
|
tell the compiler that this is an exported class, as
|
|
|
|
|
indeed all of the __*_type_info classes are. */
|
|
|
|
|
SET_CLASSTYPE_INTERFACE_KNOWN (real_type);
|
|
|
|
|
CLASSTYPE_INTERFACE_ONLY (real_type) = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vtable_ptr = get_vtable_decl (real_type, /*complete=*/1);
|
Require lvalues as specified by the standard.
* typeck.c (lvalue_or_else): Use real_lvalue_p.
(cp_build_addr_expr_1): Split out of cp_build_unary_op.
(cp_build_addr_expr, cp_build_addr_expr_strict): Interfaces.
(decay_conversion, get_member_function_from_ptrfunc): Adjust.
(build_x_unary_op, build_reinterpret_cast_1): Adjust.
(build_const_cast_1): Adjust.
* cp-tree.h: Declare new fns.
* call.c (build_this, convert_like_real, build_over_call): Adjust.
(initialize_reference): Adjust.
* class.c (build_base_path, convert_to_base_statically): Adjust.
(build_vfn_ref, resolve_address_of_overloaded_function): Adjust.
* cvt.c (build_up_reference, convert_to_reference): Adjust.
* decl.c (register_dtor_fn): Adjust.
* decl2.c (build_offset_ref_call_from_tree): Adjust.
* except.c (initialize_handler_parm): Adjust.
* init.c (build_offset_ref, build_delete, build_vec_delete): Adjust.
* rtti.c (build_dynamic_cast_1, tinfo_base_init): Adjust.
* tree.c (stabilize_expr): Adjust.
From-SVN: r164666
2010-09-27 22:05:34 +02:00
|
|
|
|
vtable_ptr = cp_build_addr_expr (vtable_ptr, tf_warning_or_error);
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
|
|
|
|
/* We need to point into the middle of the vtable. */
|
2011-07-19 16:01:59 +02:00
|
|
|
|
vtable_ptr = fold_build_pointer_plus
|
|
|
|
|
(vtable_ptr,
|
2002-06-30 22:41:38 +02:00
|
|
|
|
size_binop (MULT_EXPR,
|
|
|
|
|
size_int (2 * TARGET_VTABLE_DATA_ENTRY_DISTANCE),
|
|
|
|
|
TYPE_SIZE_UNIT (vtable_entry_type)));
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ti->vtable = vtable_ptr;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
2010-05-24 19:17:57 +02:00
|
|
|
|
v = VEC_alloc (constructor_elt, gc, 2);
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, vtable_ptr);
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, decay_conversion (name_decl));
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2010-05-24 19:17:57 +02:00
|
|
|
|
init = build_constructor (init_list_type_node, v);
|
2004-05-13 08:41:07 +02:00
|
|
|
|
TREE_CONSTANT (init) = 1;
|
|
|
|
|
TREE_STATIC (init) = 1;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
return init;
|
|
|
|
|
}
|
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Return the CONSTRUCTOR expr for a type_info of TYPE. TI provides the
|
2000-01-28 14:30:13 +01:00
|
|
|
|
information about the particular type_info derivation, which adds no
|
|
|
|
|
additional fields to the type_info base. */
|
|
|
|
|
|
|
|
|
|
static tree
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
generic_initializer (tinfo_s *ti, tree target)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree init = tinfo_base_init (ti, target);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2010-05-24 19:17:57 +02:00
|
|
|
|
init = build_constructor_single (init_list_type_node, NULL_TREE, init);
|
2004-05-13 08:41:07 +02:00
|
|
|
|
TREE_CONSTANT (init) = 1;
|
|
|
|
|
TREE_STATIC (init) = 1;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
return init;
|
|
|
|
|
}
|
|
|
|
|
|
2000-03-15 11:40:27 +01:00
|
|
|
|
/* Return the CONSTRUCTOR expr for a type_info of pointer TYPE.
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
TI provides information about the particular type_info derivation,
|
2000-01-28 14:30:13 +01:00
|
|
|
|
which adds target type and qualifier flags members to the type_info base. */
|
|
|
|
|
|
|
|
|
|
static tree
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ptr_initializer (tinfo_s *ti, tree target)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree init = tinfo_base_init (ti, target);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
tree to = TREE_TYPE (target);
|
|
|
|
|
int flags = qualifier_flags (to);
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
bool incomplete = target_incomplete_p (to);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
VEC(constructor_elt,gc) *v = VEC_alloc (constructor_elt, gc, 3);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-04-20 16:25:33 +02:00
|
|
|
|
if (incomplete)
|
2004-07-29 19:59:31 +02:00
|
|
|
|
flags |= 8;
|
2010-05-24 19:17:57 +02:00
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init);
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, flags));
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
|
|
|
|
|
get_tinfo_ptr (TYPE_MAIN_VARIANT (to)));
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2010-05-24 19:17:57 +02:00
|
|
|
|
init = build_constructor (init_list_type_node, v);
|
2004-05-13 08:41:07 +02:00
|
|
|
|
TREE_CONSTANT (init) = 1;
|
|
|
|
|
TREE_STATIC (init) = 1;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
return init;
|
|
|
|
|
}
|
|
|
|
|
|
2000-03-15 11:40:27 +01:00
|
|
|
|
/* Return the CONSTRUCTOR expr for a type_info of pointer to member data TYPE.
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
TI provides information about the particular type_info derivation,
|
2000-04-20 16:25:33 +02:00
|
|
|
|
which adds class, target type and qualifier flags members to the type_info
|
|
|
|
|
base. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
|
|
|
|
static tree
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ptm_initializer (tinfo_s *ti, tree target)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree init = tinfo_base_init (ti, target);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
tree to = TYPE_PTRMEM_POINTED_TO_TYPE (target);
|
|
|
|
|
tree klass = TYPE_PTRMEM_CLASS_TYPE (target);
|
|
|
|
|
int flags = qualifier_flags (to);
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
bool incomplete = target_incomplete_p (to);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
VEC(constructor_elt,gc) *v = VEC_alloc (constructor_elt, gc, 4);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-04-20 16:25:33 +02:00
|
|
|
|
if (incomplete)
|
2004-07-29 19:59:31 +02:00
|
|
|
|
flags |= 0x8;
|
2000-04-20 16:25:33 +02:00
|
|
|
|
if (!COMPLETE_TYPE_P (klass))
|
2004-07-29 19:59:31 +02:00
|
|
|
|
flags |= 0x10;
|
2010-05-24 19:17:57 +02:00
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init);
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, flags));
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
|
|
|
|
|
get_tinfo_ptr (TYPE_MAIN_VARIANT (to)));
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, get_tinfo_ptr (klass));
|
|
|
|
|
|
|
|
|
|
init = build_constructor (init_list_type_node, v);
|
2004-05-13 08:41:07 +02:00
|
|
|
|
TREE_CONSTANT (init) = 1;
|
|
|
|
|
TREE_STATIC (init) = 1;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
return init;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Return the CONSTRUCTOR expr for a type_info of class TYPE.
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
TI provides information about the particular __class_type_info derivation,
|
2010-05-24 19:17:57 +02:00
|
|
|
|
which adds hint flags and N extra initializers to the type_info base. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
|
|
|
|
static tree
|
2010-05-24 19:17:57 +02:00
|
|
|
|
class_initializer (tinfo_s *ti, tree target, unsigned n, ...)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree init = tinfo_base_init (ti, target);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
va_list extra_inits;
|
|
|
|
|
unsigned i;
|
|
|
|
|
VEC(constructor_elt,gc) *v = VEC_alloc (constructor_elt, gc, n+1);
|
|
|
|
|
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init);
|
|
|
|
|
va_start (extra_inits, n);
|
|
|
|
|
for (i = 0; i < n; i++)
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, va_arg (extra_inits, tree));
|
|
|
|
|
va_end (extra_inits);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2010-05-24 19:17:57 +02:00
|
|
|
|
init = build_constructor (init_list_type_node, v);
|
2004-05-13 08:41:07 +02:00
|
|
|
|
TREE_CONSTANT (init) = 1;
|
|
|
|
|
TREE_STATIC (init) = 1;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
return init;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
/* Returns true if the typeinfo for type should be placed in
|
2001-02-04 09:35:11 +01:00
|
|
|
|
the runtime library. */
|
|
|
|
|
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
static bool
|
|
|
|
|
typeinfo_in_lib_p (tree type)
|
2001-02-04 09:35:11 +01:00
|
|
|
|
{
|
|
|
|
|
/* The typeinfo objects for `T*' and `const T*' are in the runtime
|
|
|
|
|
library for simple types T. */
|
|
|
|
|
if (TREE_CODE (type) == POINTER_TYPE
|
tree-dump.c: Rename from c-dump.c.
* tree-dump.c: Rename from c-dump.c. Include c-tree.h, not c-common.h.
(lang_type_quals): Declare.
(dequeue_and_dump): Use lang_hooks.tree_dump.type_quals function to
retrieve language-specific qualifiers for a type node, instead of
C_TYPE_QUALS. Likewise for lang_hooks.tree_dump.dump_tree instead of
lang_dump_tree.
* tree-dump.h: Rename from c-dump.h.
* c-common.h (C_TYPE_QUALS): Removed.
Move declarations for tree-dump.c interface to...
* tree.h: ... here. Remove lang_dump_tree.
* langhooks.h (struct lang_hooks_for_tree_dump): New.
(struct lang_hooks): Add tree_dump hooks.
* langhooks.c (lhd_tree_dump_dump_tree): New function.
(lhd_tree_dump_type_quals): New function.
* langhooks-def.h (lhd_tree_dump_dump_tree, lhd_tree_dump_type_quals):
Declare.
(LANG_HOOKS_INITIALIZER): Add tree_dump hooks.
* Makefile.in: Move tree-dump.o to language-independent back-end.
cp:
* cp-tree.h (CP_TYPE_QUALS): Removed.
* decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
* cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
* dump.c (cp_dump_tree): Use void* dump_info argument to match
lang-hooks prototype.
* call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
CP_TYPE_QUALS changed to cp_type_quals.
* Make-lang.in: References to c-dump.h changed to tree-dump.h.
(CXX_C_OBJS): Remove c-dump.o.
From-SVN: r47257
2001-11-22 03:33:02 +01:00
|
|
|
|
&& (cp_type_quals (TREE_TYPE (type)) == TYPE_QUAL_CONST
|
|
|
|
|
|| cp_type_quals (TREE_TYPE (type)) == TYPE_UNQUALIFIED))
|
2001-02-04 09:35:11 +01:00
|
|
|
|
type = TREE_TYPE (type);
|
|
|
|
|
|
|
|
|
|
switch (TREE_CODE (type))
|
|
|
|
|
{
|
|
|
|
|
case INTEGER_TYPE:
|
|
|
|
|
case BOOLEAN_TYPE:
|
|
|
|
|
case REAL_TYPE:
|
|
|
|
|
case VOID_TYPE:
|
2010-10-14 13:59:47 +02:00
|
|
|
|
case NULLPTR_TYPE:
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
return true;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2010-05-13 07:04:46 +02:00
|
|
|
|
case LANG_TYPE:
|
2010-10-14 13:59:47 +02:00
|
|
|
|
/* fall through. */
|
2010-05-13 07:04:46 +02:00
|
|
|
|
|
2001-02-04 09:35:11 +01:00
|
|
|
|
default:
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
return false;
|
2001-02-04 09:35:11 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Generate the initializer for the type info describing TYPE. TK_INDEX is
|
|
|
|
|
the index of the descriptor in the tinfo_desc vector. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
|
|
|
|
static tree
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
get_pseudo_ti_init (tree type, unsigned tk_index)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tinfo_s *ti = VEC_index (tinfo_s, tinfo_descs, tk_index);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
call.c (validate_conversion_obstack): Replace my_friendly_assert with gcc_assert or gcc_unreachable.
* call.c (validate_conversion_obstack): Replace
my_friendly_assert with gcc_assert or gcc_unreachable.
(direct_reference_binding, merge_conversion_sequences,
build_user_type_conversion_1, perform_overload_resolution,
build_op_delete_call, enforce_access, call_builtin_trap,
build_over_call, build_special_member_call, build_new_method_call,
initialize_reference): Likewise.
* class.c (build_base_path, build_primary_vtable, alter_access,
check_bases, update_vtable_entry_for_fn, layout_empty_base,
clone_function_decl, adjust_clone_args,
type_requires_array_cookie, include_empty_classes,
finish_struct_1, resolve_address_of_overloaded_function,
instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
accumulate_vtbl_inits, build_vtbl_initializer,
build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
* cvt.c (build_up_reference, convert_to_reference): Likewise.
* decl.c (poplevel, duplicate_decls, make_typename_type,
cxx_init_decl_processing, reshape_init, check_initializer,
make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
xref_basetypes, start_preparsed_function, save_function_data,
finish_function, finish_method, maybe_register_incomplete_var,
complete_vars): Likewise.
* decl2.c (grok_array_decl, check_member_template,
check_classfn, finish_static_data_member_decl, coerce_new_type,
coerce_delete_type, import_export_class, decl_needed_p,
determine_visibility, import_export_decl, build_cleanup,
start_static_initialization_or_destructi, do_static_destruction,
prune_vars_needing_no_initialization,
build_offset_ref_call_from_tree): Likewise.
* error.c (dump_decl, dump_expr): Likewise.
* init.c (finish_init_stmts, build_zero_init,
expand_virtual_init, expand_default_init, expand_aggr_init_1,
build_offset_ref, build_new_1, build_delete, build_vbase_delete):
Likewise.
* mangle.c (write_method_parms, write_template_args,
write_expression, write_template_arg): Likewise.
* method.c (make_thunk, finish_thunk, use_thunk): Likewise.
* name-lookup.c (pop_binding, begin_scope, leave_scope,
resume_scope, push_using_decl, validate_nonmember_using_decl,
is_ancestor, poplevel_class, set_inherited_value_binding_p,
push_class_level_binding, do_class_using_decl, push_namespace,
pop_namespace, add_using_namespace, ambiguous_decl,
lookup_namespace_name, lookup_type_current_level,
maybe_process_template_type_declaration): Likewise.
* parser.c (cp_lexer_peek_nth_token,
cp_parser_parse_and_diagnose_invalid_typ,
cp_parser_translation_unit, cp_parser_template_id,
cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
* pt.c (push_access_scope, finish_member_template_decl,
push_inline_template_parms_recursive, add_outermost_template_args,
get_innermost_template_args, begin_explicit_instantiation,
end_explicit_instantiation, retrieve_specialization,
is_specialization_of, is_specialization_of_friend,
register_specialization, check_explicit_specialization,
comp_template_parms, process_template_parm,
process_partial_specialization, convert_nontype_argument,
coerce_template_template_parms, coerce_template_parms,
mangle_class_name_for_template, lookup_template_function,
lookup_template_class, instantiate_class_template, tsubst_decl,
tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
instantiate_template, fn_type_unification, type_unification_real,
get_template_base, regenerate_decl_from_template,
template_for_substitution, instantiate_decl,
get_mostly_instantiated_function_type, dependent_scope_ref_p,
value_dependent_expression_p, resolve_typename_type): Likewise.
* repo.c (repo_emit_p): Likewise.
* rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
create_tinfo_types, emit_tinfo_decl): Likewise.
* search.c (lookup_base_r, lookup_base, lookup_field_1,
dfs_access_in_type, build_baselink, lookup_member,
adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
* semantics.c (perform_or_defer_access_check,
finish_non_static_data_member, finish_stmt_expr_expr,
finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
finish_template_template_parm, finish_member_declaration,
emit_associated_thunks): Likewise.
* tree.c (build_target_expr_with_type, force_target_expr,
copy_binfo, get_first_fn, cp_tree_equal): Likewise.
* typeck.c (type_after_usual_arithmetic_conversions, comptypes,
cxx_sizeof_or_alignof_type, perform_integral_promotions,
build_class_member_access_expr, finish_class_member_access_expr,
build_ptrmemfunc_access_expr, build_unary_op,
unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
* typeck2.c (complete_type_check_abstract,
abstract_virtuals_error, process_init_constructor,
add_exception_specifier): Likewise.
From-SVN: r86669
2004-08-27 19:59:33 +02:00
|
|
|
|
gcc_assert (at_eof);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
switch (tk_index)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
case TK_POINTER_MEMBER_TYPE:
|
|
|
|
|
return ptm_initializer (ti, type);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
case TK_POINTER_TYPE:
|
|
|
|
|
return ptr_initializer (ti, type);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
case TK_BUILTIN_TYPE:
|
|
|
|
|
case TK_ENUMERAL_TYPE:
|
|
|
|
|
case TK_FUNCTION_TYPE:
|
|
|
|
|
case TK_ARRAY_TYPE:
|
|
|
|
|
return generic_initializer (ti, type);
|
|
|
|
|
|
|
|
|
|
case TK_CLASS_TYPE:
|
2010-05-24 19:17:57 +02:00
|
|
|
|
return class_initializer (ti, type, 0);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
|
|
|
|
|
case TK_SI_CLASS_TYPE:
|
|
|
|
|
{
|
|
|
|
|
tree base_binfo = BINFO_BASE_BINFO (TYPE_BINFO (type), 0);
|
|
|
|
|
tree tinfo = get_tinfo_ptr (BINFO_TYPE (base_binfo));
|
2005-09-20 17:40:57 +02:00
|
|
|
|
|
|
|
|
|
/* get_tinfo_ptr might have reallocated the tinfo_descs vector. */
|
|
|
|
|
ti = VEC_index (tinfo_s, tinfo_descs, tk_index);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
return class_initializer (ti, type, 1, tinfo);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
}
|
2001-02-04 09:35:11 +01:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
default:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
{
|
|
|
|
|
int hint = ((CLASSTYPE_REPEATED_BASE_P (type) << 0)
|
|
|
|
|
| (CLASSTYPE_DIAMOND_SHAPED_P (type) << 1));
|
|
|
|
|
tree binfo = TYPE_BINFO (type);
|
|
|
|
|
int nbases = BINFO_N_BASE_BINFOS (binfo);
|
|
|
|
|
VEC(tree,gc) *base_accesses = BINFO_BASE_ACCESSES (binfo);
|
2006-11-14 00:28:25 +01:00
|
|
|
|
tree offset_type = integer_types[itk_long];
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree base_inits = NULL_TREE;
|
|
|
|
|
int ix;
|
2010-05-24 19:17:57 +02:00
|
|
|
|
VEC(constructor_elt,gc) *init_vec = NULL;
|
|
|
|
|
constructor_elt *e;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
gcc_assert (tk_index >= TK_FIXED);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2010-05-24 19:17:57 +02:00
|
|
|
|
VEC_safe_grow (constructor_elt, gc, init_vec, nbases);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Generate the base information initializer. */
|
|
|
|
|
for (ix = nbases; ix--;)
|
|
|
|
|
{
|
|
|
|
|
tree base_binfo = BINFO_BASE_BINFO (binfo, ix);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
tree base_init;
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
int flags = 0;
|
|
|
|
|
tree tinfo;
|
|
|
|
|
tree offset;
|
2010-05-24 19:17:57 +02:00
|
|
|
|
VEC(constructor_elt,gc) *v;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
if (VEC_index (tree, base_accesses, ix) == access_public_node)
|
|
|
|
|
flags |= 2;
|
|
|
|
|
tinfo = get_tinfo_ptr (BINFO_TYPE (base_binfo));
|
|
|
|
|
if (BINFO_VIRTUAL_P (base_binfo))
|
|
|
|
|
{
|
|
|
|
|
/* We store the vtable offset at which the virtual
|
2006-06-06 13:44:09 +02:00
|
|
|
|
base offset can be found. */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
offset = BINFO_VPTR_FIELD (base_binfo);
|
|
|
|
|
flags |= 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
offset = BINFO_OFFSET (base_binfo);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Combine offset and flags into one field. */
|
2006-11-14 00:28:25 +01:00
|
|
|
|
offset = fold_convert (offset_type, offset);
|
re PR c/40435 (Revision 148442 caused many regressions on trunk)
2009-07-17 Aldy Hernandez <aldyh@redhat.com>
Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 40435
* tree-complex.c, tree-loop-distribution.c,
tree.c, tree.h, builtins.c, fold-const.c, omp-low.c,
cgraphunit.c, tree-ssa-ccp.c, tree-ssa-dom.c,
gimple-low.c, expr.c, tree-ssa-ifcombine.c, c-decl.c,
stor-layout.c, tree-if-conv.c, c-typeck.c,
gimplify.c, calls.c, tree-sra.c, tree-mudflap.c,
tree-ssa-copy.c, tree-ssa-forwprop.c, c-convert.c, c-omp.c,
varasm.c, tree-inline.c, c-common.c,
c-common.h, gimple.c, tree-switch-conversion.c, gimple.h,
tree-cfg.c, c-parser.c, convert.c: Add location
argument to fold_{unary,binary,ternary}, fold_build[123],
build_call_expr, build_size_arg, build_fold_addr_expr,
build_call_array, non_lvalue, size_diffop,
fold_build1_initializer, fold_build2_initializer,
fold_build3_initializer, fold_build_call_array,
fold_build_call_array_initializer, fold_single_bit_test,
omit_one_operand, omit_two_operands, invert_truthvalue,
fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
combine_comparisons, fold_builtin_*, fold_call_expr,
build_range_check, maybe_fold_offset_to_address, round_up,
round_down.
objc/
* objc-act.c: Add location argument to all calls to
build_fold_addr_expr.
testsuite/
* gcc.dg/pr36902.c: Add column info.
* g++.dg/gcov/gcov-2.C: Change count for definition.
cp/
* typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
call.c, cvt.c, mangle.c: Add location argument to
fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
build_size_arg, build_fold_addr_expr, build_call_array,
non_lvalue, size_diffop, fold_build1_initializer,
fold_build2_initializer, fold_build3_initializer,
fold_build_call_array, fold_build_call_array_initializer,
fold_single_bit_test, omit_one_operand, omit_two_operands,
invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
fold_indirect_ref, combine_comparisons, fold_builtin_*,
fold_call_expr, build_range_check, maybe_fold_offset_to_address,
round_up, round_down.
fortran/
* trans-expr.c, trans-array.c, trans-openmp.c, trans-stmt.c,
trans.c, trans-io.c, trans-decl.c, trans-intrinsic.c: Add location
argument to fold_{unary,binary,ternary}, fold_build[123],
build_call_expr, build_size_arg, build_fold_addr_expr,
build_call_array, non_lvalue, size_diffop,
fold_build1_initializer, fold_build2_initializer,
fold_build3_initializer, fold_build_call_array,
fold_build_call_array_initializer, fold_single_bit_test,
omit_one_operand, omit_two_operands, invert_truthvalue,
fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
combine_comparisons, fold_builtin_*, fold_call_expr,
build_range_check, maybe_fold_offset_to_address, round_up,
round_down.
Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
From-SVN: r149722
2009-07-17 00:29:52 +02:00
|
|
|
|
offset = fold_build2_loc (input_location,
|
|
|
|
|
LSHIFT_EXPR, offset_type, offset,
|
2006-11-14 00:28:25 +01:00
|
|
|
|
build_int_cst (offset_type, 8));
|
re PR c/40435 (Revision 148442 caused many regressions on trunk)
2009-07-17 Aldy Hernandez <aldyh@redhat.com>
Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 40435
* tree-complex.c, tree-loop-distribution.c,
tree.c, tree.h, builtins.c, fold-const.c, omp-low.c,
cgraphunit.c, tree-ssa-ccp.c, tree-ssa-dom.c,
gimple-low.c, expr.c, tree-ssa-ifcombine.c, c-decl.c,
stor-layout.c, tree-if-conv.c, c-typeck.c,
gimplify.c, calls.c, tree-sra.c, tree-mudflap.c,
tree-ssa-copy.c, tree-ssa-forwprop.c, c-convert.c, c-omp.c,
varasm.c, tree-inline.c, c-common.c,
c-common.h, gimple.c, tree-switch-conversion.c, gimple.h,
tree-cfg.c, c-parser.c, convert.c: Add location
argument to fold_{unary,binary,ternary}, fold_build[123],
build_call_expr, build_size_arg, build_fold_addr_expr,
build_call_array, non_lvalue, size_diffop,
fold_build1_initializer, fold_build2_initializer,
fold_build3_initializer, fold_build_call_array,
fold_build_call_array_initializer, fold_single_bit_test,
omit_one_operand, omit_two_operands, invert_truthvalue,
fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
combine_comparisons, fold_builtin_*, fold_call_expr,
build_range_check, maybe_fold_offset_to_address, round_up,
round_down.
objc/
* objc-act.c: Add location argument to all calls to
build_fold_addr_expr.
testsuite/
* gcc.dg/pr36902.c: Add column info.
* g++.dg/gcov/gcov-2.C: Change count for definition.
cp/
* typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
call.c, cvt.c, mangle.c: Add location argument to
fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
build_size_arg, build_fold_addr_expr, build_call_array,
non_lvalue, size_diffop, fold_build1_initializer,
fold_build2_initializer, fold_build3_initializer,
fold_build_call_array, fold_build_call_array_initializer,
fold_single_bit_test, omit_one_operand, omit_two_operands,
invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
fold_indirect_ref, combine_comparisons, fold_builtin_*,
fold_call_expr, build_range_check, maybe_fold_offset_to_address,
round_up, round_down.
fortran/
* trans-expr.c, trans-array.c, trans-openmp.c, trans-stmt.c,
trans.c, trans-io.c, trans-decl.c, trans-intrinsic.c: Add location
argument to fold_{unary,binary,ternary}, fold_build[123],
build_call_expr, build_size_arg, build_fold_addr_expr,
build_call_array, non_lvalue, size_diffop,
fold_build1_initializer, fold_build2_initializer,
fold_build3_initializer, fold_build_call_array,
fold_build_call_array_initializer, fold_single_bit_test,
omit_one_operand, omit_two_operands, invert_truthvalue,
fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
combine_comparisons, fold_builtin_*, fold_call_expr,
build_range_check, maybe_fold_offset_to_address, round_up,
round_down.
Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
From-SVN: r149722
2009-07-17 00:29:52 +02:00
|
|
|
|
offset = fold_build2_loc (input_location,
|
|
|
|
|
BIT_IOR_EXPR, offset_type, offset,
|
2006-11-14 00:28:25 +01:00
|
|
|
|
build_int_cst (offset_type, flags));
|
2010-05-24 19:17:57 +02:00
|
|
|
|
v = VEC_alloc (constructor_elt, gc, 2);
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, tinfo);
|
|
|
|
|
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, offset);
|
|
|
|
|
base_init = build_constructor (init_list_type_node, v);
|
|
|
|
|
e = VEC_index (constructor_elt, init_vec, ix);
|
|
|
|
|
e->index = NULL_TREE;
|
|
|
|
|
e->value = base_init;
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
}
|
2010-05-24 19:17:57 +02:00
|
|
|
|
base_inits = build_constructor (init_list_type_node, init_vec);
|
2005-09-20 17:40:57 +02:00
|
|
|
|
|
|
|
|
|
/* get_tinfo_ptr might have reallocated the tinfo_descs vector. */
|
|
|
|
|
ti = VEC_index (tinfo_s, tinfo_descs, tk_index);
|
2010-05-24 19:17:57 +02:00
|
|
|
|
return class_initializer (ti, type, 3,
|
|
|
|
|
build_int_cst (NULL_TREE, hint),
|
|
|
|
|
build_int_cst (NULL_TREE, nbases),
|
|
|
|
|
base_inits);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
}
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Generate the RECORD_TYPE containing the data layout of a type_info
|
|
|
|
|
derivative as used by the runtime. This layout must be consistent with
|
|
|
|
|
that defined in the runtime support. Also generate the VAR_DECL for the
|
|
|
|
|
type's vtable. We explicitly manage the vtable member, and name it for
|
|
|
|
|
real type as used in the runtime. The RECORD type has a different name,
|
|
|
|
|
to avoid collisions. Return a TREE_LIST who's TINFO_PSEUDO_TYPE
|
2002-06-30 22:41:38 +02:00
|
|
|
|
is the generated type and TINFO_VTABLE_NAME is the name of the
|
|
|
|
|
vtable. We have to delay generating the VAR_DECL of the vtable
|
|
|
|
|
until the end of the translation, when we'll have seen the library
|
|
|
|
|
definition, if there was one.
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
REAL_NAME is the runtime's name of the type. Trailing arguments are
|
|
|
|
|
additional FIELD_DECL's for the structure. The final argument must be
|
|
|
|
|
NULL. */
|
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
static void
|
2005-06-16 10:21:00 +02:00
|
|
|
|
create_pseudo_type_info (int tk, const char *real_name, ...)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tinfo_s *ti;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
tree pseudo_type;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
char *pseudo_name;
|
2002-12-16 19:23:00 +01:00
|
|
|
|
tree fields;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
tree field_decl;
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_list ap;
|
2001-08-27 08:48:43 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
va_start (ap, real_name);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
2002-09-14 14:07:44 +02:00
|
|
|
|
/* Generate the pseudo type name. */
|
2006-01-29 10:10:48 +01:00
|
|
|
|
pseudo_name = (char *) alloca (strlen (real_name) + 30);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
strcpy (pseudo_name, real_name);
|
|
|
|
|
strcat (pseudo_name, "_pseudo");
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
if (tk >= TK_FIXED)
|
|
|
|
|
sprintf (pseudo_name + strlen (pseudo_name), "%d", tk - TK_FIXED);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2002-09-14 14:07:44 +02:00
|
|
|
|
/* First field is the pseudo type_info base class. */
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
fields = build_decl (input_location,
|
|
|
|
|
FIELD_DECL, NULL_TREE,
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
VEC_index (tinfo_s, tinfo_descs,
|
|
|
|
|
TK_TYPE_INFO_TYPE)->type);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
/* Now add the derived fields. */
|
2002-12-16 19:23:00 +01:00
|
|
|
|
while ((field_decl = va_arg (ap, tree)))
|
|
|
|
|
{
|
2010-07-15 16:31:28 +02:00
|
|
|
|
DECL_CHAIN (field_decl) = fields;
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields = field_decl;
|
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2002-09-14 14:07:44 +02:00
|
|
|
|
/* Create the pseudo type. */
|
cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2008-03-21 Paolo Carlini <pcarlini@suse.de>
* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
(SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
(IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
(PROMOTES_TO_AGGR_TYPE): Remove.
(CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
* typeck.c (unary_complex_lvalue, build_modify_expr,
convert_for_initialization): Adjust.
* init.c (is_aggr_type): Remove.
(is_class_type): Add.
(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
build_delete): Adjust.
* lex.c (make_aggr_type): Remove.
(make_class_type): Add.
(cxx_make_type): Adjust.
* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
Adjust.
* decl.c (build_typename_type, make_typename_type,
make_unbound_class_template, cxx_init_decl_processing,
check_tag_decl, groktypename, start_decl_1, layout_var_decl,
check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
grok_op_properties, xref_tag, check_function_type): Adjust.
* call.c (check_dtor_name, standard_conversion, implicit_conversion,
add_builtin_candidate, add_builtin_candidates,
build_user_type_conversion_1, convert_like_real, build_cxx_call,
is_subseq, compare_ics): Adjust.
* method.c (use_thunk): Adjust.
* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
create_tinfo_types): Adjust.
* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
build_up_reference, convert_to_reference, convert_from_reference,
ocp_convert, build_expr_type_conversion): Adjust.
* tree.c (bind_template_template_parm, error_type): Adjust.
* dump.c (cp_dump_tree): Adjust.
* search.c (lookup_member): Adjust.
* friend.c (make_friend_class, do_friend): Adjust.
* typeck2.c (store_init_value, process_init_constructor_array,
process_init_constructor_record, build_x_arrow, build_m_component_ref,
build_functional_cast): Adjust.
* pt.c (finish_member_template_decl, process_template_parm,
lookup_template_class, tsubst_function_type, tsubst,
tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
Adjust.
* semantics.c (begin_class_definition, finish_base_specifier,
finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
Adjust.
* name-lookup.c (constructor_name_p, push_overloaded_decl,
do_class_using_decl, lookup_qualified_name,
maybe_process_template_type_declaration): Adjust.
* decl2.c (grok_array_decl, check_member_template,
constrain_class_visibility): Adjust.
* parser.c (cp_parser_class_name): Adjust.
From-SVN: r133434
2008-03-21 19:56:51 +01:00
|
|
|
|
pseudo_type = make_class_type (RECORD_TYPE);
|
2002-12-16 19:23:00 +01:00
|
|
|
|
finish_builtin_struct (pseudo_type, pseudo_name, fields, NULL_TREE);
|
2002-10-11 18:50:44 +02:00
|
|
|
|
CLASSTYPE_AS_BASE (pseudo_type) = pseudo_type;
|
2001-08-27 08:48:43 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ti = VEC_index (tinfo_s, tinfo_descs, tk);
|
|
|
|
|
ti->type = cp_build_qualified_type (pseudo_type, TYPE_QUAL_CONST);
|
|
|
|
|
ti->name = get_identifier (real_name);
|
|
|
|
|
ti->vtable = NULL_TREE;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2006-06-30 03:15:56 +02:00
|
|
|
|
/* Pretend this is public so determine_visibility doesn't give vtables
|
|
|
|
|
internal linkage. */
|
|
|
|
|
TREE_PUBLIC (TYPE_MAIN_DECL (ti->type)) = 1;
|
|
|
|
|
|
builtins.c (validate_arglist): Eliminate libiberty VA_ macros, always use stdarg.
gcc:
* builtins.c (validate_arglist): Eliminate libiberty VA_ macros,
always use stdarg.
* c-errors.c (pedwarn_c99): Likewise.
* c-format.c (status_warning): Likewise.
* c-semantics.c (build_stmt): Likewise.
* calls.c (emit_library_call, emit_library_call_value): Likewise.
* collect2.c (notice, fatal_perror, fatal, error): Likewise.
* cpperror.c (cpp_error, cpp_error_with_line): Likewise.
* diagnostic.c (build_message_string, output_printf,
output_verbatim, verbatim, inform, warning, pedwarn, error, sorry,
fatal_error, internal_error, warning_with_decl, pedwarn_with_decl,
error_with_decl, fnotice): Likewise.
* dwarf2asm.c (dw2_asm_output_data, dw2_asm_output_delta,
dw2_asm_output_offset, dw2_asm_output_pcrel, dw2_asm_output_addr,
dw2_asm_output_addr_rtx, dw2_asm_output_nstring,
dw2_asm_output_data_uleb128, dw2_asm_output_data_sleb128,
dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
dw2_asm_output_encoded_addr_rtx): Likewise.
* emit-rtl.c (gen_rtx, gen_rtvec): Likewise.
* errors.c (warning, error, fatal, internal_error): Likewise.
* final.c (output_operand_lossage, asm_fprintf): Likewise.
* fix-header.c (fatal): Likewise.
* gcc.c (fatal, error, notice): Likewise.
* gcov.c (fnotice): Likewise.
* genattrtab.c (attr_rtx, attr_printf): Likewise.
* gengtype.c (error_at_line, xasprintf, oprintf): Likewise.
* gensupport.c (message_with_line): Likewise.
* mips-tfile.c (fatal, error): Likewise.
* protoize.c (notice): Likewise.
* ra-debug.c (ra_debug_msg): Likewise.
* read-rtl.c (fatal_with_file_and_line): Likewise.
* rtl-error.c (error_for_asm, warning_for_asm): Likewise.
* tree.c (build, build_nt, build_function_type_list): Likewise.
cp:
* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
libiberty VA_ macros, always use stdarg.
* rtti.c (create_pseudo_type_info): Likewise.
* tree.c (build_min_nt, build_min): Likewise.
From-SVN: r66919
2003-05-18 00:21:35 +02:00
|
|
|
|
va_end (ap);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Return the index of a pseudo type info type node used to describe
|
|
|
|
|
TYPE. TYPE must be a complete type (or cv void), except at the end
|
|
|
|
|
of the translation unit. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
static unsigned
|
|
|
|
|
get_pseudo_ti_index (tree type)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
unsigned ix;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
switch (TREE_CODE (type))
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2003-07-23 01:30:22 +02:00
|
|
|
|
case OFFSET_TYPE:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_POINTER_MEMBER_TYPE;
|
|
|
|
|
break;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
case POINTER_TYPE:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_POINTER_TYPE;
|
|
|
|
|
break;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
case ENUMERAL_TYPE:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_ENUMERAL_TYPE;
|
|
|
|
|
break;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
case FUNCTION_TYPE:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_FUNCTION_TYPE;
|
|
|
|
|
break;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
case ARRAY_TYPE:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_ARRAY_TYPE;
|
|
|
|
|
break;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
case UNION_TYPE:
|
|
|
|
|
case RECORD_TYPE:
|
|
|
|
|
if (TYPE_PTRMEMFUNC_P (type))
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
{
|
|
|
|
|
ix = TK_POINTER_MEMBER_TYPE;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
else if (!COMPLETE_TYPE_P (type))
|
|
|
|
|
{
|
2002-09-05 01:24:00 +02:00
|
|
|
|
if (!at_eof)
|
|
|
|
|
cxx_incomplete_type_error (NULL_TREE, type);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_CLASS_TYPE;
|
|
|
|
|
break;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
}
|
tree.h (TYPE_BINFO_OFFSET, [...]): Remove.
* tree.h (TYPE_BINFO_OFFSET, TYPE_BINFO_VTABLE,
TYPE_BINFO_VIRTUALS, TYPE_BINFO_BASETYPES,
TYPE_BINFO_BASETYPE): Remove.
(BINFO_BASETYPES, BINFO_N_BASETYPES, BINFO_BASETYPE): Rename
to ...
(BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): ...
here.
(BINFO_BASEACCESSES, BINFO_BASEACCESS): Rename to ...
(BINFO_BASE_ACCESSES, BINFO_BASE_ACCESS): ... here.
(BINFO_INHERITANCE_CHAIN): Redocument as it is actually used.
(struct tree_binfo): Rename base_types to base_binfos.
* alias.c (record_component_aliases): Adjust BINFO macros.
* dbxout.c (dbxout_type): Likewise.
* dwarf2out.c (gen_member_die): Likewise.
* sdbout.c (sdbout_one_type): Likewise.
* tree-dump.c (deque_and_dump): Likewise.
* config/i386/i386.c (classify_argument,
contains_128bit_aligned_vector_p): Likewise.
* cp/cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
* cp/class.c (build_primary_vtable, check_bases,
determine_primary_base, finish_struct_bits,
maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
get_basefndecls, warn_hidden, walk_subobject_offsets,
build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
finish_struct_1, get_vfield_name, contains_empty_class_p,
dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
BINFO macros.
* cp/decl.c (xref_basetypes): Likewise.
* cp/dump.c (cp_dump_tree): Likewise.
* cp/error.c (dump_expr): Likewise.
* cp/init.c (sort_mem_initializers, expand_member_init,
push_base_cleanups): Likewise.
* cp/method.c (do_build_copy_constructor, do_build_assign_reg,
synthesize_exception_spec): Likewise.
* cp/name-lookup.c (arg_assoc_class):
* cp/pt.c (instantiate_class_template, tsubst,
get_template_base_recursive):
* cp/ptree.c (cxx_print_type):
* cp/rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
* cp/search.c (lookup_base_r, dynamic_cast_base_recurse,
dfs_access_in_type, access_in_type, lookup_field_queue_p,
bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
binfo_for_vtable, copied_binfo, original_binfo): Likewise
* cp/tree.c (copy_base_binfos, make_binfo): Likewise.
* cp/typeck.c (commmon_base_type): Likewise
* cp/typeck2.c (process_init_constructor): Likewise
* java/java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
(TYPE_NVIRTUALS, TYPE_VTABLE): Likewise.
* java/class.c (set_super_info, class_depth, interface_of_p,
maybe_add_interface, add_interface, make_class_data,
layout_class, add_miranda_methods): Adjust BINFO macros.
* java/expr.c (can_widen_reference_to, lookup_field): Likewise.
* java/jcf-write.c (generate_classfile): Likewise.
* java/parse.y (patch_anonymous_class,
check_inner_circular_reference, check_circular_reference,
java_complete_class, check_abstract_method_definitions,
java_check_abstract_method_definitions,
check_interface_throws_clauses, java_check_abstract_methods,
lookup_java_interface_method2,
find_applicable_accessible_methods_list): Likewise.
* java/typeck.c (find_method_in_interface): Likewise.
* java/verify.c (merge_types): Likewise.
From-SVN: r84198
2004-07-07 12:21:04 +02:00
|
|
|
|
else if (!BINFO_N_BASE_BINFOS (TYPE_BINFO (type)))
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
{
|
|
|
|
|
ix = TK_CLASS_TYPE;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
else
|
|
|
|
|
{
|
Change base class access representation.
* tree.h (TREE_VIA_PUBLIC, TREE_VIA_PROTECTED,
TREE_VIA_PRIVATE): Remove.
(BINFO_BASEACCESSES): New binfo elt.
(BINFO_BASEACCESS): New accessor.
(BINFO_ELTS): Increase.
(TI_ACCESS_PUBLIC, TI_ACCESS_PROTECTED, TI_ACCESS_PRIVATE): New.
(access_public_node, access_protected_node,
access_private_node): New global nodes.
* tree.c (build_common_tree_nodes_2): Initialize access nodes.
* dbxout.c (dbxout_type): Adjust.
* dwarf2out.c (gen_inheritance_die): Add access parameter.
(gen_member_die): Adjust.
* dwarfout.c (output_inheritance_die): ARG is array of two trees.
(output_type): Adjust.
* tree-dump.c (dequeue_and_dump): Adjust binfo dumping.
Change base class access representation. Share virtual base
binfos.
* cp/call.c (build_special_member_call): Remove binfo_for_vbase
call.
* cp/class.c (build_base_path): Likewise.
(build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
(build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
(make_new_vtable): Adjust.
(force_canonical_binfo_r): Delete.
(force_canonical_binfo): Delete.
(mark_primary_virtual_base): Delete.
(dfs_unshared_virtual_bases): Delete.
(mark_primary_bases): Adjust.
(maybe_warn_about_overly_private_class): Adjust.
(dfs_base_derived_from): Delete.
(base_derived_from): Follow the inheritance chain.
(struct find_final_overrider_data): Add vpath member.
(dfs_find_final_overrider): Adjust.
(dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
(find_final_overrider): Adjust.
(update_vtable_entry_for_fn): Adjust.
(modify_all_vtables): Adjust.
(walk_subobject_offsets): Adjust.
(layout_nonempty_base_or_field): Adjust.
(layout_empty_base): Remove last parameter. Adjust.
(build_base_field): Adjust.
(build_base_fields): Adjust.
(propagate_binfo_offsets): Remove last parameter. Adjust.
(dfs_set_offset_for_unshared_vbases): Delete.
(layout_virtual_bases): Adjust.
(finish_struct_1): Adjust.
(init_class_processing): Don't init access nodes.
(dfs_get_primary_binfo): Delete.
(get_primary_binfo): Adjust.
(dump_class_hierarchy_r): Remove most derived arg, add IGO
parameter. Adjust.
(dump_class_hierarchy): Adjust.
(finish_vtbls): Adjust.
(get_original_base): Delete.
(build_vtt_inits): Adjust.
(dfs_build_secondary_vptr_vtt_inits): Adjust.
(dfs_ctor_vtable_bases_queue_p): Adjust.
(build_ctor_vtbl_group): Adjust.
(dfs_accumulate_vtbl_inits): Adjust.
(build_vtbl_initializer): Adjust.
(build_vbase_offset_vtbl_entries): Adjust.
(add_vcall_offset_vtbl_entries_1): Adjust.
* cp/cp-tree.h (CPTI_ACCESS_*): Remove.
(access_*_node): Remove.
(CANONICAL_BINFO): Delete.
(BINFO_UNSHARED_MARKED): Remove.
(BINFO_MARKED): Set LANG_FLAG_0 directly.
(SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
(BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
(SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
Delete.
(BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
(SET_BINFO_NEW_VTABLE_MARKED): Adjust.
(SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
Delete.
(BINFO_DEPENDENT_BASE_P): New.
(dfs_walk, dfs_walk_real): Queue function takes derived binfo and
index.
(markedp, unmarkedp): Adjust.
(dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
find_vbase_instance, binfo_for_vbase): Delete.
(copied_binfo, original_binfo): Declare.
(finish_base_specifier): Add virtual_p arg.
(unshare_base_binfos): Delete.
(copy_base_binfos): Declare.
(reverse_path): Delete.
* cp/decl.c (xref_basetypes): Access and virtuality passed
differently. Don't copy direct base binfos here. Call
copy_base_binfos.
* cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
(initialize_vtbl_ptrs): Adjust.
(expand_member_init): Adjust.
* cp/parser.c (cp_parser_base_specifier): Adjust.
* cp/pt.c (instantiate_class_template): Adjust.
(get_template_base_recursive): Adjust.
* cp/rtti.c (get_pseudo_ti_init): Adjust.
(get_pseudo_ti_desc): Adjust.
* cp/tree.c (unshare_base_binfos): Rename to ...
(copy_base_binfos): ... here, reimplement.
(make_binfo): Set BINFO_DEPENDENT_BASE_P.
(reverse_path): Remove.
* cp/typeck.c (get_delta_difference): Adjust error messages.
* cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
* cp/search.c (lookup_base_r): Adjust.
(dynamic_cast_base_recurse): Adjust.
(canonical_binfo): Remove.
(dfs_canonical_queue): Remove.
(dfs_assert_unmarked_p): Remove.
(assert_canonical_unmarked): Remove.
(shared_marked_p, shared_unmarked_p): Remove.
(BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
(dfs_access_in_type): Adjust.
(access_in_type): Adjust.
(dfs_accessible_queue_p): Adjust.
(dfs_accessible_p): Adjust.
(is_subobject_of_p_1, is_subobject_of_p): Remove.
(struct lookup_field_info): Remove from_dep_base_p field.
(lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
(lookup_field_r): Remove dependent base code.
(lookup_member): Likewise.
(dfs_walk, dfs_walk_real): Add access arg to queue fn.
(dfs_unmarked_real_bases_queue_p): Remove.
(dfs_marked_real_bases_queue_p): Remove.
(dfs_skip_vbases): Remove.
(dfs_get_pure_virtuals): Adjust.
(markedp, unmarkedp): Adjust.
(marked_vtable_pathp, unmarked_vtable_pathp): Remove.
(marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
(dfs_unmark): Adjust.
(dfs_get_vbase_types):Remove.
(dfs_build_inheritance_graph_order): Remove.
(get_vbase_types): Remove
(dfs_find_vbase_instance): Remove.
(find_vbase_instance): Remove.
(dfs_debug_unmarkedp): Adjust.
(dependent_base_p): Remove.
(dfs_push_type_decls): Adjust.
(dfs_push_decls): Adjust.
(dfs_no_overlap_yet): Adjust.
(copied_binfo): New function.
(original_binfo): New function.
(binfo_for_vbase): Remove.
Change base class access representation.
* java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
(add_interface_do): Likewise.
From-SVN: r63172
2003-02-20 18:51:46 +01:00
|
|
|
|
tree binfo = TYPE_BINFO (type);
|
vec.h: Update API to separate allocation mechanism from type.
* vec.h: Update API to separate allocation mechanism from type.
(VEC_safe_grow): New.
* vec.c (calculate_allocation): New.
(vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
(vec_gc_free, vec_heap_free): Remove.
* gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
(VEC): Likewise.
(mangle_macro_name): New.
(struct macro_def): New.
(struct macro): Add multiple argument values.
(macro_expans_end): New.
(push_macro_expansion): Chain on new macro. Process multiple
args, create follow on expansion. Return follow on argument.
(macro_input): Deal with multiple arguments.
* tree.h: Define VEC(tree,heap) and VEC(tree,gc).
(struct tree_binfo): Adjust.
* basic-block.h: Define VEC(edge,gc).
(struct edge_def): Adjust.
(struct basic_block_def, struct edge_iterator): Likewise.
(ei_container, ei_start_1, ei_last_1): Likewise.
* cfg.c (connect_src, connect_dest): Likewise.
* cfgrtl.c (force_nonfallthru_and_redirect)
* dbxout.c (dbxout_type)
* dwarf2out.c (gen_member_die)
* lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
(gcc_tree_to_linear_expression): Adjust.
(gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
lbv_to_gcc_expression, lle_to_gcc_expression,
lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
perfect_nestify): Likewise.
* lambda.h (gcc_loopnest_to_lambda_loopnest,
lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
* profile.c (instrument_values): Adjust.
* tree-cfg.c (modified_noreturn_calls): Adjust.
(remove_fallthru_edge): Likewise.
* tree-dump.c (dequeue_and_dump): Adjust.
* tree-flow-inline.h (mark_stmt_modified): Adjust.
* tree-flow.h (modified_noreturn_calls): Adjust.
(tree_on_heap): Remove. (yay!)
(register_new_def): Adjust.
* tree-into-ssa.c: Define VEC(int,heap).
(block_defs_stack): Adjust.
(find_idf, insert_phi_nodes, register_new_def,
rewrite_initialize_block, rewrite_finalize_block,
register_new_update_single, rewrite_update_init_block,
rewrite_update_fini_block, rewrite_blocks,
ssa_rewrite_finalize_block, ssa_register_new_def,
ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
* tree-loop-linear.c (linear_transform_loops): Adjust.
* tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
(push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
* tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
vrp_variables_stack): Adjust declarations.
(tree_ssa_dominator_optimize): Adjust.
(dom_opt_initialize_block, remove_local_expressions_from_table,
restore_nonzero_vars_to_original_value,
restore_vars_to_original_value,
restore_currdefs_to_original_value, dom_opt_finalize_block,
record_var_is_nonzero, record_cond, record_const_or_copy_1,
optimize_stmt, update_rhs_and_lookup_avail_expr,
lookup_avail_expr, record_range): Likewise.
* tree-ssa-pre.c: Define VEC(basic_block,heap).
(compute_antic_aux): Adjust.
(inserted_exprs, create_expression_by_pieces,
insert_into_preds_of_block, eliminate, mark_operand_necessary,
remove_dead_inserted_code, fini_pre): Likewise.
* tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
(varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
ssa_prop_init): Likewise.
* tree-ssa.c: Define VEC(bitmap,heap).
(verify_name_tags): Adjust.
* value-prof.c (rtl_divmod_values_to_profile): Adjust.
(insn_prefetch_values_to_profile, rtl_find_values_to_profile,
tree_divmod_values_to_profile, tree_find_values_to_profile,
value_profile_transformations): Likewise.
* value-prof.h: Define VEC(histogram_value,heap).
* varasm.c: Remove alias_pair pointer typedef, define
VEC(alias_pair,gc).
(finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
* config/pa/pa.c (typedef extern_symbol): Typedef the structure,
not a pointer to it. Create an object vector.
(extern_symbols): Turn into an object vector.
(pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
* cp/cp-tree.h: Adjust for new VEC API.
Define VEC(tree_pair_s,gc).
(struct save_scope): Adjust.
(struct lang_type_class): Adjust.
(unemitted_tinfo_decls): Adjust.
* cp/class.c (add_method, resort_type_method_vec,
finish_struct_methods, struct find_final_overrider_data,
dfs_find_final_overrider_pre, find_final_overrider,
get_vcall_index, warn_hidden, walk_subobject_offsets,
check_methods, fixup_inline_methods, end_of_class,
warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
add_vcall_offset): Adjust.
* cp/decl.c (xref_basetypes, finish_method): Adjust.
* cp/decl2.c (check_classfn): Adjust.
* cp/init.c (sort_mem_initializers, push_base_cleanups): Adjust.
* cp/method.c (do_build_copy_constructor): Adjust.
* cp/name-lookup.c (new_class_binding, store_binding,
store_bindings, store_class_bindings): Adjust.
* cp/name-lookup.h: Define VEC(cxx_saved_binding,gc),
VEC(cp_class_binding,gc).
(struct cp_binding_level): Adjust.
* cp/parser.c: Define VEC(cp_token_position,heap).
(struct cp_lexer): Adjust.
(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
cp_lexer_save_tokens): Adjust.
* cp/pt.c (retrieve_specialization,
check_explicit_specialization): Adjust.
* cp/rtti.c (unemitted_tinfo_decls): Adjust.
(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
get_pseudo_ti_desc): Adjust.
* cp/search.c (dfs_access_in_type, lookup_conversion_operator,
lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
* cp/semantics.c: Define VEC(deferred_access,gc).
(push_deferring_access_checks): Adjust.
* cp/typeck2.c (abstract_virtuals_error): Adjust.
From-SVN: r98498
2005-04-21 11:18:28 +02:00
|
|
|
|
VEC(tree,gc) *base_accesses = BINFO_BASE_ACCESSES (binfo);
|
tree.h: Include vec.h
.: * tree.h: Include vec.h
(DEF_VEC_P(tree)): New type.
(BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): Adjust.
(BINFO_BASE_APPEND, BINFO_BASE_ITERATE): New.
(BINFO_LANG_SLOT): Remove.
(BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF): New.
(struct tree_binfo): Turn base_binfos into a trailing
VEC(tree). Add vtt_subvtt, vtt_vptr, primary fields.
(binfo_lang_slots): Remove.
* tree.c (binfo_lang_slots): Remove.
(make_tree_binfo_stat): Take a base binfo count, not a
lang slot count. Adjust.
* Makefile.in (TREE_H): Add vec.h
* alias.c (record_component_aliases): Adjust BINFO access.
* dbxout.c (dbxout_type): Likewise.
* dwarf2out.c (gen_member_die): Likewise.
* sdbout.c (sdbout_one_type): Likewise.
* tree-dump.c (deque_and_dump): Likewise.
* config/i386/i386.c (classify_argument,
contains_128bit_aligned_vector_p): Likewise.
* config/sh/symbian.c (symbian_export_vtable_and_rtti_p): Likewise.
* doc/c-tree.texi (Classes): Update BINFO documentation.
cp:
* cp-tree.h (DEF_VEC_P(tree)): Remove here.
(BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
Moved to common.
(BINFO_LANG_SLOTS): Remove.
* tree.c (copy_binfo): Adjust BINFO creation and accessors.
* decl.c (xref_basetypes): Adjust BINFO creation and accessors.
* class.c (check_bases): Adjust BINFO accessors.
(determine_primary_base, finish_struct_bits,
maybe_warn_about_overly_private_class, warn_hidden,
walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
warn_about_ambiguous_bases, get_vfield_name,
dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
add_vcall_offset_vtbl_entries_r): Likewise.
* dump.c (cp_dump_tree): Likewise.
* init.c (sort_mem_initializers, expand_member_init, build_delete,
push_base_cleanups): Likewise.
* method.c (do_build_copy_constructor, do_build_assign_ref,
synthesize_exception_spec): Likewise.
name-lookup.c (arg_assoc_class): Likewise.
* pt.c (instantiate_class_template,
get_template_base_recursive): Likewise.
* rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
* typeck2.c (process_init_constructor): Likewise.
* search.c (lookup_base_r, dynamic_cast_base_recurse,
dfs_access_in_type, dfs_walk_real, look_for_overrides,
types_overlap_p, copied_binfo, original_binfo): Likewise.
(binfo_for_vtable): Remove
java:
* class.c (add_interface_do): Remove.
(set_super_info, interface_of_p, maybe_add_interface,
add_interface, make_class_data, layout_class,
add_miranda_methods): Adjust BINFO accessors and addition.
* expr.c (can_widen_reference_to, lookup_field): Adjust BINFO
accessors.
* jcf-write.c (generate_classfile): Likewise.
* parse.y (patch_anonymous_class, check_inner_circular_reference,
check_circular_reference, java_complete_class,
check_abstract_method_definitions,
java_check_abstract_method_definitions,
check_interface_throws_clauses, java_check_abstract_methods,
lookup_java_interface_method2,
find_applicable_accessible_methods_list): Adjust BINFO accessors
and addition.
* typeck.c (find_method_in_interfaces): Adjust BINFO accessors.
From-SVN: r84949
2004-07-20 14:26:02 +02:00
|
|
|
|
tree base_binfo = BINFO_BASE_BINFO (binfo, 0);
|
|
|
|
|
int num_bases = BINFO_N_BASE_BINFOS (binfo);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
if (num_bases == 1
|
2004-07-26 10:23:58 +02:00
|
|
|
|
&& VEC_index (tree, base_accesses, 0) == access_public_node
|
tree.h (TREE_VIA_VIRTUAL): Rename to ...
* tree.h (TREE_VIA_VIRTUAL): Rename to ...
(BINFO_VIRTUAL_P): ... here. Require TREE_BINFO only.
(BINFO_MARKED, BINFO_FLAG_[16]): New binfo flags.
* dbxout.c (dbxout_type): Use BINFO_VIRTUAL_P.
* dwarf2out.c (add_data_member_location_attribute): Likewise.
(gen_inheritance_die): Likewise.
* tree-dump.c (deque_and_dump): Likewise.
* doc/c-tree.texi (Binfos): Add under reconstruction note.
* cp/cp-tree.h (BINFO_MARKED): Remove.
(BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
(SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
* cp/class.c (build_base_path): Use BINFO_VIRTUAL_P.
(mark_primary_bases, determine_primary_base, base_derived_from,
dfs_find_final_overrider, dfs_find_final_overrider_q,
dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
dfs_modify_vtables, walk_subobject_offsets,
layout_nonempty_base_or_field, build_base_field,
build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
build_ctor_vtbl_group, accumulate_vtble_inits,
dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
add_vcall_offset_vtbl_entries_1): Likewise.
* cp/decl.c (xref_basetypes): Incomming virtual base indicated by
TREE_TYPE. Adjust.
* cp/dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
* cp/init.c (finish_init_stmts, sort_mem_initializers,
emit_mem_initializers, build_vtble_address, expand_member_init,
push_base_cleanups): Likewise.
* cp/method.c (do_build_copy_constructor): Likewise.
* cp/pt.c (instantiate_class_template,
get_template_base_recursive): Likewise.
* cp/rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
get_pseudo_ti_desc): Likewise.
* cp/search.c (lookup_base_r, dynamic_cast_base_recurse,
binfo_from_vbase, binfo_via_virtual, copied_binfo,
original_binfo): Likewise.
* cp/semantics.c (finish_base_specifier): Virtualness is indicated
by TREE_TYPE.
* cp/tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.
* java/java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1.
* java/class.c (add_interface_do): Use BINFO_VIRTUAL_P.
From-SVN: r84148
2004-07-06 10:51:32 +02:00
|
|
|
|
&& !BINFO_VIRTUAL_P (base_binfo)
|
2002-06-30 22:41:38 +02:00
|
|
|
|
&& integer_zerop (BINFO_OFFSET (base_binfo)))
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
{
|
|
|
|
|
/* single non-virtual public. */
|
|
|
|
|
ix = TK_SI_CLASS_TYPE;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2002-06-30 22:41:38 +02:00
|
|
|
|
else
|
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tinfo_s *ti;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
tree array_domain, base_array;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_FIXED + num_bases;
|
|
|
|
|
if (VEC_length (tinfo_s, tinfo_descs) <= ix)
|
2002-06-30 22:41:38 +02:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* too short, extend. */
|
|
|
|
|
unsigned len = VEC_length (tinfo_s, tinfo_descs);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
VEC_safe_grow (tinfo_s, gc, tinfo_descs, ix + 1);
|
|
|
|
|
while (VEC_iterate (tinfo_s, tinfo_descs, len++, ti))
|
|
|
|
|
ti->type = ti->vtable = ti->name = NULL_TREE;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
}
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
else if (VEC_index (tinfo_s, tinfo_descs, ix)->type)
|
|
|
|
|
/* already created. */
|
|
|
|
|
break;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2003-01-17 21:14:44 +01:00
|
|
|
|
/* Create the array of __base_class_type_info entries.
|
|
|
|
|
G++ 3.2 allocated an array that had one too many
|
|
|
|
|
entries, and then filled that extra entries with
|
|
|
|
|
zeros. */
|
|
|
|
|
if (abi_version_at_least (2))
|
|
|
|
|
array_domain = build_index_type (size_int (num_bases - 1));
|
|
|
|
|
else
|
|
|
|
|
array_domain = build_index_type (size_int (num_bases));
|
2002-06-30 22:41:38 +02:00
|
|
|
|
base_array =
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
build_array_type (VEC_index (tinfo_s, tinfo_descs,
|
|
|
|
|
TK_BASE_TYPE)->type,
|
|
|
|
|
array_domain);
|
2002-06-30 22:41:38 +02:00
|
|
|
|
|
2008-02-27 10:09:05 +01:00
|
|
|
|
push_abi_namespace ();
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
create_pseudo_type_info
|
|
|
|
|
(ix, "__vmi_class_type_info",
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
build_decl (input_location,
|
|
|
|
|
FIELD_DECL, NULL_TREE, integer_type_node),
|
|
|
|
|
build_decl (input_location,
|
|
|
|
|
FIELD_DECL, NULL_TREE, integer_type_node),
|
|
|
|
|
build_decl (input_location,
|
|
|
|
|
FIELD_DECL, NULL_TREE, base_array),
|
2002-06-30 22:41:38 +02:00
|
|
|
|
NULL);
|
2008-02-27 10:09:05 +01:00
|
|
|
|
pop_abi_namespace ();
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
break;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
default:
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ix = TK_BUILTIN_TYPE;
|
|
|
|
|
break;
|
2002-06-30 22:41:38 +02:00
|
|
|
|
}
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
return ix;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Make sure the required builtin types exist for generating the type_info
|
2004-04-30 17:51:53 +02:00
|
|
|
|
variable definitions. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
|
|
|
|
static void
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
create_tinfo_types (void)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tinfo_s *ti;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
gcc_assert (!tinfo_descs);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
VEC_safe_grow (tinfo_s, gc, tinfo_descs, TK_FIXED);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2008-02-27 10:09:05 +01:00
|
|
|
|
push_abi_namespace ();
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
/* Create the internal type_info structure. This is used as a base for
|
|
|
|
|
the other structures. */
|
|
|
|
|
{
|
2002-12-16 19:23:00 +01:00
|
|
|
|
tree field, fields;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
field = build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, const_ptr_type_node);
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields = field;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
field = build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, const_string_type_node);
|
2010-07-15 16:31:28 +02:00
|
|
|
|
DECL_CHAIN (field) = fields;
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields = field;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ti = VEC_index (tinfo_s, tinfo_descs, TK_TYPE_INFO_TYPE);
|
cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2008-03-21 Paolo Carlini <pcarlini@suse.de>
* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
(SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
(IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
(PROMOTES_TO_AGGR_TYPE): Remove.
(CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
* typeck.c (unary_complex_lvalue, build_modify_expr,
convert_for_initialization): Adjust.
* init.c (is_aggr_type): Remove.
(is_class_type): Add.
(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
build_delete): Adjust.
* lex.c (make_aggr_type): Remove.
(make_class_type): Add.
(cxx_make_type): Adjust.
* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
Adjust.
* decl.c (build_typename_type, make_typename_type,
make_unbound_class_template, cxx_init_decl_processing,
check_tag_decl, groktypename, start_decl_1, layout_var_decl,
check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
grok_op_properties, xref_tag, check_function_type): Adjust.
* call.c (check_dtor_name, standard_conversion, implicit_conversion,
add_builtin_candidate, add_builtin_candidates,
build_user_type_conversion_1, convert_like_real, build_cxx_call,
is_subseq, compare_ics): Adjust.
* method.c (use_thunk): Adjust.
* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
create_tinfo_types): Adjust.
* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
build_up_reference, convert_to_reference, convert_from_reference,
ocp_convert, build_expr_type_conversion): Adjust.
* tree.c (bind_template_template_parm, error_type): Adjust.
* dump.c (cp_dump_tree): Adjust.
* search.c (lookup_member): Adjust.
* friend.c (make_friend_class, do_friend): Adjust.
* typeck2.c (store_init_value, process_init_constructor_array,
process_init_constructor_record, build_x_arrow, build_m_component_ref,
build_functional_cast): Adjust.
* pt.c (finish_member_template_decl, process_template_parm,
lookup_template_class, tsubst_function_type, tsubst,
tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
Adjust.
* semantics.c (begin_class_definition, finish_base_specifier,
finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
Adjust.
* name-lookup.c (constructor_name_p, push_overloaded_decl,
do_class_using_decl, lookup_qualified_name,
maybe_process_template_type_declaration): Adjust.
* decl2.c (grok_array_decl, check_member_template,
constrain_class_visibility): Adjust.
* parser.c (cp_parser_class_name): Adjust.
From-SVN: r133434
2008-03-21 19:56:51 +01:00
|
|
|
|
ti->type = make_class_type (RECORD_TYPE);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ti->vtable = NULL_TREE;
|
|
|
|
|
ti->name = NULL_TREE;
|
|
|
|
|
finish_builtin_struct (ti->type, "__type_info_pseudo",
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields, NULL_TREE);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
/* Fundamental type_info */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
create_pseudo_type_info (TK_BUILTIN_TYPE, "__fundamental_type_info", NULL);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
2002-09-14 14:07:44 +02:00
|
|
|
|
/* Array, function and enum type_info. No additional fields. */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
create_pseudo_type_info (TK_ARRAY_TYPE, "__array_type_info", NULL);
|
|
|
|
|
create_pseudo_type_info (TK_FUNCTION_TYPE, "__function_type_info", NULL);
|
|
|
|
|
create_pseudo_type_info (TK_ENUMERAL_TYPE, "__enum_type_info", NULL);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
/* Class type_info. No additional fields. */
|
|
|
|
|
create_pseudo_type_info (TK_CLASS_TYPE, "__class_type_info", NULL);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
|
|
|
|
/* Single public non-virtual base class. Add pointer to base class.
|
2000-04-10 18:21:28 +02:00
|
|
|
|
This is really a descendant of __class_type_info. */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
create_pseudo_type_info (TK_SI_CLASS_TYPE, "__si_class_type_info",
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, type_info_ptr_type),
|
2006-06-06 13:44:09 +02:00
|
|
|
|
NULL);
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-01-28 14:30:13 +01:00
|
|
|
|
/* Base class internal helper. Pointer to base type, offset to base,
|
2002-09-14 14:07:44 +02:00
|
|
|
|
flags. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2002-12-16 19:23:00 +01:00
|
|
|
|
tree field, fields;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
field = build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, type_info_ptr_type);
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields = field;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
field = build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, integer_types[itk_long]);
|
2010-07-15 16:31:28 +02:00
|
|
|
|
DECL_CHAIN (field) = fields;
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields = field;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ti = VEC_index (tinfo_s, tinfo_descs, TK_BASE_TYPE);
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
2008-03-21 Paolo Carlini <pcarlini@suse.de>
* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
(SET_IS_AGGR_TYPE): Rename to SET_CLASS_TYPE_P.
(IS_AGGR_TYPE_CODE): Rename to RECORD_OR_UNION_CODE_P.
(PROMOTES_TO_AGGR_TYPE): Remove.
(CLASS_TYPE_P, TYPE_NON_AGGREGATE_CLASS): Adjust.
* typeck.c (unary_complex_lvalue, build_modify_expr,
convert_for_initialization): Adjust.
* init.c (is_aggr_type): Remove.
(is_class_type): Add.
(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
build_delete): Adjust.
* lex.c (make_aggr_type): Remove.
(make_class_type): Add.
(cxx_make_type): Adjust.
* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
Adjust.
* decl.c (build_typename_type, make_typename_type,
make_unbound_class_template, cxx_init_decl_processing,
check_tag_decl, groktypename, start_decl_1, layout_var_decl,
check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
grok_op_properties, xref_tag, check_function_type): Adjust.
* call.c (check_dtor_name, standard_conversion, implicit_conversion,
add_builtin_candidate, add_builtin_candidates,
build_user_type_conversion_1, convert_like_real, build_cxx_call,
is_subseq, compare_ics): Adjust.
* method.c (use_thunk): Adjust.
* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
create_tinfo_types): Adjust.
* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
build_up_reference, convert_to_reference, convert_from_reference,
ocp_convert, build_expr_type_conversion): Adjust.
* tree.c (bind_template_template_parm, error_type): Adjust.
* dump.c (cp_dump_tree): Adjust.
* search.c (lookup_member): Adjust.
* friend.c (make_friend_class, do_friend): Adjust.
* typeck2.c (store_init_value, process_init_constructor_array,
process_init_constructor_record, build_x_arrow, build_m_component_ref,
build_functional_cast): Adjust.
* pt.c (finish_member_template_decl, process_template_parm,
lookup_template_class, tsubst_function_type, tsubst,
tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
Adjust.
* semantics.c (begin_class_definition, finish_base_specifier,
finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
Adjust.
* name-lookup.c (constructor_name_p, push_overloaded_decl,
do_class_using_decl, lookup_qualified_name,
maybe_process_template_type_declaration): Adjust.
* decl2.c (grok_array_decl, check_member_template,
constrain_class_visibility): Adjust.
* parser.c (cp_parser_class_name): Adjust.
From-SVN: r133434
2008-03-21 19:56:51 +01:00
|
|
|
|
ti->type = make_class_type (RECORD_TYPE);
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
ti->vtable = NULL_TREE;
|
|
|
|
|
ti->name = NULL_TREE;
|
|
|
|
|
finish_builtin_struct (ti->type, "__base_class_type_info_pseudo",
|
2002-12-16 19:23:00 +01:00
|
|
|
|
fields, NULL_TREE);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2000-05-26 10:50:47 +02:00
|
|
|
|
/* Pointer type_info. Adds two fields, qualification mask
|
|
|
|
|
and pointer to the pointed to type. This is really a descendant of
|
2002-09-14 14:07:44 +02:00
|
|
|
|
__pbase_type_info. */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
create_pseudo_type_info (TK_POINTER_TYPE, "__pointer_type_info",
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, integer_type_node),
|
|
|
|
|
build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, type_info_ptr_type),
|
2000-05-26 10:50:47 +02:00
|
|
|
|
NULL);
|
|
|
|
|
|
2000-04-10 18:21:28 +02:00
|
|
|
|
/* Pointer to member data type_info. Add qualifications flags,
|
|
|
|
|
pointer to the member's type info and pointer to the class.
|
2000-05-26 10:50:47 +02:00
|
|
|
|
This is really a descendant of __pbase_type_info. */
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
create_pseudo_type_info (TK_POINTER_MEMBER_TYPE,
|
|
|
|
|
"__pointer_to_member_type_info",
|
java-gimplify.c (java_gimplify_block): New argument to build_empty_stmt.
gcc/java/
* java-gimplify.c (java_gimplify_block): New argument to
build_empty_stmt.
* expr.c (force_evaluation_order): Same.
* typeck.c: Add location to build_decl or PUSH_FIELD calls.
* class.c: Same.
* decl.c: Same.
* jcf-parse.c: Same.
* constants.c: Same.
* resource.c: Same.
* except.c: Same.
* builtins.c: Same.
* expr.c: Same.
* java-tree.h (PUSH_FIELD): Add location field.
gcc/objc/
* objc-act.c (finish_var_decl): Pass location to finish_decl.
(objc_get_parm_info): Same.
(get_super_receiver): Same.
* objc-act.c (objc_build_component_ref): Pass location to
build_compound_ref.
(build_module_initializer_routine): Pass location to
c_end_compound_stmt.
(objc_generate_static_init_call): Pass location to build_stmt.
(build_typed_selector_reference): New location argument.
(build_selector_reference): Same.
(objc_substitute_decl): Pass location to build_array_ref.
(next_sjlj_build_try_catch_finally): Pass location to build_stmt.
(objc_begin_catch_clause): Same.
(objc_finish_try_stmt): Same.
(objc_finish_catch_clause): Pass location to c_end_compound_stmt.
(objc_build_throw_stmt): New argument.
(generate_shared_structures): Pass location to build_c_cast.
(objc_build_message_expr): Use local location.
(objc_finish_message_expr): Use input_location.
(build_objc_method_call): New argument.
(objc_build_selector_expr): Same.
(get_super_receiver): Pass location to build_c_cast,
build_modify_expr, build_compound_expr.
* objc-act.c: Add location to all calls to start_struct, build_decl,
finish_struct.
gcc/
* tree-pretty-print.c (dump_generic_node): Dump column numbers.
* gimple-pretty-print.c (dump_gimple_stmt): Same.
* gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
created.
* c-parser.c (c_parser_binary_expression): Use current column while
building binary operations.
* common.opt (fshow-column): Enable by default.
* tree-vrp.c (check_array_ref): Use warning_at.
(check_array_bounds): Use location from call back if expr has no
location.
* tree.h: Add location argument to maybe_fold_*.
* tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
(maybe_fold_offset_to_array_ref): Add location argument and use it.
(maybe_fold_offset_to_component_ref): Same.
(maybe_fold_offset_to_reference): Same.
(maybe_fold_offset_to_address): Same.
(maybe_fold_stmt_indirect): Same.
(maybe_fold_stmt_addition): Same.
(fold_stmt_r): Pass location to maybe_fold_*.
(fold_gimple_assign): Same.
* c-tree.h: Add location argument to finish_decl,
default_function_array_conversion, store_init_value.
* c-decl.c (define_label): Use error_at.
(c_make_fname_decl): Pass location to finish_decl.
(finish_decl): New location argument.
(build_compound_literal): Pass location to store_init_value.
(grokdeclarator): Pass location to finish_decl.
(grokfield): Same.
* c-typeck.c (array_to_pointer_conversion): New location argument.
(function_to_pointer_conversion): Same.
(default_function_array_conversion): Same.
(parser_build_unary_op): Pass location to overflow_warning.
(parser_build_binary_op): Same. Use warning_at.
(build_unary_op): Pass location to array_to_pointer_conversion.
(build_c_cast): Pass location to digest_init.
(build_modify_expr): New location argument.
(convert_for_assignment): Same.
(store_init_value): Same.
(digest_init): Same.
(output_init_element): Pass location to digest_init and
array_to_pointer_conversion.
(c_finish_return): Pass location to convert_for_assignment.
* gimplify.c (gimplify_conversion): Pass location to
maybe_fold_offset_to_address.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
to maybe_fold_stmt_addition.
* c-omp.c (c_finish_omp_atomic): Pass new location to
build_modify_expr.
(c_finish_omp_for): Same.
* c-common.c (overflow_warning): New argument.
* c-common.h: New argument to build_modify_expr, overflow_warning.
* c-parser.c (c_parser_declaration_or_fndef): Pass location to
finish_decl.
(c_parser_initializer): Pass location to
default_function_array_conversion.
(c_parser_initelt): Same.
(c_parser_initval): Same.
(c_parser_asm_operands): Same.
(c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Add location info to stack. Use it.
(c_parser_unary_expression): Pass location to
default_function_array_conversion, parser_build_unary_op,
build_indirect_ref, c_parser_postfix_expression_after_primary.
(c_parser_postfix_expression_after_primary): New location argument.
Use it.
(c_parser_expression_conv): Pass location to
default_function_array_conversion.
(c_parser_expr_list): Same.
(c_parser_omp_atomic): Same.
(c_parser_omp_for_loop): Same.
* c-tree.h: (struct c_declarator): Add comment to id_loc.
(build_array_declarator): New argument.
* c-decl.c (build_array_declarator): Add location argument.
(grokdeclarator): Set id_loc for cdk_array.
* c-parser.c (c_parser_direct_declarator_inner): Pass location to
build_array_declarator.
* tree.c (build_omp_clause): Add location argument.
* tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
(OMP_CLAUSE_LOCATION): New macro.
(struct tree_omp_clause): Add location field.
(build_omp_clause): Add argument.
* testsuite/gcc.dg/gomp/for-1.c: Fix column.
* cp/pt.c (tsubst_omp_for_iterator): Pass location to
build_omp_clause.
* cp/parser.c (cp_parser_omp_var_list_no_open): Same.
(cp_parser_omp_clause_collapse): Same.
(cp_parser_omp_clause_default): Same.
(cp_parser_omp_clause_if): Same.
(cp_parser_omp_clause_nowait): Same.
(cp_parser_omp_clause_num_threads): Same.
(cp_parser_omp_clause_ordered): Same.
(cp_parser_omp_clause_schedule): Same.
(cp_parser_omp_clause_untied): Same.
(cp_parser_omp_for_loop): Same.
(cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
* c-tree.h (c_start_case): Add location argument.
(c_process_expr_stmt): Same.
(c_finish_goto_*): Same.
* tree-parloops.c (initialize_reductions): Pass location to
build_omp_clause.
(create_parallel_loop): Same.
* fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
(gfc_trans_omp_reduction_list): Same.
(gfc_trans_omp_clauses): Same.
(gfc_trans_omp_do): Same.
* c-typeck.c (c_finish_goto_label): Same.
(c_finish_goto_ptr): New location argument.
(c_start_case): Same.
(emit_side_effect_warnings): Same.
(c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
(c_finish_omp_clauses): Use error_at instead of error.
* gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
build_omp_clause.
* c-omp.c (c_split_parallel_clauses): New location argument.
* tree-nested.c (convert_nonlocal_reference_stmt): Pass location
to build_omp_clause.
(convert_local_reference_stmt): Same.
(convert_gimple_call): Same.
* c-common.h (c_split_parallel_clauses): New argument.
* c-parser.c (c_parser_statement_after_labels): Pass location to
c_finish_goto_label.
(c_parser_switch_statement): Pass location to c_start_case.
(c_parser_for_statement): Pass location to c_finish_expr_stmt,
and c_process_expr_stmt.
(c_parser_omp_variable_list): Add location argument.
(c_parser_omp_clause_collapse): Pass location to
build_omp_clause.
(c_parser_omp_clause_default): Same.
(c_parser_omp_clause_if): Same.
(c_parser_omp_clause_num_threads): Same.
(-c_parser_omp_clause_ordered): Same.
(c_parser_omp_clause_reduction): Pass location to
c_parser_omp_variable_list.
(c_parser_omp_clause_schedule): Pass location to build_omp_clause.
(c_parser_omp_clause_untied): Same.
(c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
(c_parser_omp_parallel): Pass location to
c_split_parallel_clauses.
* c-tree.h (check_for_loop_decls, undeclared_variable,
build_component_ref, build_array_ref, build_external_ref,
c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
build_conditional_expr, build_compound_expr, c_cast_expr,
build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
argument.
* c-semantics.c (build_stmt): Same.
(build_case_label): Same.
* c-decl.c (c_finish_incomplete_decl): Pass location on down.
(undeclared_variable): New argument.
(make_label): Same.
(lookup_label): Pass location on down.
(define_label): Same.
(finish_decl): Same.
(build_compound_literal): Same.
(finish_struct): Same.
(finish_function): Do not set location here.
(check_for_loop_decls): New argument.
* tree.c (save_expr): Set location.
(build_empty_stmt): New argument.
* tree.h (build_empty_stmt): New argument to build_empty_stmt.
(CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
* builtins.c (gimplify_va_arg_expr): Use locations.
(expand_builtin_sync_operation): Same.
* c-typeck.c (build_component_ref): New argument.
(build_array_ref): Same.
(build_external_ref): Same.
(c_expr_sizeof_expr): Same.
(c_expr_sizeof_type): Same.
(parser_build_unary_op): Same.
(build_conditional_expr): Same.
(build_compound_expr): Pass location on down.
(build_compound_expr): New argument.
(build_c_cast): Same.
(c_cast_expr): Same.
(build_asm_expr): Same.
(c_finish_return): Same.
(c_process_expr_stmt): Pass location on down.
(c_finish_stmt_expr): New argument.
(push_clenaup): Same.
(c_finish_omp_parallel): Same.
(c_finish_omp_task): Same.
* gimplify.c (gimplify_call_expr): Pass location on down.
* c-omp.c (c_finish_omp_master): New argument.
(c_finish_omp_critical): Same.
(c_finish_omp_ordered): Same.
(c_finish_omp_barrier): Same.
(-c_finish_omp_taskwait): Same.
(c_finish_omp_atomic): Same.
(c_finish_omp_flush): Same.
* tree-inline.c (copy_tree_body_r): Pass location on down.
(inline_forbidden_p): Remove use of input_location.
* c-gimplify.c (c_build_bind_expr): New argument.
* c-common.c (c_common_truthvalue_conversion): Pass location on down.
(c_sizeof_or_alignof_type): New argument.
(c_alignof_expr): Same.
(build_va_arg): Same.
(c_add_case_label): Same.
* c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
New argument.
* stub-objc.c (objc_build_selector_expr): Same.
(objc_build_throw_stmt): Same.
* c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
(c_parser_initelt): Same.
(c_parser_compound_statement): Same.
(c_parser_compound_statement_nostart): Same.
(c_parser_label): Same.
(c_parser_statement_after_labels): Same.
(c_parser_if_body): Same.
(c_parser_else_body): Same.
(c_parser_if_statement): Same.
(c_parser_switch_statement): Same.
(c_parser_while_statement): Same.
(c_parser_do_statement): Same.
(c_parser_for_statement): Same.
(c_parser_asm_statement): Same.
(c_parser_conditional_expression): Same.
(c_parser_binary_expression): Same.
(c_parser_cast_expression): Same.
(c_parser_unary_expression): Same.
(c_parser_sizeof_expression): Same.
(c_parser_alignof_expression): Same.
(c_parser_postfix_expression): Same.
(c_parser_expression): Same.
(c_parser_objc_receiver): Same.
(c_parser_omp_variable_list): Same.
(c_parser_omp_structured_block): Same.
(c_parser_omp_atomic): New argument.
(c_parser_omp_barrier): Same.
(c_parser_omp_critical): Same.
(c_parser_omp_flush): Pass location on down.
(c_parser_omp_for_loop): New argument.
(c_parser_omp_for): Same.
(c_parser_omp_master): Same.
(c_parser_omp_ordered): Same.
(c_parser_omp_sections_scope): Same.
(c_parser_omp_sections): Same.
(c_parser_omp_parallel): Same.
(c_parser_omp_single): Same.
(c_parser_omp_task): Same.
(c_parser_omp_taskwait): Pass location on down.
(c_parser_omp_construct): Same.
(c_parser_omp_threadprivate): Same.
* dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
config/i386/i386.c, stmt.c:
Add location argument to the following function definitions and/or
function calls: build_decl, objcp_start_struct, objcp_finish_struct,
start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
do_case, c_finish_bc_stmt, build_compound_literal,
build_function_call.
* c-decl.c (build_compound_literal): Add location argument.
Make all diagnostic calls use location.
(start_struct): Same.
(finish_struct): Same.
(start_enum): Same.
(build_enumerator): Same.
(start_function): Same.
(grokdeclarator): Make all diagnostic calls use location.
(store_parm_decls_oldstyle): Same.
* c-typeck.c (build_function_call): Add location argument.
Make all diagnostic calls use location.
(do_case): Same.
(c_finish_bc_stmt): Same.
* tree-nested.c (get_trampoline_type): Add argument.
Pass location to build_decl.
(lookup_tramp_for_decl): Pass location to get_trampoline_type.
* rtl.h (RTL_LOCATION): New.
* c-common.c (c_add_case_label): Add location argument.
Make all diagnostic calls use location.
* c-common.h: Add location argument to make_fname_decl, do_case,
c_add_case_label, build_function_call, resolve_overloaded_builtin.
* c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
Set it appropriately for every case. Pass enum_loc to start_enum
call. Pass value_loc first to build_enumerator. Pass enum_loc to
parser_xref_tag.
(c_parser_struct_or_union_specifier): Save location. Use it for
start_struct, finish_struct, and parser_xref_tag.
gcc/testsuite/
* gcc.dg/old-style-prom-3.c: Add column info.
* gcc.dg/overflow-warn-1.c
* gcc.dg/gomp/pr27415.c
* gcc.dg/gomp/for-1.c: Same.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/c99-tag-3.c: Same.
* gcc.dg/Wredundant-decls-2.c: Same.
* gcc.dg/func-ptr-conv-1.c: Same.
* gcc.dg/asm-wide-1.c: Same.
* gcc.dg/nofixed-point-2.c: Same.
* gcc.dg/cpp/line3.c: Same.
* gcc.dg/array-10.c: Same.
* gcc.dg/c99-vla-jump-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/Wshadow-3.c: Same.
* gcc.dg/c90-const-expr-8.c: Same.
* gcc.dg/label-decl-2.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/c90-const-expr-5.c: Same.
* gcc.dg/builtins-30.c: Same.
* gcc.dg/Warray-bounds.c: Same.
* gcc.dg/Wcxx-compat-2.c: Same.
* gcc.dg/tree-ssa/col-1.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/cast-function-1.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/vla-8.c: Same.
* gcc.dg/gomp/pr27415.c: Move firstprivate diagnostics to correct
line.
* gcc.dg/label-decl-2.c: Move label diagnostic to correct line.
* gcc.dg/old-style-prom-3.c: Check for error on the correct line.
* gcc.dg/enum-compat-1.c: Same.
* gcc.dg/dremf-type-compat-2.c: Same.
* gcc.dg/old-style-prom-2.c: Same.
* gcc.dg/pr15698-1.c: Same.
* gcc.dg/pr20368-1.c: Same.
* gcc.dg/dremf-type-compat-3.c: Same.
* gcc.dg/builtins-30.c: Same. Test for columns.
gcc/objcp/
* objcp-decl.h (c_end_compound_stmt): New argument.
* objcp-decl.c (objcp_start_struct): Add argument.
(objcp_finish_struct): Same.
gcc/cp/
* typeck.c (cp_build_binary_op): Pass location to overflow_warning.
(build_modify_expr): New arg.
* semantics.c (finish_unary_op_expr): Pass location to
overflow_warning.
(handle_omp_for_class_iterator): Pass location to build_modify_expr.
* typeck.c (cxx_sizeof_or_alignof_type): Pass location to
c_sizeof_or_alignof_type.
(build_array_ref): New argument.
(build_compound_expr): Same.
(build_const_cast): Same.
(build_ptrmemfunc): Pass location to build_c_cast.
* init.c (avoid_placement_new_aliasing): Pass location to
build_stmt.
(build_vec_delete_1): Pass location to cp_build_modify_expr,
build_compound_expr.
* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
* decl.c (poplevel): Pass location to c_build_bind_expr.
(finish_case_label): Pass location to build_case_label.
(finish_constructor_body): Same.
(finish_destructor_body): Pass location to build_stmt.
(cxx_maybe_build_cleanup): Same, but to build_compound_expr.
* call.c (build_new_op): Pass location to build_array_ref.
(build_x_va_arg): Pass location to build_va_arg.
* except.c (expand_end_catch_block): Pass location to
build_stmt.
* cp-tree.h (build_array_ref): New argument.
(build_compound_expr): Same.
(build_c_cast): Same.
* cp-gimplify.c (gimplify_if_stmt): Pass location on down.
(gimplify_switch_stmt): Same.
* typeck2.c (split_nonconstant_init_1): Same.
* pt.c (tsubst_copy): Same.
* semantics.c (add_decl_expr): Same.
(do_poplevel): Same.
(push_cleanup): Same.
(finish_goto_stmt): Same.
(finish_expr_stmt): Same.
(begin_if_stmt): Same.
(begin_while_stmt): Same.
(begin_do_stmt): Same.
(finish_return_stmt): Same.
(begin_for_stmt): Same.
(finish_break_stmt): Same.
(finish_continue_stmt): Same.
(begin_switch_stmt): Same.
(begin_try_block): Same.
(begin_handler): Same.
(finish_asm_stmt): Same.
(finish_label_stmt): Same.
(finish_stmt_expr_expr): Same.
(finalize_nrv_r): Same.
(finish_omp_atomic): Same.
* name-lookup.c (do_using_directive): Same.
* decl2.c (grok_array_decl): Same.
* parser.c (cp_parser_cast_expression): Same.
(cp_parser_selection_statement): Same.
(cp_parser_implicitly_scoped_statement): Same.
(cp_parser_objc_selector_expression): Same.
(cp_parser_objc_synchronized_statement): Same.
(cp_parser_objc_throw_statement): Same.
(cp_parser_omp_critical): Same.
(cp_parser_omp_master): Same.
* typeck.c (build_function_call): Add location argument.
* init.c: Add location argument to all build_decl calls.
* class.c: Same.
* method.c: Same.
* rtti.c: Same.
* tree.c: Same.
* pt.c: Same.
* semantics.c: Same.
* lex.c: Same.
* decl2.c: Same.
* cp-gimplify.c: Same.
* decl.c: Same.
(cp_make_fname_decl): Add location argument. Pass location ot
build_decl.
(finish_case_label): Same.
* cp-tree.h (finish_case_label): Add location argument.
* parser.c (cp_parser_label_for_labeled_statement): Pass location to
finish_case_label.
gcc/fortran/
* trans-array.c (gfc_trans_allocate_array_storage): Pass
location on down.
(gfc_trans_array_constructor_value): Same.
(gfc_trans_scalarized_loop_end): Same.
(gfc_conv_ss_startstride): Same.
(gfc_trans_g77_array): Same.
(gfc_trans_dummy_array_bias): Same.
(gfc_conv_array_parameter): Same.
(structure_alloc_comps): Same.
* trans-expr.c (gfc_conv_function_call): Same.
(fill_with_spaces): Same.
(gfc_trans_string_copy): Same.
(gfc_trans_scalar_assign): Same.
* trans-stmt.c (gfc_trans_goto): Same.
(gfc_trans_if_1): Same.
(gfc_trans_simple_do): Same.
(gfc_trans_do): Same.
(gfc_trans_do_while): Same.
(gfc_trans_logical_select): Same.
(gfc_trans_select): Same.
(gfc_trans_forall_loop): Same.
(gfc_trans_nested_forall_loop): Same.
(generate_loop_for_temp_to_lhs): Same.
(generate_loop_for_rhs_to_temp): Same.
(gfc_trans_forall_1): Same.
(gfc_trans_where_assign): Same.
(gfc_trans_where_3): Same.
(gfc_trans_allocate): Same.
* trans.c (gfc_finish_block): Same.
(gfc_trans_runtime_check): Same.
(gfc_call_malloc): Same.
(gfc_allocate_with_status): Same.
(gfc_call_free): Same.
(gfc_deallocate_with_status): Same.
(gfc_call_realloc): Same.
(gfc_trans_code): Same.
* trans-decl.c (gfc_init_default_dt): Same.
(gfc_generate_constructors): Same.
* trans-io.c (gfc_trans_io_runtime_check): Same.
* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
(gfc_conv_intrinsic_fdate): Same.
(gfc_conv_intrinsic_ttynam): Same.
(gfc_conv_intrinsic_minmax): Same.
(gfc_conv_intrinsic_minmax_char): Same.
(gfc_conv_intrinsic_anyall): Same.
(gfc_conv_intrinsic_count): Same.
(gfc_conv_intrinsic_arith): Same.
(gfc_conv_intrinsic_minmaxloc): Same.
(gfc_conv_intrinsic_minmaxval): Same.
(gfc_conv_intrinsic_rrspacing): Same.
(gfc_conv_intrinsic_array_transfer): Same.
(gfc_conv_intrinsic_trim): Same.
(gfc_conv_intrinsic_repeat): Same.
From-SVN: r148442
2009-06-13 00:06:47 +02:00
|
|
|
|
build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, integer_type_node),
|
|
|
|
|
build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, type_info_ptr_type),
|
|
|
|
|
build_decl (BUILTINS_LOCATION,
|
|
|
|
|
FIELD_DECL, NULL_TREE, type_info_ptr_type),
|
2006-06-06 13:44:09 +02:00
|
|
|
|
NULL);
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
2008-02-27 10:09:05 +01:00
|
|
|
|
pop_abi_namespace ();
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Emit the type_info descriptors which are guaranteed to be in the runtime
|
|
|
|
|
support. Generating them here guarantees consistency with the other
|
|
|
|
|
structures. We use the following heuristic to determine when the runtime
|
2001-07-24 10:56:12 +02:00
|
|
|
|
is being generated. If std::__fundamental_type_info is defined, and its
|
2000-01-28 14:30:13 +01:00
|
|
|
|
destructor is defined, then the runtime is being built. */
|
|
|
|
|
|
|
|
|
|
void
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
emit_support_tinfos (void)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2010-05-06 22:51:52 +02:00
|
|
|
|
/* Dummy static variable so we can put nullptr in the array; it will be
|
|
|
|
|
set before we actually start to walk the array. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
static tree *const fundamentals[] =
|
|
|
|
|
{
|
|
|
|
|
&void_type_node,
|
|
|
|
|
&boolean_type_node,
|
2008-07-18 22:23:42 +02:00
|
|
|
|
&wchar_type_node, &char16_type_node, &char32_type_node,
|
2000-01-28 14:30:13 +01:00
|
|
|
|
&char_type_node, &signed_char_type_node, &unsigned_char_type_node,
|
|
|
|
|
&short_integer_type_node, &short_unsigned_type_node,
|
|
|
|
|
&integer_type_node, &unsigned_type_node,
|
|
|
|
|
&long_integer_type_node, &long_unsigned_type_node,
|
|
|
|
|
&long_long_integer_type_node, &long_long_unsigned_type_node,
|
2010-05-26 18:13:55 +02:00
|
|
|
|
&int128_integer_type_node, &int128_unsigned_type_node,
|
2000-01-28 14:30:13 +01:00
|
|
|
|
&float_type_node, &double_type_node, &long_double_type_node,
|
2009-11-12 05:44:24 +01:00
|
|
|
|
&dfloat32_type_node, &dfloat64_type_node, &dfloat128_type_node,
|
2010-05-06 22:51:52 +02:00
|
|
|
|
&nullptr_type_node,
|
2000-01-28 14:30:13 +01:00
|
|
|
|
0
|
|
|
|
|
};
|
|
|
|
|
int ix;
|
|
|
|
|
tree bltn_type, dtor;
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2008-02-27 10:09:05 +01:00
|
|
|
|
push_abi_namespace ();
|
2002-06-26 19:03:44 +02:00
|
|
|
|
bltn_type = xref_tag (class_type,
|
2005-06-14 22:01:59 +02:00
|
|
|
|
get_identifier ("__fundamental_type_info"),
|
2005-03-14 15:33:54 +01:00
|
|
|
|
/*tag_scope=*/ts_current, false);
|
2008-02-27 10:09:05 +01:00
|
|
|
|
pop_abi_namespace ();
|
tree.h (COMPLETE_TYPE_P): New macro.
gcc
* tree.h (COMPLETE_TYPE_P): New macro.
(COMPLETE_OR_VOID_TYPE_P): New macro.
(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
* c-aux-info.c (gen_type): Use them.
* c-common.c (c_expand_expr_stmt): Likewise.
* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
grokdeclarator, grokparms, finish_struct, start_function,
store_parm_decls, combine_parm_decls): Likewise.
* c-parse.y (cast_expr): Likewise.
* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
c_size_in_bytes, c_alignof, build_component_ref,
build_indirect_ref, build_array_ref, convert_arguments,
build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
* calls.c (initialize_argument_information): Likewise.
* convert.c (convert_to_integer): Likewise.
* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
* dwarfout.c (location_or_const_value_attribute,
output_enumeration_type_die, output_structure_type_die,
output_union_type_die, output_type): Likewise.
* expr.c (safe_from_p, expand_expr): Likewise.
* function.c (assign_parms): Likewise.
* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
* tree.c (build_array_type, build_function_type,
build_method_type, build_offset_type, build_complex_type): Likewise.
* c-parse.c, c-parse.h: Regenerated.
gcc/cp
* typeck.c (require_complete_type, complete_type,
complete_type_or_else, c_sizeof, c_sizeof_nowarn,
build_array_ref, convert_arguments, pointer_diff,
build_x_unary_op, build_unary_op, build_c_cast,
build_modify_expr): Use COMPLETE_TYPE_P etc.
* call.c (is_complete, convert_like_real,
build_new_method_call): Likewise.
* class.c (build_vbase_pointer_fields, check_bases,
build_base_field, finish_struct_1, pushclass): Likewise.
* cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
* decl.c (maybe_process_template_type_declaration, pushtag,
pushdecl, redeclaration_error_message, start_decl, start_decl_1,
layout_var_decl, check_initializer, cp_finish_decl,
grokdeclarator, require_complete_types_for_parms,
grok_op_properties, xref_tag, xref_basetypes,
check_function_type): Likewise.
* decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
* friend.c (do_friend): Likewise.
* init.c (build_offset_ref): Likewise.
* parse.y (structsp): Likewise.
* pt.c (maybe_process_partial_specialization,
tsubst_friend_function, instantiate_class_template, tsubst,
do_type_instantiation, instantiate_pending_templates): Likewise.
* repo.c (repo_get_id): Likewise.
* rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
synthesize_tinfo_var, emit_support_tinfos): Likewise.
* search.c (lookup_fnfields_1, lookup_conversions): Likewise.
* semantics.c (begin_class_definition): Likewise.
* tree.c (build_cplus_method_type): Likewise.
* typeck2.c (digest_init, build_functional_cast,
add_exception_specifier): Likewise.
* parse.h, parse.c: Regenerated.
From-SVN: r32671
2000-03-21 19:10:48 +01:00
|
|
|
|
if (!COMPLETE_TYPE_P (bltn_type))
|
2000-01-28 14:30:13 +01:00
|
|
|
|
return;
|
2004-07-16 03:15:43 +02:00
|
|
|
|
dtor = CLASSTYPE_DESTRUCTORS (bltn_type);
|
2005-02-09 03:53:41 +01:00
|
|
|
|
if (!dtor || DECL_EXTERNAL (dtor))
|
2000-01-28 14:30:13 +01:00
|
|
|
|
return;
|
|
|
|
|
doing_runtime = 1;
|
|
|
|
|
for (ix = 0; fundamentals[ix]; ix++)
|
|
|
|
|
{
|
|
|
|
|
tree bltn = *fundamentals[ix];
|
2004-12-22 22:32:33 +01:00
|
|
|
|
tree types[3];
|
2004-12-22 19:00:39 +01:00
|
|
|
|
int i;
|
|
|
|
|
|
2010-05-27 10:13:58 +02:00
|
|
|
|
if (bltn == NULL_TREE)
|
|
|
|
|
continue;
|
2004-12-22 22:32:33 +01:00
|
|
|
|
types[0] = bltn;
|
|
|
|
|
types[1] = build_pointer_type (bltn);
|
2010-05-19 23:02:27 +02:00
|
|
|
|
types[2] = build_pointer_type (cp_build_qualified_type (bltn,
|
|
|
|
|
TYPE_QUAL_CONST));
|
2005-06-14 22:01:59 +02:00
|
|
|
|
|
2004-12-22 19:00:39 +01:00
|
|
|
|
for (i = 0; i < 3; ++i)
|
|
|
|
|
{
|
|
|
|
|
tree tinfo;
|
2004-12-22 22:32:33 +01:00
|
|
|
|
|
2004-12-22 19:00:39 +01:00
|
|
|
|
tinfo = get_tinfo_decl (types[i]);
|
|
|
|
|
TREE_USED (tinfo) = 1;
|
|
|
|
|
mark_needed (tinfo);
|
|
|
|
|
/* The C++ ABI requires that these objects be COMDAT. But,
|
2005-06-14 22:01:59 +02:00
|
|
|
|
On systems without weak symbols, initialized COMDAT
|
2004-12-22 19:00:39 +01:00
|
|
|
|
objects are emitted with internal linkage. (See
|
|
|
|
|
comdat_linkage for details.) Since we want these objects
|
|
|
|
|
to have external linkage so that copies do not have to be
|
|
|
|
|
emitted in code outside the runtime library, we make them
|
2007-01-09 08:48:38 +01:00
|
|
|
|
non-COMDAT here.
|
|
|
|
|
|
|
|
|
|
It might also not be necessary to follow this detail of the
|
|
|
|
|
ABI. */
|
|
|
|
|
if (!flag_weak || ! targetm.cxx.library_rtti_comdat ())
|
2004-12-22 19:00:39 +01:00
|
|
|
|
{
|
|
|
|
|
gcc_assert (TREE_PUBLIC (tinfo) && !DECL_COMDAT (tinfo));
|
|
|
|
|
DECL_INTERFACE_KNOWN (tinfo) = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2002-06-30 22:41:38 +02:00
|
|
|
|
/* Finish a type info decl. DECL_PTR is a pointer to an unemitted
|
|
|
|
|
tinfo decl. Determine whether it needs emitting, and if so
|
|
|
|
|
generate the initializer. */
|
2000-01-28 14:30:13 +01:00
|
|
|
|
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
bool
|
2003-03-20 22:14:30 +01:00
|
|
|
|
emit_tinfo_decl (tree decl)
|
2000-01-28 14:30:13 +01:00
|
|
|
|
{
|
2002-06-30 22:41:38 +02:00
|
|
|
|
tree type = TREE_TYPE (DECL_NAME (decl));
|
2002-07-05 12:40:47 +02:00
|
|
|
|
int in_library = typeinfo_in_lib_p (type);
|
2003-03-20 22:14:30 +01:00
|
|
|
|
|
2005-06-14 22:01:59 +02:00
|
|
|
|
gcc_assert (DECL_TINFO_P (decl));
|
|
|
|
|
|
2004-07-29 19:59:31 +02:00
|
|
|
|
if (in_library)
|
|
|
|
|
{
|
|
|
|
|
if (doing_runtime)
|
|
|
|
|
DECL_EXTERNAL (decl) = 0;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* If we're not in the runtime, then DECL (which is already
|
|
|
|
|
DECL_EXTERNAL) will not be defined here. */
|
|
|
|
|
DECL_INTERFACE_KNOWN (decl) = 1;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (involves_incomplete_p (type))
|
|
|
|
|
{
|
|
|
|
|
if (!decl_needed_p (decl))
|
|
|
|
|
return false;
|
|
|
|
|
/* If TYPE involves an incomplete class type, then the typeinfo
|
|
|
|
|
object will be emitted with internal linkage. There is no
|
|
|
|
|
way to know whether or not types are incomplete until the end
|
|
|
|
|
of the compilation, so this determination must be deferred
|
|
|
|
|
until this point. */
|
|
|
|
|
TREE_PUBLIC (decl) = 0;
|
|
|
|
|
DECL_EXTERNAL (decl) = 0;
|
|
|
|
|
DECL_INTERFACE_KNOWN (decl) = 1;
|
|
|
|
|
}
|
2002-05-16 06:48:52 +02:00
|
|
|
|
|
2004-07-29 19:59:31 +02:00
|
|
|
|
import_export_decl (decl);
|
|
|
|
|
if (DECL_NOT_REALLY_EXTERN (decl) && decl_needed_p (decl))
|
|
|
|
|
{
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
tree init;
|
2006-06-06 13:44:09 +02:00
|
|
|
|
|
2004-07-29 19:59:31 +02:00
|
|
|
|
DECL_EXTERNAL (decl) = 0;
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
init = get_pseudo_ti_init (type, get_pseudo_ti_index (type));
|
|
|
|
|
DECL_INITIAL (decl) = init;
|
2004-07-29 19:59:31 +02:00
|
|
|
|
mark_used (decl);
|
2009-06-18 20:09:12 +02:00
|
|
|
|
cp_finish_decl (decl, init, false, NULL_TREE, 0);
|
2004-07-29 19:59:31 +02:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
else
|
Remove traditional C constructs 4/n.
* decl2.c (grok_method_quals, warn_if_unknown_interface,
grok_x_components, cp_build_parm_decl, build_artificial_parm,
maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
delete_sanity, check_member_template, check_java_method,
check_classfn, finish_static_data_member_decl, grokfield,
grokbitfield, grokoptypename, grok_function_init,
cplus_decl_attributes, constructor_name, defer_fn,
build_anon_union_vars, finish_anon_union, coerce_new_type,
coerce_delete_type, comdat_linkage, maybe_make_one_only,
key_method, import_export_vtable, import_export_class,
output_vtable_inherit, import_export_decl, import_export_tinfo,
build_cleanup, get_guard, get_guard_bits, get_guard_cond,
set_guard, start_objects, finish_objects,
start_static_storage_duration_function,
finish_static_storage_duration_function, get_priority_info,
start_static_initialization_or_destruction,
finish_static_initialization_or_destruction,
do_static_initialization, do_static_destruction,
prune_vars_needing_no_initialization, write_out_vars,
reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
add_using_namespace, merge_functions, ambiguous_decl,
lookup_using_namespace, lookup_using_namespace,
qualified_lookup_using_namespace, set_decl_namespace,
decl_namespace, current_decl_namespace, push_decl_namespace,
pop_decl_namespace, push_scope, pop_scope, add_function,
arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
lookup_arg_dependent, do_namespace_alias,
validate_nonmember_using_decl, do_nonmember_using_decl,
do_toplevel_using_decl, do_local_using_decl,
do_class_using_decl, do_using_directive, check_default_args,
mark_used, handle_class_head): Use C90 prototypings. Use booleans.
* parser.c (cp_parser_class_head): Use booleanss.
* decl.c (walk_globals, walk_vtables): Likewise.
* cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
walk_globals): Change return type from 'int' to 'bool'.
* rtti.c (init_rtti_processing, build_headof, throw_bad_cast
throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
qualifier_flags, tinfo_base_init, generic_initializer,
ptr_initializer, dfs_class_hint_mark, ptm_initializer,
dfs_class_hint_unmark, class_hint_flags, class_initializer,
typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
* repo.c (repo_compile_flags, repo_template_declared,
repo_template_defined, repo_class_defined, repo_get_id,
repo_template_used, repo_vtable_used, repo_inline_used,
repo_tinfo_used, repo_template_instantiated, extract_string,
open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
finish_repo): Likewise.
* ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
cxx_print_xnode): Likewise..
* cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
cxx_warn_unused_global_decl, cp_expr_size): Likewise.
* cxxfilt.c (demangle_it, print_demangler_list, usage,
standard_symbol_characters, hp_symbol_characters, main, fatal):
Likewise.
(strip_underscore): Change type from 'int' to 'bool'.
(main): Use boolean constants.
From-SVN: r60601
2002-12-29 15:53:05 +01:00
|
|
|
|
return false;
|
2000-01-28 14:30:13 +01:00
|
|
|
|
}
|
Make-lang.in: Reformat some long lines.
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
* config-lang.in (gtfiles): Add cp/rtti.c.
* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
class_desc_type_node, si_class_desc_type_node,
vmi_class_desc_type_node, ptm_desc_type_node,
base_desc_type_node): Remove.
* decl.c: Adjust documentation of global trees.
* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
TINFO_REAL_NAME): Remove.
(struct tinfo_s): New.
(enum tinfo_kind): New.
(tinfo_descs): New.
(get_tinfo_decl): Adjust use of tinfo descriptor.
(tinfo_base_init, generic_initializer, ptr_initializer,
ptm_initializer, class_initializer): Likewise.
(get_pseudo_ti_init): Take descriptor index. Adjust.
(create_pseudo_type_info): Likewise.
(get_pseudo_ti_desc): Return descriptor index. Adjust.
(create_tinfo_types): Adjust use of create_pseudo_type_info.
(emit_tinfo_decl): Adjust use of tinfo descriptor.
From-SVN: r100971
2005-06-15 10:18:01 +02:00
|
|
|
|
|
|
|
|
|
#include "gt-cp-rtti.h"
|