Re: [RX] Add support for atomic operations

2016-05-28 Thread Oleg Endo
On Mon, 2016-05-09 at 15:18 +0100, Nick Clifton wrote:

> > gcc/ChangeLog:
> > * config/rx/rx-protos.h (is_interrupt_func,
> > is_fast_interrupt_func):
> > Forward declare.
> > (rx_atomic_sequence): New class.
> > * config/rx/rx.c (rx_print_operand): Use symbolic names for PSW
> > bits.
> > (is_interrupt_func, is_fast_interrupt_func): Make non-static
> > and
> > non-inline.
> > (rx_atomic_sequence::rx_atomic_sequence,
> > rx_atomic_sequence::~rx_atomic_sequence): New functions.
> > * config/rx/rx.md (CTRLREG_PSW, CTRLREG_USP, CTRLREG_FPSW,
> > CTRLREG_CPEN,
> > CTRLREG_BPSW, CTRLREG_BPC, CTRLREG_ISP, CTRLREG_FINTV,
> > CTRLREG_INTB): New constants.
> > (FETCHOP): New code iterator.
> > (fethcop_name, fetchop_name2): New iterator code attributes.
> > (QIHI): New mode iterator.
> > (atomic_exchange, atomic_exchangesi, xchg_mem,
> > atomic_fetch_si, atomic_fetch_nandsi,
> > atomic__fetchsi, atomic_nand_fetchsi): New
> > patterns.
> 
> Approved - please apply.
> 

Sorry, but my original patch was buggy.  There are two problems:

First, when interrupts are re-enabled by restoring the PSW using the
"mvtc" insn after the atomic sequence, the CC_REG is clobbered.  It's
not entirely clear to me why leaving out the CC_REG clobber in "mvtc"
is of any benefit.  Instead of adding a new "mvtc" pattern, I've just
added the clobber to the existing one.  With that wrong code issues
around atomic sequences such as atomic decrement and test for zero are
fixed.

Second, the atomic__fetchsi works only with commutative
operations because the memory operand and the register operand are
swapped in the expander.  Thus it produces wrong code for subtraction
operations.  The fix is to use a separate pattern for subtraction and
not twist the operands.

The attached patch fixes those issues.
OK for trunk?

Cheers,
Oleg

gcc/ChangeLog:
* config/rx/rx.md (FETCHOP_NO_MINUS): New code iterator.
(atomic__fetchsi): Extract minus operator into ...
(atomic_sub_fetchsi): ... this new pattern.
(mvtc): Add CC_REG clobber.Index: gcc/config/rx/rx.md
===
--- gcc/config/rx/rx.md	(revision 236761)
+++ gcc/config/rx/rx.md	(working copy)
@@ -2158,6 +2158,7 @@
 ;; Atomic operations.
 
 (define_code_iterator FETCHOP [plus minus ior xor and])
+(define_code_iterator FETCHOP_NO_MINUS [plus ior xor and])
 
 (define_code_attr fetchop_name
   [(plus "add") (minus "sub") (ior "or") (xor "xor") (and "and")])
@@ -2258,12 +2259,14 @@
 })
 
 ;; read - modify - write - return new value
+;; Because subtraction is not commutative we need to specify a different
+;; set of patterns for it.
 (define_expand "atomic__fetchsi"
   [(set (match_operand:SI 0 "register_operand")
-	(FETCHOP:SI (match_operand:SI 1 "rx_restricted_mem_operand")
-		(match_operand:SI 2 "register_operand")))
+	(FETCHOP_NO_MINUS:SI (match_operand:SI 1 "rx_restricted_mem_operand")
+			 (match_operand:SI 2 "register_operand")))
(set (match_dup 1)
-	(FETCHOP:SI (match_dup 1) (match_dup 2)))
+	(FETCHOP_NO_MINUS:SI (match_dup 1) (match_dup 2)))
(match_operand:SI 3 "const_int_operand")]		;; memory model
   ""
 {
@@ -2277,6 +2280,25 @@
   DONE;
 })
 
+(define_expand "atomic_sub_fetchsi"
+  [(set (match_operand:SI 0 "register_operand")
+	(minus:SI (match_operand:SI 1 "rx_restricted_mem_operand")
+		  (match_operand:SI 2 "rx_source_operand")))
+   (set (match_dup 1)
+	(minus:SI (match_dup 1) (match_dup 2)))
+   (match_operand:SI 3 "const_int_operand")]		;; memory model
+  ""
+{
+  {
+rx_atomic_sequence seq (current_function_decl);
+
+emit_move_insn (operands[0], operands[1]);
+emit_insn (gen_subsi3 (operands[0], operands[0], operands[2]));
+emit_move_insn (operands[1], operands[0]);
+  }
+  DONE;
+})
+
 (define_expand "atomic_nand_fetchsi"
   [(set (match_operand:SI 0 "register_operand")
 	(not:SI (and:SI (match_operand:SI 1 "rx_restricted_mem_operand")
@@ -2674,18 +2696,16 @@
 )
 
 ;; Move to control register
+;; This insn can be used in atomic sequences to restore the previous PSW
+;; and re-enable interrupts.  Because of that it always clobbers the CC_REG.
 (define_insn "mvtc"
   [(unspec_volatile:SI [(match_operand:SI 0 "immediate_operand" "i,i")
 	   (match_operand:SI 1 "nonmemory_operand" "r,i")]
-	  UNSPEC_BUILTIN_MVTC)]
+	  UNSPEC_BUILTIN_MVTC)
+   (clobber (reg:CC CC_REG))]
   ""
   "mvtc\t%1, %C0"
   [(set_attr "length" "3,7")]
-  ;; Ignore possible clobbering of the comparison flags in the
-  ;; PSW register.  This is a cc0 target so any cc0 setting
-  ;; instruction will always be paired with a cc0 user, without
-  ;; the possibility of this instruction being placed in between
-  ;; them.
 )
 
 ;; Move to interrupt priority level


Re: [C++ Patch] PR 71105 ("lambdas with default captures improperly have function pointer conversions")

2016-05-28 Thread Jason Merrill

OK for trunk and 6.

The regression is from another issue; this bug just prevents a simple 
workaround for that bug.


Jason


Re: libiberty: Don't needlessly clear xmemdup allocated memory

2016-05-28 Thread DJ Delorie

Alan Modra  writes:
>   * xmemdup.c (xmemdup): Use xmalloc rather than xcalloc.

In glibc at least, calloc can be faster than memset if the kernel is
pre-zero-ing pages.  Thus, in those cases, your change makes the code
slower by adding an unneeded memset.  Have you considered these cases?


Re: [PATCH] BFD: Fix unmatched #ifndef and #endif

2016-05-28 Thread Honggyu Kim
On Sun, May 29, 2016 at 10:26:39AM +0900, Honggyu Kim wrote:
> bfd/bfd-in.h has '#ifndef __BFD_H_SEEN__' statement at the beginning of
> the header file but do not have '#endif' at the end.
> 
>   * bfd/bfd-in.h: Add #endif statment
I just found my mistake. Sorry that I sent this to wrong mailing list.
It should have gone to gdb mailing list.

Honggyu


[PATCH] BFD: Fix unmatched #ifndef and #endif

2016-05-28 Thread Honggyu Kim
bfd/bfd-in.h has '#ifndef __BFD_H_SEEN__' statement at the beginning of
the header file but do not have '#endif' at the end.

* bfd/bfd-in.h: Add #endif statment
---
 bfd/bfd-in.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 196bd70..ba36ee1 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -1026,3 +1026,5 @@ extern bfd_boolean v850_elf_create_sections
 
 extern bfd_boolean v850_elf_set_note
   (bfd *, unsigned int, unsigned int);
+
+#endif
-- 
1.9.1



[wwwdocs] gcc-4.8/changes.html -- adjust link to manual

2016-05-28 Thread Gerald Pfeifer
This is a case of X86 vs x86, subtle, but meaningful.

Committed.

Gerald

Index: gcc-4.8/changes.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.8/changes.html,v
retrieving revision 1.137
diff -u -r1.137 changes.html
--- gcc-4.8/changes.html28 Feb 2016 20:44:14 -  1.137
+++ gcc-4.8/changes.html28 May 2016 23:55:25 -
@@ -597,7 +597,7 @@
   one string literal argument, the ISA feature.  For example,
   __builtin_cpu_supports("ssse3") returns a positive integer
   if the run-time CPU supports SSSE3 instructions.  Please refer to the https://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions";>
+  href="https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html";>
   user manual for the list of valid ISA names recognized.
 
 Caveat: If these built-in functions are called before any static


[wwwdocs] readings.html -- Tilera is now Mellanox

2016-05-28 Thread Gerald Pfeifer
Mellanox acquired Tilera and the web pages redirect accordingly;
except for those doc links, but those were easy enough to find.

Applied.

Gerald

Index: readings.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/readings.html,v
retrieving revision 1.249
diff -u -r1.249 readings.html
--- readings.html   28 May 2016 20:40:34 -  1.249
+++ readings.html   28 May 2016 23:15:11 -
@@ -273,13 +273,13 @@
  
  
  tilegx
-  Manufacturer: Tilera
-  http://www.tilera.com/scm/docs/index.html";>Documentation
+  Manufacturer: Mellanox
+  http://www.mellanox.com/repository/solutions/tile-scm/docs/";>Documentation
  
  
  tilepro
-  Manufacturer: Tilera
-  http://www.tilera.com/scm/docs/index.html";>Documentation
+  Manufacturer: Mellanox
+  http://www.mellanox.com/repository/solutions/tile-scm/docs/";>Documentation
  
  
  v850


[C++ Patch] PR 71105 ("lambdas with default captures improperly have function pointer conversions")

2016-05-28 Thread Paolo Carlini

Hi,

I think submitter is right that by the grammar even an alone 
capture-default counts as a lambda-capture, thus a conversion function 
to pointer to function should not be added. I don't see how this issue 
may count as a regression, but, assuming the analysis is correct, the 
fix should be safe enough for gcc-6-branch too.


Tested x86_64-linux.

Thanks,
Paolo.

/
/cp
2016-05-30  Paolo Carlini  

PR c++/71105
* lambda.c (maybe_add_lambda_conv_op): Early return also when
LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.

/testsuite
2016-05-30  Paolo Carlini  

PR c++/71105
* g++.dg/cpp0x/lambda/lambda-conv11.C: New.
* g++.dg/cpp1y/lambda-conv1.C: Likewise.
Index: cp/lambda.c
===
--- cp/lambda.c (revision 236852)
+++ cp/lambda.c (working copy)
@@ -872,8 +872,10 @@ maybe_add_lambda_conv_op (tree type)
   bool nested = (cfun != NULL);
   bool nested_def = decl_function_context (TYPE_MAIN_DECL (type));
   tree callop = lambda_function (type);
+  tree lam = CLASSTYPE_LAMBDA_EXPR (type);
 
-  if (LAMBDA_EXPR_CAPTURE_LIST (CLASSTYPE_LAMBDA_EXPR (type)) != NULL_TREE)
+  if (LAMBDA_EXPR_CAPTURE_LIST (lam) != NULL_TREE
+  || LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lam) != CPLD_NONE)
 return;
 
   if (processing_template_decl)
Index: testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
===
--- testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C   (revision 0)
+++ testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C   (working copy)
@@ -0,0 +1,10 @@
+// PR c++/71105
+// { dg-do compile { target c++11 } }
+
+void foo()
+{
+  int i;
+  static_cast([i]{});  // { dg-error "invalid static_cast" }
+  static_cast([=]{});  // { dg-error "invalid static_cast" }
+  static_cast([&]{});  // { dg-error "invalid static_cast" }
+}
Index: testsuite/g++.dg/cpp1y/lambda-conv1.C
===
--- testsuite/g++.dg/cpp1y/lambda-conv1.C   (revision 0)
+++ testsuite/g++.dg/cpp1y/lambda-conv1.C   (working copy)
@@ -0,0 +1,13 @@
+// PR c++/71105
+// { dg-do compile { target c++14 } }
+
+void foo()
+{
+  int i;
+  static_cast([i](auto){});  // { dg-error "invalid static_cast" 
}
+  static_cast([=](auto){});  // { dg-error "invalid static_cast" 
}
+  static_cast([&](auto){});  // { dg-error "invalid static_cast" 
}
+  static_cast([i](auto x){ return x; });  // { dg-error 
"invalid static_cast" }
+  static_cast([=](auto x){ return x; });  // { dg-error 
"invalid static_cast" }
+  static_cast([&](auto x){ return x; });  // { dg-error 
"invalid static_cast" }
+}


[wwwdocs] Use https for sourceware.org.

2016-05-28 Thread Gerald Pfeifer
Applied.

Gerald

