re PR c/49644 (post-increment of promoted operand is incorrect.)
PR c/49644 * c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with one non-complex and one complex argument, call c_save_expr on both operands. * gcc.c-torture/execute/pr49644.c: New test. From-SVN: r176004
This commit is contained in:
parent
489319d5aa
commit
c4603e7ce0
|
@ -1,3 +1,10 @@
|
||||||
|
2011-07-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/49644
|
||||||
|
* c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
|
||||||
|
one non-complex and one complex argument, call c_save_expr on both
|
||||||
|
operands.
|
||||||
|
|
||||||
2011-07-07 Martin Jambor <mjambor@suse.cz>
|
2011-07-07 Martin Jambor <mjambor@suse.cz>
|
||||||
|
|
||||||
PR middle-end/49495
|
PR middle-end/49495
|
||||||
|
|
|
@ -10040,6 +10040,7 @@ build_binary_op (location_t location, enum tree_code code,
|
||||||
{
|
{
|
||||||
case MULT_EXPR:
|
case MULT_EXPR:
|
||||||
case TRUNC_DIV_EXPR:
|
case TRUNC_DIV_EXPR:
|
||||||
|
op1 = c_save_expr (op1);
|
||||||
imag = build2 (resultcode, real_type, imag, op1);
|
imag = build2 (resultcode, real_type, imag, op1);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
case PLUS_EXPR:
|
case PLUS_EXPR:
|
||||||
|
@ -10060,6 +10061,7 @@ build_binary_op (location_t location, enum tree_code code,
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case MULT_EXPR:
|
case MULT_EXPR:
|
||||||
|
op0 = c_save_expr (op0);
|
||||||
imag = build2 (resultcode, real_type, op0, imag);
|
imag = build2 (resultcode, real_type, op0, imag);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
case PLUS_EXPR:
|
case PLUS_EXPR:
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-07-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/49644
|
||||||
|
* gcc.c-torture/execute/pr49644.c: New test.
|
||||||
|
|
||||||
2011-07-07 H.J. Lu <hongjiu.lu@intel.com>
|
2011-07-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* lib/target-supports.exp (check_effective_target_ia32): New.
|
* lib/target-supports.exp (check_effective_target_ia32): New.
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
/* PR c/49644 */
|
||||||
|
|
||||||
|
extern void abort (void);
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
_Complex double a[12], *c = a, s = 3.0 + 1.0i;
|
||||||
|
double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b;
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
*c++ = *d++ * s;
|
||||||
|
if (c != a + 6 || d != b + 6)
|
||||||
|
abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue