This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/55093] [4.8 Regression] [x32] -maddress-mode=long failed
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 28 Oct 2012 03:22:31 +0000
- Subject: [Bug rtl-optimization/55093] [4.8 Regression] [x32] -maddress-mode=long failed
- Auto-submitted: auto-generated
- References: <bug-55093-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55093
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2012-10-28 03:22:31 UTC ---
A small testcase:
[hjl@gnu-tools-1 pr55093]$ cat x.ii
__extension__ typedef struct {
}
_G_fpos_t;
typedef unsigned int hashval_t;
typedef union tree_node *tree;
typedef union gimple_statement_d *gimple;
typedef const union tree_node *const_tree;
typedef struct edge_def *edge;
enum machine_mode { VOIDmode, };
struct double_int {
unsigned long long low;
long long high;
};
struct real_value {
};
struct real_format {
bool has_signed_zero;
};
extern const struct real_format * real_format_for_mode[1];
extern bool real_isnegzero (const struct real_value *);
enum tree_code { REAL_CST, SSA_NAME };
struct tree_base {
enum tree_code code : 16;
union {
unsigned int version;
}
u;
};
extern void tree_check_failed (const_tree, const char *, int, const char *,
...) __attribute__ ((__noreturn__));
typedef struct ssa_use_operand_d {
union {
}
loc;
}
ssa_use_operand_t;
union tree_node {
struct tree_base base;
};
inline tree tree_check (tree __t, const char *__f, int __l, const char *__g,
tree_code __c) {
if (((enum tree_code) (__t)->base.code) != __c) tree_check_failed (__t,
__f, __l, __g, __c, 0);
union basic_block_il_dependent {
}
il;
}
typedef enum {
}
gimple_stmt_iterator;
enum ssa_prop_result {
SSA_PROP_NOT_INTERESTING, SSA_PROP_INTERESTING, SSA_PROP_VARYING };
typedef enum ssa_prop_result (*ssa_prop_visit_stmt_fn) (gimple, edge *, tree
*);
typedef enum ssa_prop_result (*ssa_prop_visit_phi_fn) (gimple);
typedef bool (*ssa_prop_fold_stmt_fn) (gimple_stmt_iterator *gsi);
typedef tree (*ssa_prop_get_value_fn) (tree);
void ssa_propagate (ssa_prop_visit_stmt_fn, ssa_prop_visit_phi_fn);
bool substitute_and_fold (ssa_prop_get_value_fn, ssa_prop_fold_stmt_fn, bool);
typedef enum {
UNINITIALIZED, UNDEFINED, CONSTANT, VARYING }
ccp_lattice_t;
struct prop_value_d {
ccp_lattice_t lattice_val;
tree value;
double_int mask;
};
typedef struct prop_value_d prop_value_t;
static prop_value_t *const_val;
static void canonicalize_float_value (prop_value_t *);
static bool ccp_fold_stmt (gimple_stmt_iterator *);
static inline prop_value_t * get_value (tree var) {
prop_value_t *val;
canonicalize_float_value (val);
}
static inline tree get_constant_value (tree var) {
prop_value_t *val;
val = get_value (var);
}
static void canonicalize_float_value (prop_value_t *val) {
enum machine_mode mode;
struct real_value d;
if (val->lattice_val != CONSTANT || ((enum tree_code)
(val->value)->base.code) != REAL_CST) return;
if (!(((real_format_for_mode[ mode ])->has_signed_zero)) &&
real_isnegzero (&d) ) {
}
}
static bool set_lattice_value (tree var, prop_value_t new_val) {
prop_value_t *old_val = &const_val[(tree_check ((var), "",
0, __FUNCTION__, (SSA_NAME)))->base.u.version];
canonicalize_float_value (&new_val);
}
static enum ssa_prop_result ccp_visit_phi_node (gimple phi) {
prop_value_t new_val;
if (set_lattice_value (0, new_val)) {
}
}
static enum ssa_prop_result ccp_visit_stmt (gimple stmt, edge *taken_edge_p,
tree *output_p) {
tree def;
prop_value_t v = {
};
set_lattice_value (def, v);
}
unsigned int do_ssa_ccp (void) {
ssa_propagate (ccp_visit_stmt, ccp_visit_phi_node);
substitute_and_fold (get_constant_value, ccp_fold_stmt, true);
}
[hjl@gnu-tools-1 pr55093]$ make
/usr/gcc-4.8.0-x32/bin/gcc -O2 -mx32 -maddress-mode=long -S x.ii
x.ii: In function âbool set_lattice_value(tree, prop_value_t)â:
x.ii:87:1: internal compiler error: in print_reg, at config/i386/i386.c:14088
}
^
0xcb3e48 print_reg(rtx_def*, int, _IO_FILE*)
/export/gnu/import/git/gcc/gcc/config/i386/i386.c:14083
0xcb4185 ix86_print_operand_address
/export/gnu/import/git/gcc/gcc/config/i386/i386.c:15046
0x8799ee output_address(rtx_def*)
/export/gnu/import/git/gcc/gcc/final.c:3709
0xcba9cf ix86_print_operand(_IO_FILE*, rtx_def*, int)
/export/gnu/import/git/gcc/gcc/config/i386/i386.c:14825
0x87994e output_operand(rtx_def*, int)
/export/gnu/import/git/gcc/gcc/final.c:3693
0x87a284 output_asm_insn(char const*, rtx_def**)
/export/gnu/import/git/gcc/gcc/final.c:3572
0x87b8fa final_scan_insn(rtx_def*, _IO_FILE*, int, int, int*)
/export/gnu/import/git/gcc/gcc/final.c:2890
0x87c085 final(rtx_def*, _IO_FILE*, int)
/export/gnu/import/git/gcc/gcc/final.c:1919
0x87c469 rest_of_handle_final
/export/gnu/import/git/gcc/gcc/final.c:4321
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [x.s] Error 1
[hjl@gnu-tools-1 pr55093]$