diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b2b76adca6d7f43665522d90332911ebc6ea20f..116d6c4d6cc636db6dff82f7e8ac4de21f580b5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-04-11 Steve Ellcey <sellcey@mips.com> + Jakub Jelinek <jakub@redhat.com> + + PR middle-end/60556 + * expr.c (convert_move): Use emit_store_flag_force instead of + emit_store_flag. Pass lowpart_mode instead of VOIDmode as 5th + argument to it. + 2014-04-11 Richard Biener <rguenther@suse.de> PR middle-end/60797 diff --git a/gcc/expr.c b/gcc/expr.c index ebf136ed5a30ff9e55b009586260e8f4f3a992e7..72e440119e433197d6a322e36afcdf1edd6db708 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -551,9 +551,9 @@ convert_move (rtx to, rtx from, int unsignedp) if (unsignedp) fill_value = const0_rtx; else - fill_value = emit_store_flag (gen_reg_rtx (word_mode), - LT, lowfrom, const0_rtx, - VOIDmode, 0, -1); + fill_value = emit_store_flag_force (gen_reg_rtx (word_mode), + LT, lowfrom, const0_rtx, + lowpart_mode, 0, -1); /* Fill the remaining words. */ for (i = GET_MODE_SIZE (lowpart_mode) / UNITS_PER_WORD; i < nwords; i++) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ea812303c35d163ec7efe7d0ba411d7f41c6f7d4..0675d469f94564df678976ba77d0e9c89207af2b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-04-11 Steve Ellcey <sellcey@mips.com> + Jakub Jelinek <jakub@redhat.com> + + PR middle-end/60556 + * gcc.c-torture/compile/pr60556.c: New test. + 2014-04-11 Richard Biener <rguenther@suse.de> PR middle-end/60797 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr60556.c b/gcc/testsuite/gcc.c-torture/compile/pr60556.c new file mode 100644 index 0000000000000000000000000000000000000000..c775432f8bb084f9a61c35c905db7c32ed605cb9 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr60556.c @@ -0,0 +1,8 @@ +/* PR middle-end/60556 */ + +int g (int); + +unsigned long long f (void) +{ + return (unsigned long long)(long)&g; +}