Index: htdocs/c99status.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/c99status.html,v
retrieving revision 1.63
diff -u -r1.63 c99status.html
--- htdocs/c99status.html   6 Nov 2014 21:19:42 -   1.63
+++ htdocs/c99status.html   28 May 2016 20:26:35 -
@@ -385,11 +385,11 @@
 
 Compiler support is needed for thorough support of 
math_errhandling; see
 messages http://sourceware.org/ml/libc-hacker/2000-06/msg8.html";>1,
+href="https://sourceware.org/ml/libc-hacker/2000-06/msg8.html";>1,
 http://sourceware.org/ml/libc-hacker/2000-06/msg00014.html";>2,
+href="https://sourceware.org/ml/libc-hacker/2000-06/msg00014.html";>2,
 http://sourceware.org/ml/libc-hacker/2000-06/msg00015.html";>3
+href="https://sourceware.org/ml/libc-hacker/2000-06/msg00015.html";>3
 on this subject to libc-hacker.  The compiler needs to mark its output
 from compilations using -fno-trapping-math
 or -fno-math-errno, possibly using
Index: htdocs/readings.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/readings.html,v
retrieving revision 1.248
diff -u -r1.248 readings.html
--- htdocs/readings.html27 May 2016 20:47:27 -  1.248
+++ htdocs/readings.html28 May 2016 20:26:35 -
@@ -132,7 +132,7 @@
  fr30
Manufacturer: Fujitsu
Acronym stands for: Fujitsu RISC
-   GDB includes a http://sourceware.org/cgen/";>CGEN
+   GDB includes a https://sourceware.org/cgen/";>CGEN
generated simulator.
  
  
Index: htdocs/svnwrite.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/svnwrite.html,v
retrieving revision 1.36
diff -u -r1.36 svnwrite.html
--- htdocs/svnwrite.html23 Dec 2015 05:33:02 -  1.36
+++ htdocs/svnwrite.html28 May 2016 20:26:35 -
@@ -40,7 +40,7 @@
 overse...@gcc.gnu.org to add access to the GCC repository.
 Include the name of your sponsor and CC: her.
 If you do not have an account yet, use http://sourceware.org/cgi-bin/pdw/ps_form.cgi";>this form,
+href="https://sourceware.org/cgi-bin/pdw/ps_form.cgi";>this form,
 again specifying your sponsor.
 
 We will then provision you on  
Index: htdocs/gcc-4.5/changes.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.5/changes.html,v
retrieving revision 1.114
diff -u -r1.114 changes.html
--- htdocs/gcc-4.5/changes.html 28 May 2016 20:16:29 -  1.114
+++ htdocs/gcc-4.5/changes.html 28 May 2016 20:26:36 -
@@ -436,7 +436,7 @@
 present a more intuitive view of components when used with
 appropriately-advanced versions of GDB. For more information,
 please consult the
-more http://sourceware.org/gdb/wiki/STLSupport";>detailed
+more https://sourceware.org/gdb/wiki/STLSupport";>detailed
 description.
 
 The default behavior for comparing typeinfo names has changed,
Index: htdocs/gcc-4.6/changes.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.6/changes.html,v
retrieving revision 1.153
diff -u -r1.153 changes.html
--- htdocs/gcc-4.6/changes.html 14 Nov 2015 23:40:21 -  1.153
+++ htdocs/gcc-4.6/changes.html 28 May 2016 20:26:36 -
@@ -34,7 +34,7 @@
 
 Versions of the GNU C library up to and including 2.11.1
 included an http://sourceware.org/bugzilla/show_bug.cgi?id=10401";>incorrect
+href="https://sourceware.org/bugzilla/show_bug.cgi?id=10401";>incorrect
 implementation of the cproj function.  GCC
 optimizes its builtin cproj according to the behavior
 specified and allowed by the ISO C99 standard.  If you want to
Index: htdocs/projects/beginner.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/projects/beginner.html,v
retrieving revision 1.63
diff -u -r1.63 beginner.html
--- htdocs/projects/beginner.html   22 Jan 2016 05:28:41 -  1.63
+++ htdocs/projects/beginner.html   28 May 2016 20:26:37 -
@@ -836,7 +836,7 @@
 Implement a macro preprocessor for .md files.
 
 It should act like the macro processor for http://sourceware.org/cgen/";>CGEN, which also uses
+href="https://sourceware.org/cgen/";>CGEN, which also uses
 RTL-ish definition files.  You can start with conditional blocks and
 include files.  Remember that we already have define_constants.
 


[wwwdocs] gcc-4.5/changes.html: signalling NaN -> signaling NaN

2016-05-28 Thread Gerald Pfeifer
Jim changed this for the documentation (in gcc/doc) earlier this
month.  This mirrors his change for our web page.

Committed.

Gerald

Index: htdocs/gcc-4.5/changes.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.5/changes.html,v
retrieving revision 1.113
diff -u -r1.113 changes.html
--- htdocs/gcc-4.5/changes.html 6 Dec 2014 16:29:22 -   1.113
+++ htdocs/gcc-4.5/changes.html 28 May 2016 20:13:51 -
@@ -436,7 +436,7 @@
 present a more intuitive view of components when used with
 appropriately-advanced versions of GDB. For more information,
 please consult the
-more http://sourceware.org/gdb/wiki/STLSupport";>detailed
+more https://sourceware.org/gdb/wiki/STLSupport";>detailed
 description.
 
 The default behavior for comparing typeinfo names has changed,
@@ -458,10 +458,10 @@
 in 4.4).
 
 The -finit-real= option now also supports the value
-snan for signalling not-a-number; to be effective,
+snan for signaling not-a-number; to be effective,
 one additionally needs to enable trapping (e.g. via
 -ffpe-trap=). Note: Compile-time optimizations can
-turn a signalling NaN into a quiet one.
+turn a signaling NaN into a quiet one.
 
 The new option -fcheck= has been added with the
 options bounds, array-temps,


Re: [PATCH][wwwdocs] Improve arm and aarch64-related info in readings.html

2016-05-28 Thread Gerald Pfeifer
Hi Kyrill,

On Thu, 19 May 2016, Kyrill Tkachov wrote:
> I noticed that we have a readings.html page that has pointers to 
> documentation of various backends that GCC supports. The info on arm 
> seems a bit out of date and somewhat confusing, and there is no entry 
> for aarch64. This patch tries to address that.

I see you have not applied this yet.  In case you were waiting
for any further approvals beyond James': (a) His is sufficient
for doc and web pages around AArch64, and (b) I agree, too. :-)

Gerald


[PATCH] match.pd: optimize unsigned mul overflow check

2016-05-28 Thread Alexander Monakov
Hello,

For unsigned A, B, 'A > -1 / B' is a nice predicate for checking whether 'A*B'
overflows (or 'B && A > -1 / B' if B may be zero).  Let's optimize it to an
invocation of __builtin_mul_overflow to avoid the divide operation.

The following patch implements that as a match.pd transformation.  It looks
like there's a similar thing going on for add/sub overflow check in
tree-ssa-math-opts, but handling this in match.pd seems reasonable.

(user code using the above test would probably also compute 'A*B' a few
statements later; notably, today GCC cannot CSE plain 'A*B' to REALPART_EXPR
of the builtin call on GIMPLE; on x86 it gets cleaned up on RTL)

Thanks to Marc for helping get this in shape on the Bugzilla.

Bootstrapped and regtested on x86_64, OK for trunk?

gcc/
2016-05-28  Alexander Monakov  
Marc Glisse  

PR tree-optimization/71289
* match.pd (-1 / B < A, A > -1 / B): New transformations.

gcc/testsuite/
2016-05-28  Alexander Monakov  

PR tree-optimization/71289
* gcc.dg/pr71289.c: New test.

diff --git a/gcc/match.pd b/gcc/match.pd
index 8d05e86..953c070 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -2657,6 +2657,25 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
&& types_match (TREE_TYPE (@0), TREE_TYPE (@1)))
(out (imagpart @2) { build_zero_cst (TREE_TYPE (@0)); }
 
+/* For unsigned operands, A > -1 / B checks whether A * B would overflow.
+   Simplify it to __builtin_mul_overflow (A, B, ).  */
+/* -1 / B < A */
+(for cmp (lt ge)
+ out (ne eq)
+ (simplify
+  (cmp (trunc_div:s integer_all_onesp @1) @0)
+  (if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0)))
+   (with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); }
+(out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); })
+
+/* A > -1 / B */
+(for cmp (gt le)
+ out (ne eq)
+ (simplify
+  (cmp @0 (trunc_div:s integer_all_onesp @1))
+  (if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0)))
+   (with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); }
+(out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); })
 
 /* Simplification of math builtins.  These rules must all be optimizations
as well as IL simplifications.  If there is a possibility that the new
diff --git a/gcc/testsuite/gcc.dg/pr71289.c b/gcc/testsuite/gcc.dg/pr71289.c
new file mode 100644
index 000..39837b9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr71289.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-optimized-raw" } */
+
+int f(unsigned a, unsigned b, unsigned *c)
+{
+  if (a > -1 / b)
+return -1;
+  *c = a * b;
+  return 0;
+}
+
+void g(unsigned long long a, unsigned long long b, unsigned long long *c)
+{
+  if (a <= -1 / b)
+*c = a * b;
+}
+
+/* { dg-final { scan-tree-dump-not "trunc_div_expr" "optimized" } } */



[PATCH,DOC] doc/install.texi: Use https for shop.fsf.org.

2016-05-28 Thread Gerald Pfeifer
Committed to mainline; I'll possibly push this back to at least
GCC 6 later.

Gerald

2016-05-28  Gerald Pfeifer  

* doc/install.texi: Use https for shop.fsf.org.

Index: doc/install.texi
===
--- doc/install.texi(revision 236852)
+++ doc/install.texi(working copy)
@@ -3161,7 +3161,7 @@
 @samp{make pdf} in place of @samp{make dvi}, you can create documentation
 in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
 is included with Texinfo version 4.8 and later.  You can also
-@uref{http://shop.fsf.org/,,buy printed manuals from the
+@uref{https://shop.fsf.org/,,buy printed manuals from the
 Free Software Foundation}, though such manuals may not be for the most
 recent version of GCC@.
 


[v3 PATCH] Protect allocator-overloads of tuple-from-tuple constructors from cases that would create dangling references.

2016-05-28 Thread Ville Voutilainen
The fix to avoid binding dangling references to temporaries for tuple's
constructors that take tuples of different type didn't include the fix
for allocator overloads. That was just lazy, and I should feel ashamed.
This patch fixes it, and takes us one step further to pass libc++'s testsuite
for tuple. The added _NonNestedTuple checks could actually be folded
into the recently-added _TMCT alias, but I'll do that as a separate cleanup
patch. For now, this should do as an easy and straightforward fix.

Tested on Linux-x64.

2016-05-28  Ville Voutilainen  

Protect allocator-overloads of tuple-from-tuple constructors
from cases that would create dangling references.
* include/std/tuple (tuple(allocator_arg_t, const _Alloc&,
 const tuple<_UElements...>&), tuple(allocator_arg_t, const _Alloc&,
 tuple<_UElements...>&&)): Add a check for _NonNestedTuple.
* testsuite/20_util/tuple/cons/nested_tuple_construct.cc: Adjust.
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index ea88793..17c8204 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -769,11 +769,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
: _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { }
 
-  template::template
 _ConstructibleTuple<_UElements...>()
   && _TMCT<_UElements...>::template
-_ImplicitlyConvertibleTuple<_UElements...>(),
+_ImplicitlyConvertibleTuple<_UElements...>()
+  && _TNTC<_Dummy>::template
+_NonNestedTuple&&>(),
 bool>::type=true>
tuple(allocator_arg_t __tag, const _Alloc& __a,
  const tuple<_UElements...>& __in)
@@ -781,11 +784,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 static_cast&>(__in))
{ }
 
-  template::template
 _ConstructibleTuple<_UElements...>()
   && !_TMCT<_UElements...>::template
-_ImplicitlyConvertibleTuple<_UElements...>(),
+_ImplicitlyConvertibleTuple<_UElements...>()
+  && _TNTC<_Dummy>::template
+_NonNestedTuple&&>(),
 bool>::type=false>
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
  const tuple<_UElements...>& __in)
@@ -793,11 +799,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 static_cast&>(__in))
{ }
 
-  template::template
 _MoveConstructibleTuple<_UElements...>()
   && _TMCT<_UElements...>::template
-_ImplicitlyMoveConvertibleTuple<_UElements...>(),
+_ImplicitlyMoveConvertibleTuple<_UElements...>()
+  && _TNTC<_Dummy>::template
+_NonNestedTuple&&>(),
 bool>::type=true>
