X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.h;h=4db9c0ed2cacf4e7f52e98c2413e031efd0a7739;hb=f3b034366a1be7a8ee7f743d673b0343af79772c;hp=df4b8df076a941c06b2fdea4b65fbe79a57ab4c0;hpb=e393bbf21ea07328a6988edabb4443cde4bf79c8;p=libfirm diff --git a/ir/common/firm.h b/ir/common/firm.h index df4b8df07..4db9c0ed2 100644 --- a/ir/common/firm.h +++ b/ir/common/firm.h @@ -1,18 +1,28 @@ /* - * Project: libFIRM - * File name: ir/common/firm.h - * Purpose: Central firm header. - * Author: Martin Trapp, Christian Schaefer - * Modified by: Goetz Lindenmaier - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1998-2003 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ /** - * @file firm.h - * + * @file + * @brief Central firm header. + * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier + * @version $Id$ + * @summary * Central FIRM header. * * FIRM is a full graph based intermediate representation in SSA Form @@ -46,8 +56,8 @@ * generic functionality to support implementations using firm. (Code generation, * further optimizations). */ -#ifndef _FIRM_H_ -#define _FIRM_H_ +#ifndef FIRM_COMMON_FIRM_H +#define FIRM_COMMON_FIRM_H #ifdef __cplusplus extern "C" { @@ -56,6 +66,7 @@ extern "C" { /* The representations */ #include "firm_common.h" /* common type tags. */ #include "irprog.h" /* control flow and data of a program */ +#include "irgraph.h" /* graphs */ #include "type.h" /* type representation */ #include "entity.h" /* entity representation */ #include "tv.h" /* target values */ @@ -73,7 +84,8 @@ extern "C" { #include "cfopt.h" /* optimize control flow */ #include "tailrec.h" /* optimize tail-recursion calls */ #include "ircgopt.h" /* Optimizations based on interprocedural graph */ -#include "strength_red.h" /* Strength reduction */ +#include "opt_osr.h" /* Operator Strength Reduction */ +#include "strength_red.h" /* Old (and buggy) Strength reduction */ #include "loop_unrolling.h" /* Do loop unrolling */ #include "ifconv.h" /* if conversion */ #include "funccall.h" /* real function call optimization */ @@ -82,18 +94,27 @@ extern "C" { #include "proc_cloning.h" /* procedure cloning */ #include "opt_confirms.h" /* Confirm based optimizations */ #include "gvn_pre.h" /* global value numbering and partial redundancy elimination */ -//#include "opt_branches.h" /* Branch optimizations */ +#include "opt_frame.h" /* frame type optimization */ +#include "tropt.h" /* optimize the type representation */ +#include "condeval.h" /* control flow optimization by conditional evaluation */ + +/* Lowering */ +#include "lower_calls.h" /* lowering of different calls */ +#include "lower_intrinsics.h" /* lowering of intrinsic calls */ +#include "lower_dw.h" /* double word types lowering */ /* Analyses */ -#include "irouts.h" /* Graph reversal / out edges. */ -#include "trouts.h" /* Graph reversal / out edges for types. */ -#include "irdom.h" /* Dominator analysis */ -#include "cgana.h" /* Analysis to construct interprocedural graph */ - /* including some optimizations */ -#include "irloop.h" /* loop and backedge analysis */ -#include "callgraph.h" /* Callgraph construction */ -#include "irconsconfirm.h" /* Confirm nodes */ +#include "irouts.h" /* Graph reversal / out edges. */ +#include "trouts.h" /* Graph reversal / out edges for types. */ +#include "irdom.h" /* Dominator analysis */ +#include "cgana.h" /* Analysis to construct interprocedural graph */ + /* including some optimizations */ +#include "irloop.h" /* loop and backedge analysis */ +#include "callgraph.h" /* Callgraph construction */ +#include "irconsconfirm.h" /* Confirm nodes */ #include "analyze_irg_args.h" /* Simple pointer parameter analysis */ +#include "irtypeinfo.h" /* type information for nodes */ +#include "irmemory.h" /* memory disambiguation */ #include "interval_analysis.h" #include "field_temperature.h" #include "execution_frequency.h" @@ -116,6 +137,7 @@ extern "C" { #include "irreflect.h" /* reflection */ #include "seqnumbers.h" /* debug support */ +#include "firm_ycomp.h" /* ycomp debugging support */ /* @@@ temporarily for jni builder until preprocessor works. @@ -177,7 +199,7 @@ struct _firm_parameter_t { * The architecture dependent opcode settings. * If not set, no architecture dependent operations will be used. */ - arch_ops_info *arch_op_settings; + const arch_ops_info *arch_op_settings; /** * The default calling convention. @@ -188,36 +210,11 @@ struct _firm_parameter_t { * The debug info that should be used for "builtin" objects. */ dbg_info *builtin_dbg; - - /** - * Prefix for the command line options. - * example: if the option is -ffirm-opt-bla, then the prefix is "-f" - * @note Only active, if libfirm is compiled with libcore. - */ - const char *arg_prefix; - - /** - * Number of arguments in the "command line". - * @note Only active, if libfirm is compiled with libcore. - */ - int argc; - - /** - * Array of arguments. - * @note Only active, if libfirm is compiled with libcore. - */ - const char **argv; - - /** - * Name of ini file which is initially read. - * @note Only active, if libfirm is compiled with libcore. - */ - const char *ini_file; }; typedef struct _firm_parameter_t firm_parameter_t; -#define libFirm_VERSION_MAJOR 0 +#define libFirm_VERSION_MAJOR 1 #define libFirm_VERSION_MINOR 4 /** @@ -252,8 +249,15 @@ void free_firm(void); */ void firm_get_version(firm_version_t *version); +#ifdef WITH_LIBCORE +/** + * Read initializations arguments from the .init file. + */ +void firm_init_options(const char *arg_prefix, int argc, const char **argv); +#endif + #ifdef __cplusplus } #endif -#endif /* _FIRM_H_ */ +#endif