[PATCH, wide-int] change fixed_wide_int_storage from class to struct

2016-05-15 Thread Gerald Pfeifer
While not a bug according to the language of the C++ standard, this
causes dozens of warnings when building GCC with clang, and there is
not benefit of mixing struct and class like this.

Mike, when I had a similar case a while ago you sounded pretty 
supportive of this kind of change.  Would you be fine to pre-approve
such changes?

Gerald

2016-05-15  Gerald Pfeifer  

* wide-int.h: Change fixed_wide_int_storage from class to struct.

Index: wide-int.h
===
--- wide-int.h  (revision 236255)
+++ wide-int.h  (working copy)
@@ -294,7 +294,7 @@
   HOST_WIDE_INT *VAL = RESULT.write_val ()
 
 template  class generic_wide_int;
-template  struct fixed_wide_int_storage;
+template  class fixed_wide_int_storage;
 class wide_int_storage;
 
 /* An N-bit integer.  Until we can use typedef templates, use this instead.  */


Re: [PATCH, wide-int] change fixed_wide_int_storage from class to struct

2016-05-15 Thread Andrew Pinski
On Sun, May 15, 2016 at 12:03 PM, Gerald Pfeifer  wrote:
> While not a bug according to the language of the C++ standard, this
> causes dozens of warnings when building GCC with clang, and there is
> not benefit of mixing struct and class like this.
>
> Mike, when I had a similar case a while ago you sounded pretty
> supportive of this kind of change.  Would you be fine to pre-approve
> such changes?

Can we recommend that clang disable this warning by default instead?
Or use an option flag to disable the warning while compiling gcc?

Thanks,
Andrew

>
> Gerald
>
> 2016-05-15  Gerald Pfeifer  
>
> * wide-int.h: Change fixed_wide_int_storage from class to struct.
>
> Index: wide-int.h
> ===
> --- wide-int.h  (revision 236255)
> +++ wide-int.h  (working copy)
> @@ -294,7 +294,7 @@
>HOST_WIDE_INT *VAL = RESULT.write_val ()
>
>  template  class generic_wide_int;
> -template  struct fixed_wide_int_storage;
> +template  class fixed_wide_int_storage;
>  class wide_int_storage;
>
>  /* An N-bit integer.  Until we can use typedef templates, use this instead.  
> */


Re: C, C++: New warning for memset without multiply by elt size

2016-05-15 Thread Gerald Pfeifer
For the record, this new warning/code found at least three actual 
bugs in Wine (two of which were in the testsuite, but still).


Definitely a useful addition.

Gerald


Properly set target/optimization options for thunks in free_lang_data

2016-05-15 Thread Jan Hubicka
Hi,
this patch updates free lang data to also set target/optimization flags for
thunks. This is because we eventually may produce a body for the thunk and it 
needs
to be compiled with correct settings.

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

Honza