tuple(allocator_arg_t __tag, const _Alloc& __a,
  tuple<_UElements...>&& __in)
@@ -805,11 +814,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 static_cast<_Tuple_impl<0, _UElements...>&&>(__in))
{ }
 
-  template::template
 _MoveConstructibleTuple<_UElements...>()
   && !_TMCT<_UElements...>::template
-_ImplicitlyMoveConvertibleTuple<_UElements...>(),
+_ImplicitlyMoveConvertibleTuple<_UElements...>()
+  && _TNTC<_Dummy>::template
+_NonNestedTuple&&>(),
 bool>::type=false>
explicit tuple(allocator_arg_t __tag, const _Alloc& __a,
  tuple<_UElements...>&& __in)
diff --git 
a/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc 
b/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
index 39a4f73..7f64239 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
@@ -63,6 +63,32 @@ void f3()
   std::tuple> t3{std::move(t2)};
 }
 
+void f4()
+{
+  std::allocator a;
+  X v;
+  std::tuple t1{std::allocator_arg, a, v};
+  std::tuple&&> t2{std::allocator_arg, a, std::move(t1)};
+  std::tuple> t3{std::allocator_arg, a, std::move(t2)};
+}
+
+void f5()
+{
+  std::allocator a;
+  X v;
+  std::tuple t1{std::allocator_arg, a, std::move(v)};
+  std::tuple&&> t2{std::allocator_arg, a, std::move(t1)};
+  std::tuple> t3{std::allocator_arg, a, std::move(t2)};
+}
+
+void f6()
+{
+  std::allocator a;
+  std::tuple t1{std::allocator_arg, a, X{}};
+  std::tuple&&> t2{std::allocator_arg, a, std::move(t1)};
+  std::tuple> t3{std::allocator_arg, a, std::move(t2)};
+}
+
 int main()
 {
   f();
@@ -74,4 +100,13 @@ int main()
   f3();
   VERIFY(result == "DefMoveDtorMoveDtorDtor");
   result = "";
+  f4();
+  VERIFY(result == "DefCopyMoveDtorDtorDtor");
+  result = "";
+  f5();
+  VERIFY(result == "DefMoveMoveDtorDtorDtor");
+  result = "";
+  f6();
+

Use likely upper bound in ivopts

2016-05-28 Thread Jan Hubicka
Hi,
this patch updates ivopts to use likely upper bounds. Bootstrapped/regtested
x86_64-linux and comitted.  (I will update all the loop passes, but want to do
it one by one so we have performance tracked.)

Honza

* tree-ssa-loop-ivopts.c (estimated_stmt_executions_int): Use
likely_max_stmt_executions_int.
Index: tree-ssa-loop-ivopts.c
===
--- tree-ssa-loop-ivopts.c  (revision 236850)
+++ tree-ssa-loop-ivopts.c  (working copy)
@@ -127,7 +127,7 @@ avg_loop_niter (struct loop *loop)
   HOST_WIDE_INT niter = estimated_stmt_executions_int (loop);
   if (niter == -1)
 {
-  niter = max_stmt_executions_int (loop);
+  niter = likely_max_stmt_executions_int (loop);
   if (niter == -1 || niter > AVG_LOOP_NITER (loop))
return AVG_LOOP_NITER (loop);
 }


Use likely upper bound in array prefetching

2016-05-28 Thread Jan Hubicka
Hi,
this patch makes array prefetching to use likely upper bound on number of
iterations.  This restores the behaviour on prefetch-5.c testcase.

Honza

* gcc.dg/tree-ssa/prefetch-5.c: Remove xfail.
* tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
likely_max_stmt_executions_int.

Index: testsuite/gcc.dg/tree-ssa/prefetch-5.c
===
--- testsuite/gcc.dg/tree-ssa/prefetch-5.c  (revision 236815)
+++ testsuite/gcc.dg/tree-ssa/prefetch-5.c  (working copy)
@@ -56,5 +56,5 @@ int loop5 (int n, struct tail5 *x)
 
 /* Until we are able to track likely upper bounds, we can't really work out 
that
small trailing arrays should not be prefetched.  */
-/* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch" { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch" { xfail 
*-*-* } } } */
+/* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch"  } } */
+/* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch"  } } */
Index: tree-ssa-loop-prefetch.c
===
--- tree-ssa-loop-prefetch.c(revision 236815)
+++ tree-ssa-loop-prefetch.c(working copy)
@@ -1848,7 +1848,7 @@ loop_prefetch_arrays (struct loop *loop)
   ahead = (PREFETCH_LATENCY + time - 1) / time;
   est_niter = estimated_stmt_executions_int (loop);
   if (est_niter == -1)
-est_niter = max_stmt_executions_int (loop);
+est_niter = likely_max_stmt_executions_int (loop);
 
   /* Prefetching is not likely to be profitable if the trip count to ahead
  ratio is too small.  */


Fix branch predictor reporting

2016-05-28 Thread Jan Hubicka
Hi,
this patch moves call of report_predictor_hitrates after fake edges are removed 
because
those affects post dominance and consequently the prediction placement.

Bootstrapped/regtested x86_64-linux, comitted.

Honza

* profile.c (compute_branch_probabilities): Do not report hitrates
here.
(branch_prob): Report hitrates here.
* predict.c (gimple_predict_edge): Do not assert profile status;
fix formatting issues.
Index: profile.c
===
--- profile.c   (revision 236815)
+++ profile.c   (working copy)
@@ -845,8 +845,6 @@ compute_branch_probabilities (unsigned c
   fputc ('\n', dump_file);
   fputc ('\n', dump_file);
 }
-  if (dump_file && (dump_flags & TDF_DETAILS))
-report_predictor_hitrates ();
 
   free_aux_for_blocks ();
 }
@@ -1331,6 +1329,8 @@ branch_prob (void)
   values.release ();
   free_edge_list (el);
   coverage_end_function (lineno_checksum, cfg_checksum);
