Commit d97c6333 by James E Wilson Committed by Jim Wilson

Make unsafe vector float optimizations dependent on -ffast-math.

	* tree.h (VECTOR_FLOAT_TYPE_P): New.
	(FLOAT_TYPE_P): Use it.
	* c-typeck.c (build_binary_op): After convert calls, check for
	check for ERROR_MARK operands.

From-SVN: r86088
parent 16d85b63
2004-08-16 James E Wilson <wilson@specifixinc.com>
* tree.h (VECTOR_FLOAT_TYPE_P): New.
(FLOAT_TYPE_P): Use it.
* c-typeck.c (build_binary_op): After convert calls, check for
check for ERROR_MARK operands.
2004-08-16 Zack Weinberg <zack@codesourcery.com>
* Makefile.in (BUILD_PREFIX, BUILD_PREFIX_1): Delete.
......
......@@ -7551,6 +7551,11 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
op0 = convert (result_type, op0);
if (TREE_TYPE (op1) != result_type)
op1 = convert (result_type, op1);
/* This can happen if one operand has a vector type, and the other
has a different type. */
if (TREE_CODE (op0) == ERROR_MARK || TREE_CODE (op1) == ERROR_MARK)
return error_mark_node;
}
if (build_type == NULL_TREE)
......
......@@ -668,11 +668,18 @@ extern void tree_operand_check_failed (int, enum tree_code,
(TREE_CODE (TYPE) == COMPLEX_TYPE \
&& TREE_CODE (TREE_TYPE (TYPE)) == REAL_TYPE)
/* Nonzero if TYPE represents a vector floating-point type. */
#define VECTOR_FLOAT_TYPE_P(TYPE) \
(TREE_CODE (TYPE) == VECTOR_TYPE \
&& TREE_CODE (TREE_TYPE (TYPE)) == REAL_TYPE)
/* Nonzero if TYPE represents a floating-point type, including complex
floating-point types. */
and vector floating-point types. */
#define FLOAT_TYPE_P(TYPE) \
(SCALAR_FLOAT_TYPE_P (TYPE) || COMPLEX_FLOAT_TYPE_P (TYPE))
(SCALAR_FLOAT_TYPE_P (TYPE) || COMPLEX_FLOAT_TYPE_P (TYPE) \
|| VECTOR_FLOAT_TYPE_P (TYPE))
/* Nonzero if TYPE represents an aggregate (multi-component) type. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment