GCC Middle and Back End API Reference
vec.c File Reference

Data Structures

struct  vec_descriptor
struct  ptr_hash_entry


static hashval_t hash_descriptor ()
static int eq_descriptor ()
static hashval_t hash_ptr ()
static int eq_ptr ()
static struct vec_descriptorvec_descriptor ()
static int cmp_statistic ()
static int add_statistics ()
void dump_vec_loc_statistics ()


vnull vNULL
static htab_t vec_desc_hash
static htab_t ptr_hash
static struct vec_descriptor ** loc_array

Function Documentation

static int add_statistics ( )
static int cmp_statistic ( )
   Helper for qsort; sort descriptors by amount of memory consumed.  
void dump_vec_loc_statistics ( void  )
   Dump per-site memory statistics.  
static int eq_descriptor ( )
static hashval_t hash_descriptor ( )
static hashval_t hash_ptr ( )
   Hash table helpers functions.  

References ptr_hash_entry::ptr.

static struct vec_descriptor* vec_descriptor ( )
   Return descriptor for given call site, create new one if needed.  

Variable Documentation

struct vec_descriptor** loc_array
   Collect array of the descriptors from hashtable.  
htab_t ptr_hash
   Hashtable converting address of allocated field to loc descriptor.  
htab_t vec_desc_hash
   Hashtable mapping vec addresses to descriptors.  

Referenced by eq_ptr().

vnull vNULL

Vector API for GNU compiler. Copyright (C) 2004-2013 Free Software Foundation, Inc. Contributed by Nathan Sidwell natha.nosp@m.n@co.nosp@m.desou.nosp@m.rcer.nosp@m.y.com Re-implemented in C++ by Diego Novillo dnovi.nosp@m.llo@.nosp@m.googl.nosp@m.e.co.nosp@m.m

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

GCC is distributed in the hope that it will be useful, 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 along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.

   This file is compiled twice: once for the generator programs
   once for the compiler.  
   vNULL is an empty type with a template cast operation that returns
   a zero-initialized vec<T, A, L> instance.  Use this when you want
   to assign nil values to new vec instances or pass a nil vector as
   a function call argument.

   We use this technique because vec<T, A, L> must be PODs (they are
   stored in unions and passed in vararg functions), this means that
   they cannot have ctors/dtors.  

Referenced by add_subscript_strides(), analyze_scalar_evolution_for_address_of(), case_bit_test_cmp(), clone_inlined_nodes(), do_deref(), dump_split_point(), estimate_calls_size_and_time(), finish_cost_vectors(), finish_update_gimple_call(), free_dominance_info(), get_immediate_dominator(), get_initial_def_for_reduction(), graphite_can_represent_expr(), handle_lhs_call(), initiate_pass_states(), input_overwrite_node(), insert_aux(), ipa_tm_create_version(), is_included_in(), make_constraint_from(), make_constraints_to(), move_insn_for_shrink_wrap(), predicate_for_phi_result(), print_pred_bbs(), record_loop_exits(), safe_add(), scale_dominated_blocks_in_loop(), vec_free(), vect_create_vectorized_demotion_stmts(), vect_finish_stmt_generation(), vect_get_loop_based_defs(), vn_nary_op_insert_into(), and vn_reference_lookup_1().