+  if (dump_file && (dump_flags & TDF_DETAILS))
+report_predictor_hitrates ();
 }
 
 /* Union find algorithm implementation for the basic blocks using
Index: predict.c
===
--- predict.c   (revision 236848)
+++ predict.c   (working copy)
@@ -593,10 +593,10 @@ rtl_predict_edge (edge e, enum br_predic
 void
 gimple_predict_edge (edge e, enum br_predictor predictor, int probability)
 {
-  gcc_assert (profile_status_for_fn (cfun) != PROFILE_GUESSED);
-  if ((e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun) && EDGE_COUNT (e->src->succs) >
-   1)
-  && flag_guess_branch_prob && optimize)
+  if (e->src != ENTRY_BLOCK_PTR_FOR_FN (cfun)
+  && EDGE_COUNT (e->src->succs) > 1
+  && flag_guess_branch_prob
+  && optimize)
 {
   struct edge_prediction *i = XNEW (struct edge_prediction);
   edge_prediction *&preds = bb_predictions->get_or_insert (e->src);


Re: Enable loop peeling at -O3

2016-05-28 Thread Jan Hubicka
Hello,
thanks for feedback. I updated the patch and also noticed that -fpeel-all-loops 
gives up when
upper bound is known but it is large and when the max-peel-insns is too small 
to permit
peeling max-peel-times.  This patch also updates  pr61743-2.c which are now 
peeled before
we manage to propagate the proper loop bound.

Bootstrapped/regtested x86_64-linux. OK?

Honza

* common.opt (flag_peel_all_loops): New option.
* doc/invoke.texi: (-fpeel-loops): Update documentation.
(-fpeel-all-loops): Document.
* opts.c (default_options): Add OPT_fpeel_loops to -O3+.
* toplev.c (process_options): flag_peel_all_loops implies
flag_peel_loops.
* tree-ssa-lop-ivcanon.c (try_peel_loop): Update comment; handle
-fpeel-all-loops, use likely estimates.

* gcc.dg/tree-ssa/peel1.c: New testcase.
* gcc.dg/tree-ssa/peel2.c: New testcase.
* gcc.dg/tree-ssa/pr61743-1.c: Pass -fno-peel-loops.
* gcc.dg/tree-ssa/pr61743-2.c: Pass -fno-peel-loops.
Index: common.opt
===
--- common.opt  (revision 236815)
+++ common.opt  (working copy)
@@ -1840,6 +1840,10 @@ fpeel-loops
 Common Report Var(flag_peel_loops) Optimization
 Perform loop peeling.
 
+fpeel-all-loops
+Common Report Var(flag_peel_all_loops) Optimization
+Perform loop peeling of all loops.
+
 fpeephole
 Common Report Var(flag_no_peephole,0) Optimization
 Enable machine specific peephole optimizations.
Index: doc/invoke.texi
===
--- doc/invoke.texi (revision 236815)
+++ doc/invoke.texi (working copy)
@@ -375,7 +375,7 @@ Objective-C and Objective-C++ Dialects}.
 -fno-sched-interblock -fno-sched-spec -fno-signed-zeros @gol
 -fno-toplevel-reorder -fno-trapping-math -fno-zero-initialized-in-bss @gol
 -fomit-frame-pointer -foptimize-sibling-calls @gol
--fpartial-inlining -fpeel-loops -fpredictive-commoning @gol
+-fpartial-inlining -fpeel-loops -fpeel-all-loops -fpredictive-commoning @gol
 -fprefetch-loop-arrays @gol
 -fprofile-correction @gol
 -fprofile-use -fprofile-use=@var{path} -fprofile-values @gol
@@ -6338,7 +6338,8 @@ by @option{-O2} and also turns on the @o
 @option{-fgcse-after-reload}, @option{-ftree-loop-vectorize},
 @option{-ftree-loop-distribute-patterns}, @option{-fsplit-paths}
 @option{-ftree-slp-vectorize}, @option{-fvect-cost-model},
-@option{-ftree-partial-pre} and @option{-fipa-cp-clone} options.
+@option{-ftree-partial-pre}, @option{-fpeel-loops}
+and @option{-fipa-cp-clone} options.
 
 @item -O0
 @opindex O0
@@ -8593,7 +8594,7 @@ data about values of expressions in the
 With @option{-fbranch-probabilities}, it reads back the data gathered
 from profiling values of expressions for usage in optimizations.
 
-Enabled with @option{-fprofile-generate} and @option{-fprofile-use}.
+Enabled with @option{-fprofile-generate} and/or @option{-fprofile-use}.
 
 @item -fprofile-reorder-functions
 @opindex fprofile-reorder-functions
@@ -8661,10 +8662,17 @@ the loop is entered.  This usually makes
 @item -fpeel-loops
 @opindex fpeel-loops
 Peels loops for which there is enough information that they do not
-roll much (from profile feedback).  It also turns on complete loop peeling
-(i.e.@: complete removal of loops with small constant number of iterations).
-
-Enabled with @option{-fprofile-use}.
+roll much (from profile feedback or static analysis).  It also turns on
+complete loop peeling (i.e.@: complete removal of loops with small constant
+number of iterations).
+
+Enabled with @option{-O3} and @option{-fprofile-use}.
+
+@item -fpeel-all-loops
+@opindex fpeel-all-loops
+Peel all loops, even if their number of iterations is uncertain when
+the loop is entered.  For loops with large number of iterations this leads
+to wasted code size.
 
 @item -fmove-loop-invariants
 @opindex fmove-loop-invariants
Index: opts.c
===
--- opts.c  (revision 236815)
+++ opts.c  (working copy)
@@ -535,6 +535,7 @@ static const struct default_options defa
 { OPT_LEVELS_3_PLUS, OPT_fvect_cost_model_, NULL, VECT_COST_MODEL_DYNAMIC 
},
 { OPT_LEVELS_3_PLUS, OPT_fipa_cp_clone, NULL, 1 },
 { OPT_LEVELS_3_PLUS, OPT_ftree_partial_pre, NULL, 1 },
+{ OPT_LEVELS_3_PLUS, OPT_fpeel_loops, NULL, 1 },
 
 /* -Ofast adds optimizations to -O3.  */
 { OPT_LEVELS_FAST, OPT_ffast_math, NULL, 1 },
