3 * File name: ir/tr/trvrfy.h
4 * Purpose: Check types and entities for correctness.
5 * Author: Michael Beck, Goetz Lindenmaier
9 * Copyright: (c) 2003 Universität Karlsruhe
10 * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
15 #include "firm_types.h"
20 * Methods to verify the type representations.
22 * @author Michael Beck, Goetz Lindenmaier
24 * Methods to verify the type representations.
25 * Copyright 2003 University of Karlsruhe.
31 * possible trvrfy() error codes
33 enum trvrfy_error_codes {
34 no_error = 0, /**< no error */
35 error_ent_not_cont = 1, /**< overwritten entity not in superclass */
36 error_null_mem = 2, /**< compound contains NULL member */
37 error_const_on_wrong_irg = 3, /**< constant placed on wrong IRG */
38 error_existent_entity_without_irg = 4, /**< Method entities with pecularity_exist must have an irg */
39 error_wrong_ent_overwrites = 5, /**< number of entity overwrites exceeds number of class overwrites */
40 error_inherited_ent_without_const = 6, /**< inherited method entity not pointing to existent entity */
41 error_glob_ent_allocation = 7, /**< wrong allocation of a global entity */
42 error_ent_const_mode = 8 /**< Mode of constant in entity did not match entities type. */
49 * 0 if no error encountered
51 int check_type(ir_type *tp);
54 * Check an entity. Currently, we check only if initialized constants
55 * are build on the const irg graph.
58 * 0 if no error encountered
59 * != 0 a trvrfy_error_codes code
61 int check_entity(entity *ent);
64 * Walks the type information and performs a set of sanity checks.
66 * Currently, the following checks are executed:
67 * - values of initialized entities must be allocated on the constant IRG
68 * - class types: doesn't have NULL members
69 * - class types: all overwrites are existent in the super type
72 * 0 if graph is correct
78 * If NDEBUG is defined performs nothing, else calls the tr_vrfy() function.
83 #define TR_VRFY() tr_vrfy()