* tree.c (free_lang_data_in_decl): Also set target/optimization flags
for thunks.
Index: tree.c
===
--- tree.c  (revision 236211)
+++ tree.c  (working copy)
@@ -5418,7 +5418,7 @@ free_lang_data_in_decl (tree decl)
  DECL_INITIAL (decl) = error_mark_node;
}
}
-  if (gimple_has_body_p (decl))
+  if (gimple_has_body_p (decl) || (node && node->thunk.thunk_p))
{
  tree t;
 


Fix partitioning of inline thunks

2016-05-15 Thread Jan Hubicka
Hi,
this patch fixes the partitioner WRT inlined thunks. When thunk is offline, we
must place it into the same unit as its target (because ASM thunk output 
machinery
is not designed for non-local calls). However when thunk is inlined it behave
like other functions and in particular we do not want to drag inline clone into
an unit where it is defined.

I hope this fixed the xalancbmk ICE reported, but I did not double check since
I do not have build tree handy.  It fixed Firefox ICE at sameplace that appears
after applying the previous patch.

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

* lto-cgraph.c (compute_ltrans_boundary, output_symtab): Fix handling
of inline thunks

* lto-partition.c (add_symbol_to_partition_1): Likewise.
Index: lto-cgraph.c
===
--- lto-cgraph.c(revision 236211)
+++ lto-cgraph.c(working copy)
@@ -972,7 +972,7 @@ compute_ltrans_boundary (lto_symtab_enco
   if (node->alias && node->analyzed)
create_references (encoder, node);
   if (cnode
- && cnode->thunk.thunk_p)
+ && cnode->thunk.thunk_p && !cnode->global.inlined_to)
add_node_to (encoder, cnode->callees->callee, false);
   while (node->transparent_alias && node->analyzed)
{
@@ -1028,7 +1028,7 @@ output_symtab (void)
 {
   node = dyn_cast  (lto_symtab_encoder_deref (encoder, i));
   if (node
- && (node->thunk.thunk_p
+ && ((node->thunk.thunk_p && !node->global.inlined_to)
  || lto_symtab_encoder_in_partition_p (encoder, node)))
{
  output_outgoing_cgraph_edges (node->callees, ob, encoder);
Index: lto/lto-partition.c
===
--- lto/lto-partition.c (revision 236211)
+++ lto/lto-partition.c (working copy)
@@ -163,7 +163,7 @@ add_symbol_to_partition_1 (ltrans_partit
 
   /* Add all thunks associated with the function.  */
   for (e = cnode->callers; e; e = e->next_caller)
-   if (e->caller->thunk.thunk_p)
+   if (e->caller->thunk.thunk_p && !e->caller->global.inlined_to)
  add_symbol_to_partition_1 (part, e->caller);
 
   /* Instrumented version is actually the same function.


Fix ICE while inlining thunks

2016-05-15 Thread Jan Hubicka
Hi,
when inlining thunks we incorrectly update edge caches of callees. This is 
because
bogus function_symbol call. edge->callee is the inline function body and that 
is never
alias.

Bootstrapped/regtste x86_64-linux, will commit it tomorrow.

* ipa-inline.c (report_inline_failed_reason): Look into thunks, too
(inline_small_functions): Do not look for function symbol when resetting
caches.

Index: ipa-inline.c
===
--- ipa-inline.c(revision 236211)
+++ ipa-inline.c(working copy)
@@ -233,11 +233,11 @@ report_inline_failed_reason (struct cgra
   if ((e->inline_failed == CIF_TARGET_OPTION_MISMATCH
   || e->inline_failed == CIF_OPTIMIZATION_MISMATCH)
  && e->caller->lto_file_data
- && e->callee->function_symbol ()->lto_file_data)
+ && e->callee->ultimate_alias_target ()->lto_file_data)
{
  fprintf (dump_file, "  LTO objects: %s, %s\n",
   e->caller->lto_file_data->file_name,
-  e->callee->function_symbol ()->lto_file_data->file_name);
+  e->callee->ultimate_alias_target 
()->lto_file_data->file_name);
}
   if (e->inline_failed == CIF_TARGET_OPTION_MISMATCH)
cl_target_option_print_diff
@@ -2027,7 +2027,7 @@ inline_small_functions (void)
  inline_call (edge, true, &new_indirect_edges, &overall_size, true);
  add_new_edges_to_heap (&edge_heap, new_indirect_edges);
 
- reset_edge_caches (edge->callee->function_symbol ());
+ reset_edge_caches (edge->callee);
 
  update_callee_keys (&edge_heap, where, updated_nodes);
}


Enable inlining into thunks

2016-05-15 Thread Jan Hubicka
Hi,
this patch teach inliner to inline into thunks. This is easy to do - all we need
is to produce a gimple body when we decide to do so. This fixes some ages old 
xfails
and enables some 40k inlines in Firefox. Not all those inlines are win, because
the codst model of thunks is wrong.  We need to model that thunk calls are 
really just
simple jumps. I will do that incrementally.

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

Honza

* ipa-inline-analysis.c (compute_inline_parameters): Be more reailistic
on estimating thunk bodies; do not set inline_failed to CIF_THUNK for
calls from thunk.
* ipa-inline-transform.c (inline_call): When inlining into thunk produce
gimple body.
(preserve_function_body_p): No need to preserve function body
* cif-codes.def (CIF_THUNK): Remove.
* g++.dg/ipa/ivinline-7.C
* g++.dg/ipa/ivinline-9.C

Index: ipa-inline-analysis.c
===
--- ipa-inline-analysis.c   (revision 236211)
+++ ipa-inline-analysis.c   (working copy)
@@ -2932,11 +2932,13 @@ compute_inline_parameters (struct cgraph
   struct inline_edge_summary *es = inline_edge_summary (node->callees);
   struct predicate t = true_predicate ();
 
-  node->callees->inline_failed = CIF_THUNK;
   node->local.can_change_signature = false;
-  es->call_stmt_size = INLINE_SIZE_SCALE;
-  es->call_stmt_time = INLINE_TIME_SCALE;
-  account_size_time (info, INLINE_SIZE_SCALE * 2, INLINE_TIME_SCALE * 2, 
&t);
+  es->call_stmt_size = eni_size_weights.call_cost;
+  es->call_stmt_time = eni_time_weights.call_cost;
+  account_size_time (info, INLINE_SIZE_SCALE * 2,
+INLINE_TIME_SCALE * 2, &t);
+  t = not_inlined_predicate ();
+  account_size_time (info, 2 * INLINE_SIZE_SCALE, 0, &t);
   inline_update_overall_summary (node);
   info->self_size = info->size;
   info->self_time = info->time;
* ipa-inline-transform.c (inline_call): When inlining into thunk turn
it into gimple function.
(preserve_function_body_p): No need to preserve body to inline thunk.

Index: ipa-inline-transform.c
===
--- ipa-inline-transform.c  (revision 236211)
+++ ipa-inline-transform.c  (working copy)
@@ -314,12 +314,20 @@ inline_call (struct cgraph_edge *e, bool
   /* Don't even think of inlining inline clone.  */
   gcc_assert (!callee->global.inlined_to);
 
-  e->inline_failed = CIF_OK;
-  DECL_POSSIBLY_INLINED (callee->decl) = true;
-
   to = e->caller;
   if (to->global.inlined_to)
 to = to->global.inlined_to;
+  if (to->thunk.thunk_p)
+{
+  if (in_lto_p)
+   to->get_untransformed_body ();
+  to->expand_thunk (false, true);
+  e = to->callees;
+}
+
+
+  e->inline_failed = CIF_OK;
+  DECL_POSSIBLY_INLINED (callee->decl) = true;
 
   if (DECL_FUNCTION_PERSONALITY (callee->decl))
 DECL_FUNCTION_PERSONALITY (to->decl)
@@ -580,7 +588,7 @@ preserve_function_body_p (struct cgraph_
   gcc_assert (!node->alias && !node->thunk.thunk_p);
 
   /* Look if there is any clone around.  */
-  if (node->clones)
+  if (node->clones && !node->clones->thunk.thunk_p)
 return true;
   return false;
 }
Index: cif-code.def
===
--- cif-code.def(revision 236211)
+++ cif-code.def(working copy)
@@ -95,10 +95,6 @@ DEFCIFCODE(MISMATCHED_ARGUMENTS, CIF_FIN
 DEFCIFCODE(LTO_MISMATCHED_DECLARATIONS, CIF_FINAL_ERROR,
   N_("mismatched declarations during linktime optimization"))
 
-/* Caller is thunk.  */
-DEFCIFCODE(THUNK, CIF_FINAL_ERROR, 
-  N_("thunk call"))
-
 /* Call was originally indirect.  */
 DEFCIFCODE(ORIGINALLY_INDIRECT_CALL, CIF_FINAL_NORMAL,
   N_("originally indirect function call not considered for inlining"))
Index: testsuite/g++.dg/ipa/ivinline-7.C
===
--- testsuite/g++.dg/ipa/ivinline-7.C   (revision 236211)
+++ testsuite/g++.dg/ipa/ivinline-7.C   (working copy)
@@ -76,4 +76,4 @@ int main (int argc, char *argv[])
 }
 
 /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known 
target.*B::.*foo"  "inline"  } } */
-/* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  
"inline"  { xfail *-*-* } } } */
+/* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  
"inline"  } } */
Index: testsuite/g++.dg/ipa/ivinline-9.C
===
--- testsuite/g++.dg/ipa/ivinline-9.C   (revision 236211)
+++ testsuite/g++.dg/ipa/ivinline-9.C   (working copy)
@@ -90,4 +90,4 @@ int main (int argc, char *argv[])
 }
 
 /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known 

[RFC] Type promotion pass and elimination of zext/sext

2016-05-15 Thread Kugan Vivekanandarajah
Hi Richard,

Now that stage1 is open, I would like to get the type promotion passes
reviewed again. I have tested the patches on aarch64, x86-64, and
ppc64le without any new execution failures. There some test-cases that
fails for patterns. I will address them after getting feedback on the
basic structure.


I am attaching the pass itself for the review. Other needed patches
are in http://people.linaro.org/~kugan.vivekanandarajah/pass/
You reviewed some of them. But I will post again after the main pass
is acceptable. They all have to go in together.


Couple of changes from last time:

1. When we promote SSA as part of promote_ssa, we either promote the
definition. Or create a copy stmt that is inserted after the stmt that
define it. i.e, we want to promote the SSA and reflect the promotion
on all the uses (we promote in place). We do this because, we don’t
want to change all the uses.

+/* Promote definition DEF to promoted type.  If the stmt that defines def
+   is def_stmt, make the type of def promoted type.  If the stmt is such
+   that, result of the def_stmt cannot be of promoted type, create a new_def
+   of the original_type and make the def_stmt assign its value to newdef.
+   Then, create a NOP_EXPR to convert new_def to def of promoted type.
+
+   For example, for stmt with original_type char and promoted_type int:
+char _1 = mem;
+becomes:
+char _2 = mem;
+int _1 = (int)_2;
+
+   If the def_stmt allows def to be promoted, promote def in-place
+   (and its arguments when needed).
+
+   For example:
+char _3 = _1 + _2;
+becomes:
+int _3 = _1 + _2;
+   Here, _1 and _2 will also be promoted.  */
+

However, if the defining stmt has to be the last stmt in the basic
block (eg, stmt that can throw), and if there is more than one normal
edges where we use this value, we cant insert the copy in all the
edges. Please note that the copy stmt copes the value to promoted SSA
with the same name.

Therefore I had to return false in this case for promote_ssa and fixup
uses. I ran into this while testing ppc64le. I am sure it can happen
in other cases.


2. When the SSA defining statement is such that we cannot promote the
definition as part of the stmt and we make a copy, I am also recording
the original type copy and promoted copy to so that we can use them
when we need. This can be improved. I will do that based on the
feedback.


Please let me know what you thing.

Thanks,
Kugan
From 332e0e9f938c6af50e826d8224d07ebf3678a0e0 Mon Sep 17 00:00:00 2001
From: Kugan Vivekanandarajah 
Date: Fri, 13 May 2016 13:41:01 +1000
Subject: [PATCH 4/4] Add new type promotion pass

---
 gcc/ChangeLog |  10 +
 gcc/Makefile.in   |   1 +
 gcc/common.opt|   4 +
 gcc/doc/invoke.texi   |  10 +
 gcc/gimple-ssa-type-promote.c | 958 ++
 gcc/passes.def|   1 +
 gcc/timevar.def   |   1 +
 gcc/tree-pass.h   |   1 +
 8 files changed, 986 insertions(+)
 create mode 100644 gcc/gimple-ssa-type-promote.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b31a444..5f2a90c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,15 @@
 2016-05-12  Kugan Vivekanandarajah  
 
+	* Makefile.in: Add gimple-ssa-type-promote.o.
+	* common.opt: New option -ftree-type-promote.
+	* doc/invoke.texi: Document -ftree-type-promote.
+	* gimple-ssa-type-promote.c: New file.
+	* passes.def: Define new pass_type_promote.
+	* timevar.def: Define new TV_TREE_TYPE_PROMOTE.
+	* tree-pass.h (make_pass_type_promote): New.
+
+2016-03-31  Kugan Vivekanandarajah  
+
 	* auto-profile.c (afdo_propagate_circuit): Initialize only_one.
 	* tree-ssa-uninit.c (normalize_one_pred): Handle SEXT_EXPR.
 
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 6c5adc0..e00750c 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1522,6 +1522,7 @@ OBJS = \
 	tree-vect-slp.o \
 	tree-vectorizer.o \
 	tree-vrp.o \
+	gimple-ssa-type-promote.o \
 	tree.o \
 	valtrack.o \
 	value-prof.o \
diff --git a/gcc/common.opt b/gcc/common.opt
index 682cb41..f891c9d 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -2467,6 +2467,10 @@ Common Var(flag_unconstrained_commons) Optimization
 Assume common declarations may be overridden with ones with a larger
 trailing array.
 
+ftree-type-promote
+Common Report Var(flag_tree_type_promote) Init(1) Optimization
+Perform Type Promotion on trees.
+
 funit-at-a-time
 Common Report Var(flag_unit_at_a_time) Init(1)
 Compile whole compilation unit at a time.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 1176d12..0b5a3e9 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -7619,6 +7619,16 @@ Split paths leading to loop backedges.  This can improve dead code
 elimination and common subexpression elimination.  This is enabled by
 default at @option{-O2} and above.
 
+@item -ftree-type-promote
+@opindex ftree-type-promote
+This pass applies type promotion to SS

Re: [PATCH][RFC] Introduce BIT_FIELD_INSERT

2016-05-15 Thread Bill Schmidt
Hi Richard,

(Sorry for duplication to your personal email, I had new-mailer issues.)

The new vector-6 test produces very good code for powerpc64le with this patch:

addis 9,2,.LC0@toc@ha
sldi 3,3,32
addi 9,9,.LC0@toc@l
rldicl 9,9,0,32
or 3,9,3
blr

I did run into some ICEs with bootstrap/regtest, though:

26c26
< /home/wschmidt/gcc/build/gcc-mainline-base/gcc/testsuite/g++/../../xg++  
version 7.0.0 20160515 (experimental) [trunk revision 236259] (GCC) 
---
> /home/wschmidt/gcc/build/gcc-mainline-test/gcc/testsuite/g++/../../xg++  
> version 7.0.0 20160515 (experimental) [trunk revision 236259] (GCC) 
31a32,39
> FAIL: gcc.c-torture/compile/pr70240.c   -O1  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr70240.c   -O1  (test for excess errors)
> FAIL: gcc.c-torture/compile/pr70240.c   -O2  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr70240.c   -O2  (test for excess errors)
> FAIL: gcc.c-torture/compile/pr70240.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr70240.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  (test for excess errors)
> FAIL: gcc.c-torture/compile/pr70240.c   -Os  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr70240.c   -Os  (test for excess errors)
53a62,66
> FAIL: gcc.dg/pr69896.c (internal compiler error)
> FAIL: gcc.dg/pr69896.c (test for excess errors)
> UNRESOLVED: gcc.dg/pr69896.c compilation failed to produce executable
> FAIL: gcc.dg/pr70326.c (internal compiler error)
> FAIL: gcc.dg/pr70326.c (test for excess errors)
281a295,353
> FAIL: gcc.dg/torture/pr69613.c   -O1  (internal compiler error)
> FAIL: gcc.dg/torture/pr69613.c   -O1  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69613.c   -O1  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69613.c   -O2  (internal compiler error)
> FAIL: gcc.dg/torture/pr69613.c   -O2  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69613.c   -O2  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69613.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  (internal compiler error)
> FAIL: gcc.dg/torture/pr69613.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69613.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  compilation failed to produce executable
> FAIL: gcc.dg/torture/pr69613.c   -O2 -flto -fuse-linker-plugin 
> -fno-fat-lto-objects  (internal compiler error)
> FAIL: gcc.dg/torture/pr69613.c   -O2 -flto -fuse-linker-plugin 
> -fno-fat-lto-objects  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69613.c   -O2 -flto -fuse-linker-plugin 
> -fno-fat-lto-objects  compilation failed to produce executable
> FAIL: gcc.dg/torture/pr69613.c   -O3 -g  (internal compiler error)
> FAIL: gcc.dg/torture/pr69613.c   -O3 -g  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69613.c   -O3 -g  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69613.c   -Os  (internal compiler error)
> FAIL: gcc.dg/torture/pr69613.c   -Os  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69613.c   -Os  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69909.c   -O1  (internal compiler error)
> FAIL: gcc.dg/torture/pr69909.c   -O1  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69909.c   -O1  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69909.c   -O2  (internal compiler error)
> FAIL: gcc.dg/torture/pr69909.c   -O2  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69909.c   -O2  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69909.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  (internal compiler error)
> FAIL: gcc.dg/torture/pr69909.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69909.c   -O2 -flto -fno-use-linker-plugin 
> -flto-partition=none  compilation failed to produce executable
> FAIL: gcc.dg/torture/pr69909.c   -O2 -flto -fuse-linker-plugin 
> -fno-fat-lto-objects  (internal compiler error)
> FAIL: gcc.dg/torture/pr69909.c   -O2 -flto -fuse-linker-plugin 
> -fno-fat-lto-objects  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69909.c   -O2 -flto -fuse-linker-plugin 
> -fno-fat-lto-objects  compilation failed to produce executable
> FAIL: gcc.dg/torture/pr69909.c   -O3 -g  (internal compiler error)
> FAIL: gcc.dg/torture/pr69909.c   -O3 -g  (test for excess errors)
> UNRESOLVED: gcc.dg/torture/pr69909.c   -O3 -g  compilation failed to produce 
> executable
> FAIL: gcc.dg/torture/pr69909.c   -Os  (internal compiler error)
> FAIL: gcc

Re: [PATCH, wide-int] change fixed_wide_int_storage from class to struct

2016-05-15 Thread Richard Biener
On May 15, 2016 9:03:22 PM GMT+02:00, Gerald Pfeifer  wrote:
>While not a bug according to the language of the C++ standard, this
>causes dozens of warnings when building GCC with clang, and there is
>not benefit of mixing struct and class like this.
>
>Mike, when I had a similar case a while ago you sounded pretty 
>supportive of this kind of change.  Would you be fine to pre-approve
>such changes?

Yes, they are OK.

Thanks,
Richard.

>Gerald
>
>2016-05-15  Gerald Pfeifer  
>
>   * wide-int.h: Change fixed_wide_int_storage from class to struct.
>
>Index: wide-int.h
>===
>--- wide-int.h (revision 236255)
>+++ wide-int.h (working copy)
>@@ -294,7 +294,7 @@
>   HOST_WIDE_INT *VAL = RESULT.write_val ()
> 
> template  class generic_wide_int;
>-template  struct fixed_wide_int_storage;
>+template  class fixed_wide_int_storage;
> class wide_int_storage;
> 
>/* An N-bit integer.  Until we can use typedef templates, use this
>instead.  */




Re: [PATCH] Import config.sub and config.guess from upstream.

2016-05-15 Thread Jakub Sejdak
Ping.

2016-05-14 13:36 GMT+02:00 Jakub Sejdak :
> So please confirm that this is OK for trunk only and apply it.
> Then I will start working on backporting this for other branches.
>
> 2016-05-14 11:29 GMT+02:00 Mike Stump :
>> On May 14, 2016, at 1:15 AM, Jakub Sejdak  wrote:
>>> Then when those scripts get copied 'as they are' from GNU config? Only
>>> for newly created branches?
>>
>> Only for trunk...