Index: testsuite/gcc.dg/tree-ssa/peel1.c
===
--- testsuite/gcc.dg/tree-ssa/peel1.c   (revision 0)
+++ testsuite/gcc.dg/tree-ssa/peel1.c   (working copy)
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-cunroll-details" } */
+struct foo {int b; int a[3];} foo;
+void add(struct foo *a,int l)
+{
+  int i;
+  for (i=0;ia[i]++;
+}
+/* { dg-final { scan-tree-dump "Loop 1 likely iterates at most 3 times." 
"cunroll"} } *

[PATCH] Update documentation for ARM architecture

2016-05-28 Thread stefan.bruens
From: Stefan BrĂ¼ns 

  * use lexicographical ordering, as "gcc -march=foo" does
  * add armv6k, armv6z, arm6zk
  * remove ep9312, it is only valid for -mcpu
  * add armv6s-m and document it, as it is no official ARM name.

Support for the OS extension/SVC is mandatory, non-supporting
implementations are deprecated (ARMv6-M Architecture Reference Manual, B.2)
---
 gcc/doc/invoke.texi | 17 -
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 9e92133..6942b83 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -14041,15 +14041,22 @@ name to determine what kind of instructions it can 
emit when generating
 assembly code.  This option can be used in conjunction with or instead
 of the @option{-mcpu=} option.  Permissible names are: @samp{armv2},
 @samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t},
-@samp{armv5}, @samp{armv5t}, @samp{armv5e}, @samp{armv5te},
-@samp{armv6}, @samp{armv6j},
-@samp{armv6t2}, @samp{armv6z}, @samp{armv6kz}, @samp{armv6-m},
-@samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, @samp{armv7e-m},
+@samp{armv5}, @samp{armv5e}, @samp{armv5t}, @samp{armv5te},
+@samp{armv6}, @samp{armv6-m}, @samp{armv6j}, @samp{armv6k},
+@samp{armv6kz}, @samp{armv6s-m},
+@samp{armv6t2}, @samp{armv6z}, @samp{armv6zk},
+@samp{armv7}, @samp{armv7-a}, @samp{armv7-m}, @samp{armv7-r}, @samp{armv7e-m},
 @samp{armv7ve}, @samp{armv8-a}, @samp{armv8-a+crc}, @samp{armv8.1-a},
-@samp{armv8.1-a+crc}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
+@samp{armv8.1-a+crc}, @samp{iwmmxt}, @samp{iwmmxt2}.
 
 Architecture revisions older than @option{armv4t} are deprecated.
 
+@option{-march=armv6s-m} is the armv6-m architecture with support for
+the (now mandatory) SVC instruction.
+
+@option{-march=armv6zk} is an alias for armv6kz, existing for backwards
+compatibility.
+
 @option{-march=armv7ve} is the armv7-a architecture with virtualization
 extensions.
 
-- 
2.8.2



Re: [PATCH] Clean up tests where a later dg-do completely overrides another.

2016-05-28 Thread Gerald Pfeifer
On Wed, 18 May 2016, Jeff Law wrote:
> FWIW, Fedora 24 uses dejagnu-1.6.  Not sure about other distributions.

openSUSE Tumbleweed is on 1.5.3, but I'm pretty sure we can get 
that updated.  FreeBSD Ports are at 1.6.

IMHO, go ahead.

Gerald


Do not predict one edge by the same path based predictor multiple times

2016-05-28 Thread Jan Hubicka
Hi,
paths that predict control dependence edges which controls execution of some 
unlikely
piece of code may end up putting multiple predictions at one edge (such that if 
one
edge controls calls to multiple noreturn functions). These predictions can then 
combine
into quite insanely small probabilities which is not really expected behaviour.
This patch limits predict_paths_for_bb to drop at most one branch prediction on 
the
edge (and also fixes potential nonlinearlity).

Bootstrapped/regtested x86_64-linux, will commit it shortly.

Honza

* predict.c (edge_predicted_by_p): New function.
(predict_paths_for_bb): Do not put multiple predictions of the same type
on one edge.

Index: predict.c
===
--- predict.c   (revision 236815)
+++ predict.c   (working copy)
@@ -478,6 +478,31 @@ gimple_predicted_by_p (const_basic_block
   return false;
 }
 
+/* Return true if the one of outgoing edges is already predicted by
+   PREDICTOR for edge E predicted as TAKEN.  */
+
+bool
+edge_predicted_by_p (edge e, enum br_predictor predictor, bool taken)
+{
+  struct edge_prediction *i;
+  basic_block bb = e->src;
+  edge_prediction **preds = bb_predictions->get (bb);
+  if (!preds)
+return false;
+
+  int probability = predictor_info[(int) predictor].hitrate;
+
+  if (taken != TAKEN)
+probability = REG_BR_PROB_BASE - probability;
+
+  for (i = *preds; i; i = i->ep_next)
+if (i->ep_predictor == predictor
+   && i->ep_edge == e
+   && i->ep_probability == probability)
+  return true;
+  return false;
+}
+
 /* Return true when the probability of edge is reliable.
 
The profile guessing code is good at predicting branch outcome (ie.
@@ -2415,7 +2440,10 @@ predict_paths_for_bb (basic_block cur, b
 regions that are only reachable by abnormal edges.  We simply
 prevent visiting given BB twice.  */
   if (found)
-predict_edge_def (e, pred, taken);
+   {
+ if (!edge_predicted_by_p (e, pred, taken))
+predict_edge_def (e, pred, taken);
+   }
   else if (bitmap_set_bit (visited, e->src->index))
predict_paths_for_bb (e->src, e->src, pred, taken, visited);
 }


libiberty: Don't needlessly clear xmemdup allocated memory

2016-05-28 Thread Alan Modra
OK to apply?

* xmemdup.c (xmemdup): Use xmalloc rather than xcalloc.

diff --git a/libiberty/xmemdup.c b/libiberty/xmemdup.c
index aa56f0b..4602afd 100644
--- a/libiberty/xmemdup.c
+++ b/libiberty/xmemdup.c
@@ -1,4 +1,4 @@
-/* xmemdup.c -- Duplicate a memory buffer, using xcalloc.
+/* xmemdup.c -- Duplicate a memory buffer, using xmalloc.
This trivial function is in the public domain.
Jeff Garzik, September 1999.  */
 
@@ -34,6 +34,8 @@ allocated, the remaining memory is zeroed.
 PTR
 xmemdup (const PTR input, size_t copy_size, size_t alloc_size)
 {
-  PTR output = xcalloc (1, alloc_size);
+  PTR output = xmalloc (alloc_size);
+  if (alloc_size > copy_size)
+memset ((char *) output + copy_size, 0, alloc_size - copy_size);
   return (PTR) memcpy (output, input, copy_size);
 }

-- 
Alan Modra
Australia Development Lab, IBM


[wwwdocs,Java] /java -- sourceware.org now defaults to https

2016-05-28 Thread Gerald Pfeifer
Commmitted.

2016-05-28  Gerald Pfeifer  

* done.html: Convert sourceware.org links to https.
* index.html: Ditto.
* news.html: Ditto.

