re PR c++/31078 (warning: same canonical type node for different types with const strings)
2007-04-12 Douglas Gregor <doug.gregor@gmail.com> PR c++/31078 PR c++/31103 * c-common.c (c_build_qualified_type): Set canonical type appropriately. 2007-04-12 Douglas Gregor <doug.gregor@gmail.com> PR c++/31078 * g++.dg/other/pr31078.C: New. From-SVN: r123740
This commit is contained in:
parent
a670437d92
commit
9576481824
|
@ -1,3 +1,10 @@
|
|||
2007-04-12 Douglas Gregor <doug.gregor@gmail.com>
|
||||
|
||||
PR c++/31078
|
||||
PR c++/31103
|
||||
* c-common.c (c_build_qualified_type): Set canonical type
|
||||
appropriately.
|
||||
|
||||
2007-04-12 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
|
||||
|
|
|
@ -2894,8 +2894,26 @@ c_build_qualified_type (tree type, int type_quals)
|
|||
}
|
||||
if (!t)
|
||||
{
|
||||
tree domain = TYPE_DOMAIN (type);
|
||||
|
||||
t = build_variant_type_copy (type);
|
||||
TREE_TYPE (t) = element_type;
|
||||
|
||||
if (TYPE_STRUCTURAL_EQUALITY_P (element_type)
|
||||
|| (domain && TYPE_STRUCTURAL_EQUALITY_P (domain)))
|
||||
SET_TYPE_STRUCTURAL_EQUALITY (t);
|
||||
else if (TYPE_CANONICAL (element_type) != element_type
|
||||
|| (domain && TYPE_CANONICAL (domain) != domain))
|
||||
{
|
||||
tree unqualified_canon
|
||||
= build_array_type (TYPE_CANONICAL (element_type),
|
||||
domain? TYPE_CANONICAL (domain)
|
||||
: NULL_TREE);
|
||||
TYPE_CANONICAL (t)
|
||||
= c_build_qualified_type (unqualified_canon, type_quals);
|
||||
}
|
||||
else
|
||||
TYPE_CANONICAL (t) = t;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2007-04-12 Douglas Gregor <doug.gregor@gmail.com>
|
||||
|
||||
PR c++/31078
|
||||
* g++.dg/other/pr31078.C: New.
|
||||
|
||||
2007-04-12 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/31169
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
typedef int SLONG;
|
||||
typedef char SCHAR;
|
||||
typedef short SSHORT;
|
||||
typedef char TEXT;
|
||||
typedef long ISC_STATUS;
|
||||
const SLONG gds_arg_string = 2;
|
||||
const SLONG gds_sys_request = 335544373L;
|
||||
enum jrd_blk_t
|
||||
{
|
||||
type_str, type_dcc, type_sbm, type_smb, type_blb, type_irb, type_jrn
|
||||
};
|
||||
struct blk
|
||||
{
|
||||
};
|
||||
template < class RPT, SSHORT BLOCK_TYPE = 0 > class pool_alloc_rpt:public blk
|
||||
{
|
||||
};
|
||||
class jrn:public pool_alloc_rpt < SCHAR, type_jrn >
|
||||
{
|
||||
public:ISC_STATUS * jrn_status_vector;
|
||||
TEXT jrn_server[1];
|
||||
};
|
||||
typedef jrn *JRN;
|
||||
extern void IBERR_build_status (ISC_STATUS *, ISC_STATUS, ...);
|
||||
static void
|
||||
error (ISC_STATUS * status_vector, JRN journal, int status, TEXT * string)
|
||||
{
|
||||
IBERR_build_status (status_vector, gds_sys_request, gds_arg_string, string,
|
||||
gds_arg_string, (journal) ? journal->jrn_server : "",
|
||||
0);
|
||||
}
|
Loading…
Reference in New Issue