invoke.texi (Option Summary, [...]): Document -mserialize-volatile and -mno-serialize-volatile Xtensa options.
* doc/invoke.texi (Option Summary, Xtensa Options): Document -mserialize-volatile and -mno-serialize-volatile Xtensa options. * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions unless TARGET_SERIALIZE_VOLATILE is enabled. * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise. * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE. * config/xtensa/xtensa.opt (mserialize_volatile): New option. From-SVN: r133234
This commit is contained in:
parent
45de3658e9
commit
66e58b3338
@ -1,3 +1,13 @@
|
||||
2008-03-14 Bob Wilson <bob.wilson@acm.org>
|
||||
|
||||
* doc/invoke.texi (Option Summary, Xtensa Options): Document
|
||||
-mserialize-volatile and -mno-serialize-volatile Xtensa options.
|
||||
* config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
|
||||
unless TARGET_SERIALIZE_VOLATILE is enabled.
|
||||
* config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
|
||||
* config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
|
||||
* config/xtensa/xtensa.opt (mserialize_volatile): New option.
|
||||
|
||||
2008-03-14 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/34172
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Subroutines for insn-output.c for Tensilica's Xtensa architecture.
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
|
||||
|
||||
@ -1991,7 +1991,7 @@ print_operand (FILE *file, rtx x, int letter)
|
||||
{
|
||||
/* For a volatile memory reference, emit a MEMW before the
|
||||
load or store. */
|
||||
if (MEM_VOLATILE_P (x))
|
||||
if (MEM_VOLATILE_P (x) && TARGET_SERIALIZE_VOLATILE)
|
||||
fprintf (file, "memw\n\t");
|
||||
}
|
||||
else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Definitions of Tensilica's Xtensa target machine for GNU compiler.
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
|
||||
|
||||
@ -74,8 +74,9 @@ extern unsigned xtensa_current_frame_size;
|
||||
#define TARGET_S32C1I XCHAL_HAVE_S32C1I
|
||||
#define TARGET_ABSOLUTE_LITERALS XSHAL_USE_ABSOLUTE_LITERALS
|
||||
|
||||
#define TARGET_DEFAULT ( \
|
||||
(XCHAL_HAVE_L32R ? 0 : MASK_CONST16))
|
||||
#define TARGET_DEFAULT \
|
||||
((XCHAL_HAVE_L32R ? 0 : MASK_CONST16) | \
|
||||
MASK_SERIALIZE_VOLATILE)
|
||||
|
||||
#define OVERRIDE_OPTIONS override_options ()
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
;; GCC machine description for Tensilica's Xtensa architecture.
|
||||
;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
||||
;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
;; Free Software Foundation, Inc.
|
||||
;; Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
|
||||
|
||||
@ -928,7 +928,7 @@
|
||||
(plus:SI (match_dup 1) (match_dup 2)))]
|
||||
"TARGET_HARD_FLOAT"
|
||||
{
|
||||
if (volatile_refs_p (PATTERN (insn)))
|
||||
if (TARGET_SERIALIZE_VOLATILE && volatile_refs_p (PATTERN (insn)))
|
||||
output_asm_insn ("memw", operands);
|
||||
return "lsiu\t%0, %1, %2";
|
||||
}
|
||||
@ -944,7 +944,7 @@
|
||||
(plus:SI (match_dup 0) (match_dup 1)))]
|
||||
"TARGET_HARD_FLOAT"
|
||||
{
|
||||
if (volatile_refs_p (PATTERN (insn)))
|
||||
if (TARGET_SERIALIZE_VOLATILE && volatile_refs_p (PATTERN (insn)))
|
||||
output_asm_insn ("memw", operands);
|
||||
return "ssiu\t%2, %0, %1";
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
; Options for the Tensilica Xtensa port of the compiler.
|
||||
|
||||
; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
|
||||
; Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
;
|
||||
; This file is part of GCC.
|
||||
;
|
||||
@ -37,3 +37,7 @@ Automatically align branch targets to reduce branch penalties
|
||||
mtext-section-literals
|
||||
Target
|
||||
Intersperse literal pools with code in the text section
|
||||
|
||||
mserialize-volatile
|
||||
Target Report Mask(SERIALIZE_VOLATILE)
|
||||
-mno-serialize-volatile Do not serialize volatile memory references with MEMW instructions
|
||||
|
@ -800,6 +800,7 @@ See i386 and x86-64 Options.
|
||||
@emph{Xtensa Options}
|
||||
@gccoptlist{-mconst16 -mno-const16 @gol
|
||||
-mfused-madd -mno-fused-madd @gol
|
||||
-mserialize-volatile -mno-serialize-volatile @gol
|
||||
-mtext-section-literals -mno-text-section-literals @gol
|
||||
-mtarget-align -mno-target-align @gol
|
||||
-mlongcalls -mno-longcalls}
|
||||
@ -14694,6 +14695,15 @@ add/subtract instructions also ensures that the program output is not
|
||||
sensitive to the compiler's ability to combine multiply and add/subtract
|
||||
operations.
|
||||
|
||||
@item -mserialize-volatile
|
||||
@itemx -mno-serialize-volatile
|
||||
@opindex mserialize-volatile
|
||||
@opindex mno-serialize-volatile
|
||||
When this option is enabled, GCC inserts @code{MEMW} instructions before
|
||||
@code{volatile} memory references to guarantee sequential consistency.
|
||||
The default is @option{-mserialize-volatile}. Use
|
||||
@option{-mno-serialize-volatile} to omit the @code{MEMW} instructions.
|
||||
|
||||
@item -mtext-section-literals
|
||||
@itemx -mno-text-section-literals
|
||||
@opindex mtext-section-literals
|
||||
|
Loading…
Reference in New Issue
Block a user