aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2012-11-07 20:35:25 +0100
committerUros Bizjak <uros@gcc.gnu.org>2012-11-07 20:35:25 +0100
commitca78ecf41b07749728154abb7ec5fcd4bc3185d8 (patch)
treefbd2a083fdb6f4e86cf791f08354526c8d7af52f /gcc
parent17b5bd7b32d9c8fdfeffd5ab4337c26555e61ee4 (diff)
downloadgcc-ca78ecf41b07749728154abb7ec5fcd4bc3185d8.zip
gcc-ca78ecf41b07749728154abb7ec5fcd4bc3185d8.tar.gz
gcc-ca78ecf41b07749728154abb7ec5fcd4bc3185d8.tar.bz2
re PR target/55224 (FAIL: gcc.target/i386/tailcall-1.c scan-assembler jmp)
PR target/55224 * config/i386/i386.c (ix86_function_ok_for_sibcall): Put back exception to make a sibcall if one of the functions has void return type. From-SVN: r193306
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/i386.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2386017..ec33622 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -65,22 +65,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "tree-flow.h"
-/* Check if a 256bit AVX register is referenced in stores. */
-
-static void
-check_avx256_stores (rtx dest, const_rtx set, void *data)
-{
- if (((REG_P (dest) || MEM_P (dest))
- && VALID_AVX256_REG_OR_OI_MODE (GET_MODE (dest)))
- || (GET_CODE (set) == SET
- && (REG_P (SET_SRC (set)) || MEM_P (SET_SRC (set)))
- && VALID_AVX256_REG_OR_OI_MODE (GET_MODE (SET_SRC (set)))))
- {
- bool *used = (bool *) data;
- *used = true;
- }
-}
-
static rtx legitimize_dllimport_symbol (rtx, bool);
#ifndef CHECK_STACK_LIMIT
@@ -4638,6 +4622,8 @@ ix86_function_ok_for_sibcall (tree decl, tree exp)
if (!rtx_equal_p (a, b))
return false;
}
+ else if (VOID_TYPE_P (TREE_TYPE (DECL_RESULT (cfun->decl))))
+ ;
else if (!rtx_equal_p (a, b))
return false;
@@ -14954,6 +14940,22 @@ output_387_binary_op (rtx insn, rtx *operands)
return buf;
}
+/* Check if a 256bit AVX register is referenced in stores. */
+
+static void
+check_avx256_stores (rtx dest, const_rtx set, void *data)
+{
+ if (((REG_P (dest) || MEM_P (dest))
+ && VALID_AVX256_REG_OR_OI_MODE (GET_MODE (dest)))
+ || (GET_CODE (set) == SET
+ && (REG_P (SET_SRC (set)) || MEM_P (SET_SRC (set)))
+ && VALID_AVX256_REG_OR_OI_MODE (GET_MODE (SET_SRC (set)))))
+ {
+ bool *used = (bool *) data;
+ *used = true;
+ }
+}
+
/* Return needed mode for entity in optimize_mode_switching pass. */
static int