aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2010-11-03 17:07:04 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2010-11-03 10:07:04 -0700
commit5554928d3d05201ad1b0c826c5221ead783f765f (patch)
tree7a4e03609ddc7a9995461dfe806444aef488da4c /gcc/testsuite/gcc.dg/torture
parent44cb6d4df48bdc70a4a74befd4b88094b7edb06c (diff)
downloadgcc-5554928d3d05201ad1b0c826c5221ead783f765f.zip
gcc-5554928d3d05201ad1b0c826c5221ead783f765f.tar.gz
gcc-5554928d3d05201ad1b0c826c5221ead783f765f.tar.bz2
Revert revision 164552.
gcc/ 2010-11-03 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/45865 * Makefile.in (df-problems.o): Revert revision 164552. * basic-block.h (enum bb_flags): Likewise. * cfgcleanup.c (block_was_dirty): Likewise. (try_forward_edges): Likewise. (try_crossjump_bb): Likewise. (try_head_merge_bb): Likewise. (try_optimize_cfg): Likewise. (cleanup_cfg): Likewise. * df-core.c (df_set_bb_dirty): Likewise. * df-problems.c: Likewise. (df_simulate_find_uses): Likewise. (MEMREF_NORMAL, MEMREF_VOLATILE): Likewise. (find_memory, find_memory_store): Likewise. (can_move_insns_across): Likewise. * df.h (can_move_insns_across): Likewise. * ifcvt.c (find_memory): Likewise. (dead_or_predicable): Likewise. gcc/testsuite/ 2010-11-03 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/45865 * gcc.dg/pr45865.c: New. * gcc.dg/torture/pr45865.c: Likewise. * gcc.target/arm/headmerge-1.c: Revert revision 164552. * gcc.target/arm/headmerge-2.c: Likewise. * gcc.target/i386/headmerge-1.c: Likewise. * gcc.target/i386/headmerge-2.c: Likewise. From-SVN: r166259
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture')
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr45865.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr45865.c b/gcc/testsuite/gcc.dg/torture/pr45865.c
new file mode 100644
index 0000000..f2e31db
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr45865.c
@@ -0,0 +1,54 @@
+/* { dg-do compile } */
+
+typedef struct rtx_def *rtx;
+enum machine_mode {
+ VOIDmode,
+ CCFPmode,
+ CCFPUmode,
+ MAX_MACHINE_MODE
+};
+enum mode_class {
+ MODE_CC,
+ MODE_FLOAT,
+ MODE_COMPLEX_FLOAT,
+ MODE_VECTOR_FLOAT
+};
+extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
+enum rtx_code {
+ UNKNOWN,
+ GEU,
+ ORDERED,
+ CONST_INT
+};
+struct rtx_def {
+ unsigned int code: 16;
+ unsigned int mode : 8;
+};
+extern enum rtx_code reverse_condition (enum rtx_code);
+enum rtx_code
+reversed_comparison_code_parts (enum rtx_code code, rtx insn, rtx arg0,
+ rtx arg1)
+{
+ enum machine_mode mode;
+ mode = (enum machine_mode) (arg0)->mode;
+ if (mode == VOIDmode)
+ mode = (enum machine_mode) (arg1)->mode;
+ if ((mode_class[(int) (mode)]) == MODE_CC)
+ return (mode != CCFPmode && mode != CCFPUmode
+ ? reverse_condition (code)
+ : reverse_condition_maybe_unordered (code));
+ switch (code)
+ {
+ case GEU:
+ return reverse_condition (code);
+ case ORDERED:
+ return UNKNOWN;
+ }
+ if (((enum rtx_code) (arg0)->code) == CONST_INT
+ || (((enum machine_mode) (arg0)->mode) != VOIDmode
+ && ! ((mode_class[(int) (mode)]) == MODE_FLOAT
+ || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT
+ || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT)))
+ return reverse_condition (code);
+ return UNKNOWN;
+}