GCC Middle and Back End API Reference
gimple-streamer-in.c File Reference

Functions

static gimple input_phi (struct lto_input_block *ib, basic_block bb, struct data_in *data_in, struct function *fn)
static gimple input_gimple_stmt (struct lto_input_block *ib, struct data_in *data_in, enum LTO_tags tag)
void input_bb (struct lto_input_block *ib, enum LTO_tags tag, struct data_in *data_in, struct function *fn, int count_materialization_scale)

Function Documentation

void input_bb ( struct lto_input_block ib,
enum LTO_tags  tag,
struct data_in data_in,
struct function fn,
int  count_materialization_scale 
)
   Read a basic block with tag TAG from DATA_IN using input block IB.
   FN is the function being processed.  
     This routine assumes that CFUN is set to FN, as it needs to call
     basic GIMPLE routines that use CFUN.  
     LTO_bb1 has statements.  LTO_bb0 does not.  
         After the statement, expect a 0 delimiter or the EH region
         that the previous statement belongs to.  
static gimple input_gimple_stmt ( struct lto_input_block ib,
struct data_in data_in,
enum LTO_tags  tag 
)
static
   Read a statement with tag TAG in function FN from block IB using
   descriptors in DATA_IN.  
     Read the tuple header.  
     Read location information.  
     Read lexical block reference.  
     Read in all the operands.  
           FIXME lto.  Move most of this into a new gimple_asm_set_string().  
         Fallthru  
                     Fixup FIELD_DECLs in COMPONENT_REFs, they are not handled
                     by decl merging.  
                     In case of type mismatches across units we can fail
                     to unify some types and thus not find a proper
                     field-decl here.  
                         Thus, emit a ODR violation warning.  
                         And finally fixup the types.  
                     And ARRAY_REFs to objects that had mismatched types
                     during symbol merging to avoid ICEs.  
             At LTO output time we wrap all global decls in MEM_REFs to
             allow seamless replacement with prevailing decls.  Undo this
             here if the prevailing decl allows for this.
             ???  Maybe we should simply fold all stmts.  
     Update the properties of symbols, SSA names and labels associated
     with STMT.  
     Reset alias information.  
     Mark the statement modified so its operand vectors can be filled in.  
static gimple input_phi ( struct lto_input_block ib,
basic_block  bb,
struct data_in data_in,
struct function fn 
)
static
@verbatim 

Routines for reading GIMPLE from a file stream.

Copyright (C) 2011-2013 Free Software Foundation, Inc. Contributed 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/.

   Read a PHI function for basic block BB in function FN.  DATA_IN is
   the file being read.  IB is the input block to use for reading.  
     We have to go through a lookup process here because the preds in the
     reconstructed graph are generally in a different order than they
     were in the original program.  

References add_phi_arg(), create_phi_node(), HOST_WIDE_INT, len, basic_block_def::preds, streamer_read_bitpack(), and streamer_read_uhwi().