diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 196804b1bd1..4da9ce4c8eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-05-23 Kazu Hirata + + PR target/27696 + * config/i386/i386.c (ix86_expand_builtin): Use + gen_sse3_monitor64 for TARGET_64BIT. + 2006-05-22 Kenneth Zadeck PR rtl-optimization/26375 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index b004415e79c..ec88a76551e 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -16151,12 +16151,15 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, op1 = expand_normal (arg1); op2 = expand_normal (arg2); if (!REG_P (op0)) - op0 = copy_to_mode_reg (SImode, op0); + op0 = copy_to_mode_reg (Pmode, op0); if (!REG_P (op1)) op1 = copy_to_mode_reg (SImode, op1); if (!REG_P (op2)) op2 = copy_to_mode_reg (SImode, op2); - emit_insn (gen_sse3_monitor (op0, op1, op2)); + if (!TARGET_64BIT) + emit_insn (gen_sse3_monitor (op0, op1, op2)); + else + emit_insn (gen_sse3_monitor64 (op0, op1, op2)); return 0; case IX86_BUILTIN_MWAIT: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2d7a552e994..bb4451dda38 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-05-23 Kazu Hirata + + PR target/27696 + * gcc.target/i386/pr27696.c: New. + 2006-05-22 Janis Johnson * gcc.dg/vmx/pr27006.c: Remove dg-do directive; use default. diff --git a/gcc/testsuite/gcc.target/i386/pr27696.c b/gcc/testsuite/gcc.target/i386/pr27696.c new file mode 100644 index 00000000000..2f281e3f7c2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr27696.c @@ -0,0 +1,11 @@ +/* PR target/27696 + The testcase below uses to trigger an ICE. */ + +/* { dg-do compile } */ +/* { dg-options "-msse3" } */ + +void +foo (void const * P, unsigned int E, unsigned int H) +{ + __builtin_ia32_monitor (P, E, H); +}