mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/70430 (Incorrect result for logical "and" operation with mixed vector and scalar)
2016-03-31 Richard Biener <rguenther@suse.de> PR c++/70430 * typeck.c (cp_build_binary_op): Fix operand order of vector conditional in truth op handling. * g++.dg/ext/vector30.C: New testcase. From-SVN: r234611
This commit is contained in:
parent
4a4932eefd
commit
efc3536f46
|
|
@ -1,3 +1,9 @@
|
||||||
|
2016-03-31 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR c++/70430
|
||||||
|
* typeck.c (cp_build_binary_op): Fix operand order of vector
|
||||||
|
conditional in truth op handling.
|
||||||
|
|
||||||
2016-03-29 Jason Merrill <jason@redhat.com>
|
2016-03-29 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/70353
|
PR c++/70353
|
||||||
|
|
|
||||||
|
|
@ -4364,7 +4364,7 @@ cp_build_binary_op (location_t location,
|
||||||
{
|
{
|
||||||
tree m1 = build_all_ones_cst (TREE_TYPE (op0));
|
tree m1 = build_all_ones_cst (TREE_TYPE (op0));
|
||||||
tree z = build_zero_cst (TREE_TYPE (op0));
|
tree z = build_zero_cst (TREE_TYPE (op0));
|
||||||
op1 = build_conditional_expr (location, op1, z, m1, complain);
|
op1 = build_conditional_expr (location, op1, m1, z, complain);
|
||||||
}
|
}
|
||||||
else if (!COMPARISON_CLASS_P (op1))
|
else if (!COMPARISON_CLASS_P (op1))
|
||||||
op1 = cp_build_binary_op (EXPR_LOCATION (op1), NE_EXPR, op1,
|
op1 = cp_build_binary_op (EXPR_LOCATION (op1), NE_EXPR, op1,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-03-31 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR c++/70430
|
||||||
|
* g++.dg/ext/vector30.C: New testcase.
|
||||||
|
|
||||||
2016-03-30 Dominique d'Humieres <dominiq@lps.ens.fr>
|
2016-03-30 Dominique d'Humieres <dominiq@lps.ens.fr>
|
||||||
Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
// PR c++/70430
|
||||||
|
// { dg-do run }
|
||||||
|
extern "C" void abort (void);
|
||||||
|
typedef int v4si __attribute__ ((vector_size (16)));
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
v4si b = {1,0,-1,2}, c;
|
||||||
|
c = b && 1;
|
||||||
|
if (c[0] != -1 || c[1] != 0 || c[2] != -1 || c[3] != -1)
|
||||||
|
abort ();
|
||||||
|
c = b && 0;
|
||||||
|
if (c[0] != 0 || c[1] != 0 || c[2] != 0 || c[3] != 0)
|
||||||
|
abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue