X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftv%2Ftv_t.h;h=86b2cf476a89e9cec3c05f0e5d3be28cb2dd07d8;hb=7498ed3766f3f98604d96d1b75978a3a9e6768ed;hp=8272c7838940d0b343642f1ed13c71530601edb9;hpb=25a9079a440dca3115aedcc4c22438e187ed9d7d;p=libfirm diff --git a/ir/tv/tv_t.h b/ir/tv/tv_t.h index 8272c7838..86b2cf476 100644 --- a/ir/tv/tv_t.h +++ b/ir/tv/tv_t.h @@ -1,25 +1,70 @@ /* - * Project: libFIRM - * File name: ir/tv/tv_t.h - * Purpose: Representation of and static computations on target machine - * values -- private header. - * Author: Mathias Heil - * Modified by: - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 2003 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 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 + * @brief Representation of and static computations on target machine + * values -- private header. + * @date 2003 + * @author Mathias Heil + * @version $Id$ + */ +#ifndef FIRM_TV_TV_T_H +#define FIRM_TV_TV_T_H +#include "firm_config.h" -#ifndef _TV_T_H_ -#define _TV_T_H_ - +#include +#include "irmode.h" #include "tv.h" +/** Debugging aid for the firmEvaluator: Marks for reserved tarvals values. */ +enum reserved_id { + resid_tarval_bad = 1, /**< tarval_bad marker. */ + resid_tarval_undefined = 2, /**< tarval_undefined marker. */ + resid_tarval_b_false = 3, /**< tarval_b_false marker. */ + resid_tarval_b_true = 4 /**< tarval_b_true marker. */ +}; + +/** + * Initialization of the tarval module. + * + * Call before init_mode(). + * + * @param null_value The reference mode NULL value, typical 0l + */ +void init_tarval_1(long null_value); + /** - * This struct represents the aforementioned tarvals. + * Initialization of the tarval module. + * + * Call after init_mode(). + */ +void init_tarval_2(void); + +/** + * Free all memory occupied by the tarval module. + */ +void finish_tarval(void); + +/** + * This struct represents the afore mentioned tarvals. * * A tarval struct consists of an internal representation of the * value and some additional fields further describing the value. @@ -32,12 +77,47 @@ * irmode.h for predefined modes */ struct tarval { - ir_mode *mode; /**< the mode of the stored value */ - const void *value; /**< the value stored in an internal way... */ - unsigned int length; /**< the length of the stored value */ + firm_kind kind; /**< must be k_tarval */ + ir_mode *mode; /**< the mode of the stored value */ + const void *value; /**< the value stored in an internal way... */ + unsigned int length; /**< the length of the stored value */ }; -/** remove tarval representing an entity that is about to be destroyed */ -void free_tarval_entity(entity *ent); +/* inline functions */ +/* + * Access routines for tarval fields ======================================== + */ +static INLINE ir_mode * +_get_tarval_mode(const tarval *tv) { + assert(tv); + return tv->mode; +} + +static INLINE tarval * +_get_tarval_bad(void) { + return tarval_bad; +} + +static INLINE tarval * +_get_tarval_undefined(void) { + return tarval_undefined; +} + +static INLINE tarval * +_get_tarval_b_false(void) { + return tarval_b_false; +} + +static INLINE tarval * +_get_tarval_b_true(void) { + return tarval_b_true; +} + +#define get_tarval_mode(tv) _get_tarval_mode(tv) +#define get_tarval_bad() _get_tarval_bad() +#define get_tarval_undefined() _get_tarval_undefined() +#define get_tarval_b_false() _get_tarval_b_false() +#define get_tarval_b_true() _get_tarval_b_true() +#define get_tarval_P_void() _get_tarval_P_void() -#endif /* _TV_T_H_ */ +#endif /* FIRM_TV_TV_T_H */