X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firmemory.h;h=f18a0a09693e6b5cc392ed12d3a6dfb1a0bb3dbc;hb=68655b9de256aa8d96434774b042cd30f352c5e7;hp=2fbe025ea5e2dc9717f3ba0baee8f17baa5b3afc;hpb=1ec30d95387eb392ba5a1adc7958ebd91383d59c;p=libfirm diff --git a/include/libfirm/irmemory.h b/include/libfirm/irmemory.h index 2fbe025ea..f18a0a096 100644 --- a/include/libfirm/irmemory.h +++ b/include/libfirm/irmemory.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -60,6 +60,11 @@ typedef ir_alias_relation (*DISAMBIGUATOR_FUNC)( ir_node *adr1, ir_mode *mode1, ir_node *adr2, ir_mode *mode2); +/** + * Returns a human readable name for an alias relation. + */ +const char *get_ir_alias_relation_name(ir_alias_relation rel); + /** * Determine the alias relation between two addresses. * @@ -72,11 +77,17 @@ typedef ir_alias_relation (*DISAMBIGUATOR_FUNC)( * The memory disambiguator tries to determine the alias state between * two memory addresses. The following rules are used: * - * - variables from different segments never alias (R1) + * - different variable from the same segment never alias (R1 a) + * - variables from different segments never alias when: * - a global variable and a local one never alias (R1 b) * - a global variable and a TLS one never alias (R1 c) * - a local variable and a TLS one never alias (R1 d) * - a local variable and a parameter never alias (R1 e) + * - a global variable and the result of a malloc routine never alias (R1 f) + * - a local variable and the result of a malloc routine never alias (R1 g) + * - a TLS variable and the result of a malloc routine never alias (R1 h) + * - a parameter and the result of a malloc routine (obtained in the + * same routine as the parameter) never alias (R1 i) * - two different variables never alias (R2) * - if one is a variable whose address has never been taken * there is no alias (R3) @@ -202,4 +213,11 @@ void set_irg_memory_disambiguator_options(ir_graph *irg, unsigned options); */ void set_irp_memory_disambiguator_options(unsigned options); +/** + * Mark all private methods, i.e. those of which all call sites are known. + * We use a very convervative estimation yet: If the address of a method is + * never taken AND its visibility is visibility_local, then it's private. + */ +void mark_private_methods(void); + #endif /* FIRM_ANA_IRMEMORY_H */