GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "diagnostic.h"
#include "tree.h"
#include "gimple.h"
#include "gimple-ssa.h"
#include "tree-phinodes.h"
#include "tree-ssanames.h"
#include "data-streamer.h"
#include "tree-streamer.h"
#include "gimple-streamer.h"
#include "value-prof.h"
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) |
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 |
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 |
Routines for reading GIMPLE from a file stream.
Copyright (C) 2011-2013 Free Software Foundation, Inc. Contributed by Diego Novillo dnovi llo@ googl e.co 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(), BASIC_BLOCK_FOR_FUNCTION, create_phi_node(), EDGE_COUNT, EDGE_PRED, HOST_WIDE_INT, NULL, basic_block_def::preds, SSANAMES, stream_input_location, stream_read_tree, streamer_read_bitpack(), and streamer_read_uhwi().