From: Jan Hubicka Date: Mon, 30 Sep 2002 13:00:32 +0000 (+0200) Subject: i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=48ddd46c41cb690543ffc86828d664ce78af6122;p=gcc.git i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__. * i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__. * gcse.c (cprop_jump): Check that the register has not been modified (cprop_jump): Likewise. From-SVN: r57648 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15dfb25db7f..76793fb896f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Mon Sep 30 14:57:18 CEST 2002 Jan Hubicka + + * i386.h (TARGET_CPP_CPU_BUILTINS): Define __SSE_MATH__. + + * gcse.c (cprop_jump): Check that the register has not + been modified + (cprop_jump): Likewise. + 2002-09-30 Richard Earnshaw * arm.h (BASE_REG_CLASS): Always return LO_REGS for Thumb. diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 68fa7409b7e..af9c37fc131 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -529,6 +529,10 @@ extern int x86_prefetch_sse; builtin_define ("__SSE__"); \ if (TARGET_SSE2) \ builtin_define ("__SSE2__"); \ + if (TARGET_SSE_MATH && TARGET_SSE) \ + builtin_define ("__SSE_MATH__"); \ + if (TARGET_SSE_MATH && TARGET_SSE2) \ + builtin_define ("__SSE2_MATH__"); \ \ /* Built-ins based on -march=. */ \ if (ix86_arch == PROCESSOR_I486) \ diff --git a/gcc/gcse.c b/gcc/gcse.c index fbe3fcb1200..081275a0c7d 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -4054,7 +4054,9 @@ cprop_jump (bb, setcc, jump, from, src) /* First substitute in the INSN condition as the SET_SRC of the JUMP, then substitute that given values in this expanded JUMP. */ - if (setcc != NULL) + if (setcc != NULL + && !modified_between_p (from, setcc, jump) + && !modified_between_p (src, setcc, jump)) { rtx setcc_set = single_set (setcc); new_set = simplify_replace_rtx (SET_SRC (set), @@ -4068,7 +4070,7 @@ cprop_jump (bb, setcc, jump, from, src) /* If no simplification can be made, then try the next register. */ - if (rtx_equal_p (new, new_set)) + if (rtx_equal_p (new, new_set) || rtx_equal_p (new, SET_SRC (set))) return 0; /* If this is now a no-op delete it, otherwise this must be a valid insn. */ @@ -4076,6 +4078,11 @@ cprop_jump (bb, setcc, jump, from, src) delete_insn (jump); else { + /* Ensure the value computed inside the jump insn to be equivalent + to one computed by setcc. */ + if (setcc + && modified_in_p (new, setcc)) + return 0; if (! validate_change (jump, &SET_SRC (set), new, 0)) return 0;