Index: done.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/java/done.html,v
retrieving revision 1.54
diff -u -r1.54 done.html
--- done.html   27 Jun 2015 21:51:17 -  1.54
+++ done.html   28 May 2016 13:06:34 -
@@ -162,7 +162,7 @@
   
   
   
-http://sourceware.org/rhug/";>rhug
+https://sourceware.org/rhug/";>rhug
Anthony Green and friends have set up rhug, a collection
of free software Java packages set up to build with gcj.
Both sources and RPMs are available.
Index: index.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/java/index.html,v
retrieving revision 1.178
diff -u -r1.178 index.html
--- index.html  9 Apr 2016 16:25:57 -   1.178
+++ index.html  28 May 2016 13:06:34 -
@@ -115,7 +115,7 @@
 on http://freecode.com/projects/libjit";>libjit and http://llvm.org/";>LLVM respectively. The source code for these
 JITs is available via the "gcj-jit" module of the http://sourceware.org/rhug/";>rhug repository.
+href="https://sourceware.org/rhug/";>rhug repository.
 
 
 April 4, 2006
Index: news.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/java/news.html,v
retrieving revision 1.19
diff -u -r1.19 news.html
--- news.html   6 Jul 2014 00:16:47 -   1.19
+++ news.html   28 May 2016 13:06:34 -
@@ -152,7 +152,7 @@
 
 Gary Benson from Red Hat has released 
 http://people.redhat.com/gbenson/naoko/";>Naoko: a subset 
-of the http://sourceware.org/rhug/";>rhug packages 
+of the https://sourceware.org/rhug/";>rhug packages 
 that have been repackaged for eventual inclusion in Red Hat Linux. 
 Naoko basically comprises binary RPMS of Ant, Tomcat, and their 
 dependencies built with gcj.
@@ -171,7 +171,7 @@
 of http://www.eclipse.org/";>Eclipse, a free software IDE
 written in Java, that has been compiled with a modified gcj.
 You can find more information
-http://sourceware.org/eclipse/";>here.  We'll be
+https://sourceware.org/eclipse/";>here.  We'll be
 integrating the required gcj patches in the near future.
 
 
@@ -425,7 +425,7 @@
 February 8, 2001
 
 Made use of Warren Levy's change to the
-http://sourceware.org/mauve/";>Mauve test suite to handle
+https://sourceware.org/mauve/";>Mauve test suite to handle
 regressions.
 Modifications have been made to mauve.exp to copy the newly created
 xfails file of known library failures from the source tree


Top level configure dependencies

2016-05-28 Thread Alan Modra
Applying to gcc and src repos.

* Makefile.tpl (configure): Depend on m4 files included.
* Makefile.in: Regenerate.

diff --git a/Makefile.tpl b/Makefile.tpl
index 6be6c4e..19728d2 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -1932,7 +1932,10 @@ config.status: configure
 # Rebuilding configure.
 AUTOCONF = autoconf
 $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \
-   $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4
+   $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 \
+   $(srcdir)/config/elf.m4 $(srcdir)/config/isl.m4 \
+   $(srcdir)/libtool.m4 $(srcdir)/ltoptions.m4 $(srcdir)/ltsugar.m4 \
+   $(srcdir)/ltversion.m4 $(srcdir)/lt~obsolete.m4
cd $(srcdir) && $(AUTOCONF)
 
 # --

-- 
Alan Modra
Australia Development Lab, IBM


[wwwdocs] Fix reference in projets/cfg.html

2016-05-28 Thread Gerald Pfeifer
Fix reference to "Accurate Static Branch Prediction by Value Range 
Propagation" in projects/cfg.html.

(It appears citeseer.ist.psu.edu has gone useless, more or less, so
there likely will be further fixes we'll need to make over time.)

Committed.

Gerald

Index: cfg.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/projects/cfg.html,v
retrieving revision 1.20
diff -u -r1.20 cfg.html
--- cfg.html30 Jun 2014 22:07:35 -  1.20
+++ cfg.html28 May 2016 12:58:10 -
@@ -471,7 +471,7 @@
 [4]
 
 http://citeseer.ist.psu.edu/patterson95accurate.html";>Accurate
+"http://www.lighterra.com/papers/valuerangeprop/Patterson1995-ValueRangeProp.pdf";>Accurate
 Static Branch Prediction by Value Range Propagation; Jason R. C.
 Patterson (jas...@fit.qut.edu.au), 1995
 


[wwwdocs] projects/cli.html -- remove broken link to ACOTES project

2016-05-28 Thread Gerald Pfeifer
Applied.

Gerald
Index: htdocs/projects/cli.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/projects/cli.html,v
retrieving revision 1.27
diff -u -r1.27 cli.html
--- htdocs/projects/cli.html28 Jun 2015 14:57:32 -  1.27
+++ htdocs/projects/cli.html28 May 2016 12:52:32 -
@@ -101,7 +101,7 @@
 
 
 STMicroelectronics started this project in 2006,
-as part of the European funded project http://www.hitech-projects.com/euprojects/ACOTES/";>ACOTES.
+as part of the European funded project ACOTES.
 
 
 In 2007 to explore the potential of .NET as a deployment file format, in


Re: Record likely upper bounds for loops

2016-05-28 Thread Jan Hubicka
> Hi,
> 
> On Fri, 27 May 2016, Jan Hubicka wrote:
> > Thanks, updatted and comitted.
> 
> This checkin seems to regress gcc.c-torture/execute/20050826-2.c at -Os:
> 
> gcc/xgcc -Bgcc/ ../gcc/gcc/testsuite/gcc.c-torture/execute/20050826-2.c -Os \
>   -o ./20050826-2.exe  
> 
> ./20050826-2.exe
> Aborted
> 
> (the previous revision is fine)
Sorry,
I amanged to accidentally commit the following change:

Index: tree-ssa-loop-niter.c
===
--- tree-ssa-loop-niter.c   (revision 236816)
+++ tree-ssa-loop-niter.c   (working copy)
@@ -2289,11 +2289,7 @@ number_of_iterations_exit (struct loop *
 
   /* If NITER has simplified into a constant, update MAX.  */
   if (TREE_CODE (niter->niter) == INTEGER_CST)
-{
-  niter->max = wi::to_widest (niter->niter);
-  record_niter_bound (loop, niter->max, loop_only_exit_p (loop, exit),
- true);
-}
+niter->max = wi::to_widest (niter->niter);
 
   if (integer_onep (niter->assumptions))
 return true;

I will revert it after re-testing.
Honza