Commit ac2be67b by Jakub Jelinek Committed by Jakub Jelinek

re PR target/83554 (ICE: in ix86_mitigate_rop, at config/i386/i386.c:41274 with -mmitigate-rop)

	PR target/83554
	* config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
	QIreg_operand instead of register_operand predicate.
	* config/i386/i386.c (ix86_rop_should_change_byte_p,
	set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
	comments instead of -fmitigate[-_]rop.

	* gcc.target/i386/pr83554.c: New test.

Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>

From-SVN: r256268
parent 91a00d11
2018-01-04 Jakub Jelinek <jakub@redhat.com>
Uros Bizjak <ubizjak@gmail.com>
PR target/83554
* config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
QIreg_operand instead of register_operand predicate.
* config/i386/i386.c (ix86_rop_should_change_byte_p,
set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
comments instead of -fmitigate[-_]rop.
2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR bootstrap/81926 PR bootstrap/81926
......
...@@ -3089,7 +3089,7 @@ ix86_debug_options (void) ...@@ -3089,7 +3089,7 @@ ix86_debug_options (void)
} }
/* Return true if T is one of the bytes we should avoid with /* Return true if T is one of the bytes we should avoid with
-fmitigate-rop. */ -mmitigate-rop. */
static bool static bool
ix86_rop_should_change_byte_p (int t) ix86_rop_should_change_byte_p (int t)
...@@ -41175,7 +41175,7 @@ ix86_seh_fixup_eh_fallthru (void) ...@@ -41175,7 +41175,7 @@ ix86_seh_fixup_eh_fallthru (void)
/* Given a register number BASE, the lowest of a group of registers, update /* Given a register number BASE, the lowest of a group of registers, update
regsets IN and OUT with the registers that should be avoided in input regsets IN and OUT with the registers that should be avoided in input
and output operands respectively when trying to avoid generating a modr/m and output operands respectively when trying to avoid generating a modr/m
byte for -fmitigate-rop. */ byte for -mmitigate-rop. */
static void static void
set_rop_modrm_reg_bits (int base, HARD_REG_SET &in, HARD_REG_SET &out) set_rop_modrm_reg_bits (int base, HARD_REG_SET &in, HARD_REG_SET &out)
...@@ -41186,7 +41186,7 @@ set_rop_modrm_reg_bits (int base, HARD_REG_SET &in, HARD_REG_SET &out) ...@@ -41186,7 +41186,7 @@ set_rop_modrm_reg_bits (int base, HARD_REG_SET &in, HARD_REG_SET &out)
SET_HARD_REG_BIT (in, base + 3); SET_HARD_REG_BIT (in, base + 3);
} }
/* Called if -fmitigate_rop is in effect. Try to rewrite instructions so /* Called if -mmitigate-rop is in effect. Try to rewrite instructions so
that certain encodings of modr/m bytes do not occur. */ that certain encodings of modr/m bytes do not occur. */
static void static void
ix86_mitigate_rop (void) ix86_mitigate_rop (void)
...@@ -11643,7 +11643,7 @@ ...@@ -11643,7 +11643,7 @@
(set_attr "mode" "QI")]) (set_attr "mode" "QI")])
(define_split (define_split
[(set (match_operand:HI 0 "register_operand") [(set (match_operand:HI 0 "QIreg_operand")
(any_rotate:HI (match_dup 0) (const_int 8))) (any_rotate:HI (match_dup 0) (const_int 8)))
(clobber (reg:CC FLAGS_REG))] (clobber (reg:CC FLAGS_REG))]
"reload_completed "reload_completed
......
2018-01-04 Jakub Jelinek <jakub@redhat.com> 2018-01-04 Jakub Jelinek <jakub@redhat.com>
PR target/83554
* gcc.target/i386/pr83554.c: New test.
PR ipa/82352 PR ipa/82352
* g++.dg/ipa/pr82352.C (size_t): Define to __SIZE_TYPE__ instead of * g++.dg/ipa/pr82352.C (size_t): Define to __SIZE_TYPE__ instead of
long unsigned int. long unsigned int.
......
/* PR target/83554 */
/* { dg-do compile { target int128 } } */
/* { dg-options "-Os -mmitigate-rop" } */
unsigned a;
unsigned __int128
foo (unsigned char c, unsigned short d, unsigned e, unsigned long f,
unsigned __int128 g, unsigned h, unsigned short i, unsigned long j)
{
j /= (unsigned)-2;
h += h &= c == c;
h -= g;
i = i >> 8 | i << 8;
return c + d + e + f + g + h + i + j + a;
}
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