platform/upstream/gcc.git
8 years agoreorg.c (try_merge_delay_insns): Declare i and j inside the for loops rather than...
Jakub Jelinek [Tue, 26 Apr 2016 20:32:05 +0000 (22:32 +0200)]
reorg.c (try_merge_delay_insns): Declare i and j inside the for loops rather than one for the whole function.

* reorg.c (try_merge_delay_insns): Declare i and j inside the
for loops rather than one for the whole function.

From-SVN: r235451

8 years agomatch.pd: u + 3 < u is u > UINT_MAX - 3
Marc Glisse [Tue, 26 Apr 2016 15:03:08 +0000 (17:03 +0200)]
match.pd: u + 3 < u is u > UINT_MAX - 3

2016-04-26  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (X + CST CMP X): New transformation.

gcc/testsuite/
* gcc.dg/tree-ssa/overflow-1.c: New testcase.

From-SVN: r235448

8 years agore PR c/70791 (-Wnested-externs prints inconsistent column number)
Marek Polacek [Tue, 26 Apr 2016 15:01:09 +0000 (15:01 +0000)]
re PR c/70791 (-Wnested-externs prints inconsistent column number)

PR c/70791
* c-decl.c (pushdecl): Pass LOCUS down to warning.

* gcc.dg/Wnested-externs-2.c: New test.

From-SVN: r235447

8 years agore PR c/67784 (Incorrect parsing when using declarations in for loops and typedefs)
Marek Polacek [Tue, 26 Apr 2016 14:59:40 +0000 (14:59 +0000)]
re PR c/67784 (Incorrect parsing when using declarations in for loops and typedefs)

PR c/67784
* c-parser.c (c_parser_maybe_reclassify_token): New function factored
out of ...
(c_parser_for_statement): ... here.
(c_parser_if_statement): Use it.
(c_parser_switch_statement): Use it.
(c_parser_while_statement): Use it.

* gcc.dg/pr67784-3.c: New test.
* gcc.dg/pr67784-4.c: New test.
* gcc.dg/pr67784-5.c: New test.

From-SVN: r235446

8 years ago* c-c++-common/cpp/pr63831-1.c: Don't test for C++ values here.
Jason Merrill [Tue, 26 Apr 2016 14:05:51 +0000 (10:05 -0400)]
* c-c++-common/cpp/pr63831-1.c: Don't test for C++ values here.

From-SVN: r235445

8 years agomatch.pd: X + X --> X * 2 for integers
Marc Glisse [Tue, 26 Apr 2016 14:02:09 +0000 (16:02 +0200)]
match.pd: X + X --> X * 2 for integers

2016-04-26  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* genmatch.c (write_predicate): Add ATTRIBUTE_UNUSED.
* fold-const.c (fold_binary_loc): Remove 2 transformations
superseded by match.pd.
* match.pd (x+x -> x*2): Generalize to integers.

gcc/testsuite/
* gcc.dg/fold-plusmult.c: Adjust.
* gcc.dg/no-strict-overflow-6.c: Adjust.
* gcc.dg/gomp/loop-1.c: Xfail some tests.

From-SVN: r235444

8 years agoi386: Add a variant peephole for lea rather than ops that clobber CC.
Bernd Schmidt [Tue, 26 Apr 2016 12:57:50 +0000 (12:57 +0000)]
i386: Add a variant peephole for lea rather than ops that clobber CC.

* config/i386/i386.md (operation on memory peephole): Duplicate an
existing peephole and adapt it to match lea rather than an operation
that clobbers CC.

From-SVN: r235443

8 years agoEnable -frename-registers at -O2.
Bernd Schmidt [Tue, 26 Apr 2016 12:43:42 +0000 (12:43 +0000)]
Enable -frename-registers at -O2.

PR rtl-optimization/57193
* opts.c (default_options_table): Add OPT_frename_registers at -O2
and above.
* doc/invoke.texi (-frename-registers, -O2): Update documentation.

From-SVN: r235442

8 years agoFix x86 testcases for -frename-registers.
Bernd Schmidt [Tue, 26 Apr 2016 12:25:52 +0000 (12:25 +0000)]
Fix x86 testcases for -frename-registers.

* gcc.target/i386/avx512bw-vptestmb-1.c: Correct [xyz]mm register
number scans.
* gcc.target/i386/avx512bw-vptestmw-1.c: Likewise.
* gcc.target/i386/avx512bw-vptestnmb-1.c: Likewise.
* gcc.target/i386/avx512bw-vptestnmw-1.c: Likewise.
* gcc.target/i386/avx512cd-vpbroadcastmb2q-1.c: Likewise.
* gcc.target/i386/avx512cd-vpbroadcastmw2d-1.c: Likewise.
* gcc.target/i386/avx512dq-vfpclasspd-1.c: Likewise.
* gcc.target/i386/avx512dq-vfpclassps-1.c: Likewise.
* gcc.target/i386/avx512dq-vinsertf64x2-1.c: Likewise.
* gcc.target/i386/avx512dq-vinserti64x2-1.c: Likewise.
* gcc.target/i386/avx512f-gather-5.c: Likewise.
* gcc.target/i386/avx512f-vptestmd-1.c: Likewise.
* gcc.target/i386/avx512f-vptestmq-1.c: Likewise.
* gcc.target/i386/avx512f-vptestnmd-1.c: Likewise.
* gcc.target/i386/avx512f-vptestnmq-1.c: Likewise.
* gcc.target/i386/avx512f-vrndscaleps-1.c: Likewise.
* gcc.target/i386/avx512vl-vpbroadcastmb2q-1.c: Likewise.
* gcc.target/i386/avx512vl-vpbroadcastmw2d-1.c: Likewise.
* gcc.target/i386/avx512vl-vptestmd-1.c: Likewise.
* gcc.target/i386/avx512vl-vptestmq-1.c: Likewise.
* gcc.target/i386/avx512vl-vptestnmd-1.c: Likewise.
* gcc.target/i386/avx512vl-vptestnmq-1.c: Likewise.
* gcc.target/i386/pr32219-2.c: Allow registers other than %eax in
scans.
* gcc.target/i386/pr32219-4.c: Likewise.
* gcc.target/i386/pr32219-6.c: Likewise.
* gcc.target/i386/pr32219-8.c: Likewise.

From-SVN: r235441

8 years agoFix FAIL: gcc.dg/tree-ssa/minmax-2.c scan-tree-dump optimized "__builtin_fmin"
Kyrylo Tkachov [Tue, 26 Apr 2016 12:17:39 +0000 (12:17 +0000)]
Fix FAIL: gcc.dg/tree-ssa/minmax-2.c scan-tree-dump optimized "__builtin_fmin"

* gcc.dg/tree-ssa/minmax-2.c: Require c99_runtime and add the
associated options.

From-SVN: r235440

8 years agoVerify __builtin_unreachable and __builtin_trap are not called with arguments
Martin Jambor [Tue, 26 Apr 2016 11:51:23 +0000 (13:51 +0200)]
Verify __builtin_unreachable and __builtin_trap are not called with arguments

2016-04-26  Martin Jambor  <mjambor@suse.cz>

* tree-cfg.c (verify_gimple_call): Check that calls to
__builtin_unreachable or __builtin_trap do not have actual arguments.

From-SVN: r235439

8 years agoBootstrapped/regtested on x86_64-linux, ok for trunk?
Marek Polacek [Tue, 26 Apr 2016 11:32:26 +0000 (11:32 +0000)]
Bootstrapped/regtested on x86_64-linux, ok for trunk?

2016-04-25  Marek Polacek  <polacek@redhat.com>

PR c++/70744
* call.c (build_conditional_expr_1): Call cp_stabilize_reference
instead of stabilize_reference.
(build_over_call): Likewise.
* cp-tree.h (cp_stabilize_reference): Declare.
* tree.c (cp_stabilize_reference): New function.
* typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
stabilize_reference.
(unary_complex_lvalue): Likewise.
(cp_build_modify_expr): Likewise.

* g++.dg/ext/cond2.C: New test.

diff --git gcc/cp/call.c gcc/cp/call.c
index 11f2d42..476e806 100644
--- gcc/cp/call.c
+++ gcc/cp/call.c
@@ -4634,7 +4634,7 @@ build_conditional_expr_1 (location_t loc, tree arg1, tree arg2, tree arg3,

       /* Make sure that lvalues remain lvalues.  See g++.oliva/ext1.C.  */
       if (real_lvalue_p (arg1))
- arg2 = arg1 = stabilize_reference (arg1);
+ arg2 = arg1 = cp_stabilize_reference (arg1);
       else
  arg2 = arg1 = save_expr (arg1);
     }
@@ -7644,8 +7644,9 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
         || (TREE_CODE (arg) == TARGET_EXPR
     && !unsafe_copy_elision_p (fa, arg)))
  {
-   tree to = stabilize_reference (cp_build_indirect_ref (fa, RO_NULL,
- complain));
+   tree to = cp_stabilize_reference (cp_build_indirect_ref (fa,
+    RO_NULL,
+    complain));

    val = build2 (INIT_EXPR, DECL_CONTEXT (fn), to, arg);
    return val;
@@ -7655,7 +7656,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
     && trivial_fn_p (fn)
     && !DECL_DELETED_FN (fn))
     {
-      tree to = stabilize_reference
+      tree to = cp_stabilize_reference
  (cp_build_indirect_ref (argarray[0], RO_NULL, complain));
       tree type = TREE_TYPE (to);
       tree as_base = CLASSTYPE_AS_BASE (type);
diff --git gcc/cp/cp-tree.h gcc/cp/cp-tree.h
index ec92718..0e46ae1 100644
--- gcc/cp/cp-tree.h
+++ gcc/cp/cp-tree.h
@@ -6494,6 +6494,7 @@ extern cp_lvalue_kind real_lvalue_p (const_tree);
 extern cp_lvalue_kind lvalue_kind (const_tree);
 extern bool lvalue_or_rvalue_with_address_p (const_tree);
 extern bool xvalue_p                         (const_tree);
+extern tree cp_stabilize_reference (tree);
 extern bool builtin_valid_in_constant_expr_p    (const_tree);
 extern tree build_min (enum tree_code, tree, ...);
 extern tree build_min_nt_loc (location_t, enum tree_code,
diff --git gcc/cp/tree.c gcc/cp/tree.c
index 112c8c7..137186f 100644
--- gcc/cp/tree.c
+++ gcc/cp/tree.c
@@ -296,6 +296,46 @@ xvalue_p (const_tree ref)
   return (lvalue_kind (ref) == clk_rvalueref);
 }

+/* C++-specific version of stabilize_reference.  */
+
+tree
+cp_stabilize_reference (tree ref)
+{
+  switch (TREE_CODE (ref))
+    {
+    /* We need to treat specially anything stabilize_reference doesn't
+       handle specifically.  */
+    case VAR_DECL:
+    case PARM_DECL:
+    case RESULT_DECL:
+    CASE_CONVERT:
+    case FLOAT_EXPR:
+    case FIX_TRUNC_EXPR:
+    case INDIRECT_REF:
+    case COMPONENT_REF:
+    case BIT_FIELD_REF:
+    case ARRAY_REF:
+    case ARRAY_RANGE_REF:
+    case COMPOUND_EXPR:
+    case ERROR_MARK:
+      break;
+    default:
+      cp_lvalue_kind kind = lvalue_kind (ref);
+      if ((kind & ~clk_class) != clk_none)
+ {
+   tree type = unlowered_expr_type (ref);
+   bool rval = !!(kind & clk_rvalueref);
+   type = cp_build_reference_type (type, rval);
+   /* This inhibits warnings in, eg, cxx_mark_addressable
+      (c++/60955).  */
+   warning_sentinel s (extra_warnings);
+   ref = build_static_cast (type, ref, tf_error);
+ }
+    }
+
+  return stabilize_reference (ref);
+}
+
 /* Test whether DECL is a builtin that may appear in a
    constant-expression. */

diff --git gcc/cp/typeck.c gcc/cp/typeck.c
index cef5604..7e12009 100644
--- gcc/cp/typeck.c
+++ gcc/cp/typeck.c
@@ -5912,7 +5912,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
  {
    tree real, imag;

-   arg = stabilize_reference (arg);
+   arg = cp_stabilize_reference (arg);
    real = cp_build_unary_op (REALPART_EXPR, arg, 1, complain);
    imag = cp_build_unary_op (IMAGPART_EXPR, arg, 1, complain);
    real = cp_build_unary_op (code, real, 1, complain);
@@ -6112,7 +6112,7 @@ unary_complex_lvalue (enum tree_code code, tree arg)
       tree lvalue = TREE_OPERAND (arg, 0);
       if (TREE_SIDE_EFFECTS (lvalue))
  {
-   lvalue = stabilize_reference (lvalue);
+   lvalue = cp_stabilize_reference (lvalue);
    arg = build2 (TREE_CODE (arg), TREE_TYPE (arg),
  lvalue, TREE_OPERAND (arg, 1));
  }
@@ -7496,7 +7496,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs,
     case PREINCREMENT_EXPR:
       if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0)))
  lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs),
-       stabilize_reference (TREE_OPERAND (lhs, 0)),
+       cp_stabilize_reference (TREE_OPERAND (lhs, 0)),
        TREE_OPERAND (lhs, 1));
       newrhs = cp_build_modify_expr (TREE_OPERAND (lhs, 0),
       modifycode, rhs, complain);
@@ -7516,7 +7516,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs,
     case MODIFY_EXPR:
       if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0)))
  lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs),
-       stabilize_reference (TREE_OPERAND (lhs, 0)),
+       cp_stabilize_reference (TREE_OPERAND (lhs, 0)),
        TREE_OPERAND (lhs, 1));
       newrhs = cp_build_modify_expr (TREE_OPERAND (lhs, 0), modifycode, rhs,
       complain);
@@ -7665,7 +7665,7 @@ cp_build_modify_expr (tree lhs, enum tree_code modifycode, tree rhs,
       not intervene between the lvalue-to-rvalue conversion and the
       side effect associated with any single compound assignment
       operator. -- end note ]  */
-   lhs = stabilize_reference (lhs);
+   lhs = cp_stabilize_reference (lhs);
    rhs = rvalue (rhs);
    rhs = stabilize_expr (rhs, &init);
    newrhs = cp_build_binary_op (input_location,
diff --git gcc/testsuite/g++.dg/ext/cond2.C gcc/testsuite/g++.dg/ext/cond2.C
index e69de29..d9f1d59 100644
--- gcc/testsuite/g++.dg/ext/cond2.C
+++ gcc/testsuite/g++.dg/ext/cond2.C
@@ -0,0 +1,28 @@
+// PR c++/70744
+// { dg-do run }
+// { dg-options "" }
+
+static void
+fn1 (void)
+{
+  int x = 2;
+  ++x ? : 42;
+  if (x != 3)
+    __builtin_abort ();
+  --x ? : 42;
+  if (x != 2)
+    __builtin_abort ();
+  x++ ? : 42;
+  if (x != 3)
+    __builtin_abort ();
+  x-- ? : 42;
+  if (x != 2)
+    __builtin_abort ();
+}
+
+int
+main ()
+{
+  fn1 ();
+  return 0;
+}

From-SVN: r235438

8 years agotree-if-conv.c (any_pred_load_store): New static variable.
Bin Cheng [Tue, 26 Apr 2016 11:16:07 +0000 (11:16 +0000)]
tree-if-conv.c (any_pred_load_store): New static variable.

* tree-if-conv.c (any_pred_load_store): New static variable.
(if_convertible_gimple_assign_stmt_p): Remove parameter.  Use
any_pred_load_store instead of and_mask_load_store.
(if_convertible_stmt_p, if_convertible_loop_p_1): Ditto.
(if_convertible_loop_p, insert_gimplified_predicates): Ditto.
(combine_blocks, tree_if_conversion): Ditto.

From-SVN: r235437

8 years agore PR tree-optimization/70771 (ICE on valid code at -O3 on x86_64-linux-gnu in operat...
Bin Cheng [Tue, 26 Apr 2016 11:10:47 +0000 (11:10 +0000)]
re PR tree-optimization/70771 (ICE on valid code at -O3 on x86_64-linux-gnu in operator[], at vec.h:714)

PR tree-optimization/70771
PR tree-optimization/70775
* tree-if-conv.c (if_convertible_phi_p): Remove check on special
virtual PHI nodes.  Delete parameter.
(if_convertible_loop_p_1): Delete argument to above function.
(predicate_all_scalar_phis): Delete code handling single-argument
PHIs.
(tree_if_conversion): Mark and update virtual SSA.

gcc/testsuite/ChangeLog
PR tree-optimization/70771
PR tree-optimization/70775
* gcc.dg/pr70771.c: New test.
* gcc.dg/pr70771.c: New test.

From-SVN: r235436

8 years agoSupport .largecomm with Solaris as (PR target/61821)
Rainer Orth [Tue, 26 Apr 2016 10:10:33 +0000 (10:10 +0000)]
Support .largecomm with Solaris as (PR target/61821)

PR target/61821
* config/i386/i386.c (LARGECOMM_SECTION_ASM_OP): Define default.
(x86_elf_aligned_common): Rename to ...
(x86_elf_aligned_decl_common): ... this.
Add decl arg.  Switch to .lbss for largecomm object.  Use
LARGECOMM_SECTION_ASM_OP.
* config/i386/i386-protos.h (x86_elf_aligned_common): Reflect
renaming.
* config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_COMMON): Rename to ...
(ASM_OUTPUT_ALIGNED_DECL_COMMON): ... this.
Pass new decl arg.
* config/i386/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
[!USE_GAS] (LARGECOMM_SECTION_ASM_OP): Define.

From-SVN: r235435

8 years agoSupport .lbss etc. sections with Solaris as (PR target/59407)
Rainer Orth [Tue, 26 Apr 2016 10:06:16 +0000 (10:06 +0000)]
Support .lbss etc. sections with Solaris as (PR target/59407)

PR target/59407
* config/i386/i386.c (SECTION_LARGE): Define.
(x86_64_elf_select_section): Set it for large data/bss sections.
Only clear SECTION_WRITE for .lrodata.
(x86_64_elf_section_type_flags): Set SECTION_LARGE for large
data/bss sections.
* config/i386/sol2.h (MACH_DEP_SECTION_ASM_FLAG): Define.
* varasm.c (default_elf_asm_named_section): Grow flagchars.
[MACH_DEP_SECTION_ASM_FLAG] Emit MACH_DEP_SECTION_ASM_FLAG for
SECTION_MACH_DEP.
* doc/tm.texi.in (Sections, MACH_DEP_SECTION_ASM_FLAG): Describe.
* doc/tm.texi: Regenerate.

From-SVN: r235434

8 years agoCompile libcilkrts with -funwind-tables (PR target/60290)
Rainer Orth [Tue, 26 Apr 2016 08:55:02 +0000 (08:55 +0000)]
Compile libcilkrts with -funwind-tables (PR target/60290)

PR target/60290
* Makefile.am (GENERAL_FLAGS): Add -funwind-tables.
* Makefile.in: Regenerate.

From-SVN: r235432

8 years ago* gcc.target/i386/lzcnt-1.c: Allow a different lzcntw output register.
Bernd Schmidt [Tue, 26 Apr 2016 08:48:14 +0000 (08:48 +0000)]
* gcc.target/i386/lzcnt-1.c: Allow a different lzcntw output register.

From-SVN: r235431

8 years agore PR bootstrap/70704 (AIX bootstrap comparison failure)
Jakub Jelinek [Tue, 26 Apr 2016 06:10:43 +0000 (08:10 +0200)]
re PR bootstrap/70704 (AIX bootstrap comparison failure)

PR bootstrap/70704
* configure.ac (--enable-stage1-checking): For --disable-checking or
implicit --enable-checking, make sure extra flag matches in between
stage1 and later checking.
* configure: Regenerated.
gcc/
* configure.ac (--enable-checking): Document extra flag, for
non-release builds default to --enable-checking=yes,extra.
If misc checking and extra checking, define CHECKING_P to 2 instead
of 1.
* common.opt (fchecking=): Add.
* doc/invoke.texi (-fchecking=): Document.
* doc/install.texi: Document --enable-checking changes.
* configure: Regenerated.
* config.in: Regenerated.
gcc/cp/
* pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
just flag_checking.

From-SVN: r235430

8 years agoDaily bump.
GCC Administrator [Tue, 26 Apr 2016 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r235428

8 years agoi386.md (*movxi_internal_avx512f): Use insn type attribute instead of which_alternative.
Uros Bizjak [Mon, 25 Apr 2016 21:57:42 +0000 (23:57 +0200)]
i386.md (*movxi_internal_avx512f): Use insn type attribute instead of which_alternative.

* config/i386/i386.md (*movxi_internal_avx512f): Use insn type
attribute instead of which_alternative.
* config/i386/sse.md (*mov<mode>_internal): Ditto.
Use EXT_REX_SSE_REG_P where appropriate.

From-SVN: r235422

8 years ago* sv.po: Update.
Joseph Myers [Mon, 25 Apr 2016 20:41:18 +0000 (21:41 +0100)]
* sv.po: Update.

From-SVN: r235419

8 years agopredicates.md (const0_operand): Do not match const_wide_int code.
Uros Bizjak [Mon, 25 Apr 2016 19:20:45 +0000 (21:20 +0200)]
predicates.md (const0_operand): Do not match const_wide_int code.

* config/i386/predicates.md (const0_operand): Do not match
const_wide_int code.
(const1_operand): Ditto.

From-SVN: r235417

8 years agoi386.md (*movoi_internal_avx): Set mode attribute to XI for SSE constm1 operands...
Uros Bizjak [Mon, 25 Apr 2016 19:15:26 +0000 (21:15 +0200)]
i386.md (*movoi_internal_avx): Set mode attribute to XI for SSE constm1 operands and TARGET_AVX512VL.

* config/i386/i386.md (*movoi_internal_avx): Set mode attribute to XI
for SSE constm1 operands and TARGET_AVX512VL.
(*movti_internal): Ditto.
(*mov<mode>_or): Use constm1_operand predicate.
* config/i386/sse.md (*mov<mode>_internal): Set mode attribute to XI
for SSE vector_all_ones operands and TARGET_AVX512VL.
* config/i386/predicates.md (constm1_operand): New predicate.
* config/i386/i386.c (standard_sse_constant_opcode): Simplify
emission of constant -1 load.

From-SVN: r235416

8 years ago* gdbinit.in: Skip is-a.h.
Jason Merrill [Mon, 25 Apr 2016 17:44:15 +0000 (13:44 -0400)]
* gdbinit.in: Skip is-a.h.

From-SVN: r235415

8 years agoImplement C++17 [[maybe_unused]] attribute.
Jason Merrill [Mon, 25 Apr 2016 17:21:49 +0000 (13:21 -0400)]
Implement C++17 [[maybe_unused]] attribute.

gcc/
* attribs.c (register_scoped_attributes): Fix logic.
* attribs.h: Declare register_scoped_attributes.
c-family/
* c-common.c (handle_unused_attribute): Accept CONST_DECL.
No longer static.
* c-common.h: Declare it.
* c-lex.c (c_common_has_attribute): Add maybe_unused.
cp/
* tree.c (std_attribute_table): New.
(init_tree): Register it.

From-SVN: r235414

8 years agoCorrect ChangeLog entry
William Schmidt [Mon, 25 Apr 2016 16:18:00 +0000 (16:18 +0000)]
Correct ChangeLog entry

From-SVN: r235413

8 years agors6000-builtin.def: Correct pasto error for stxvd2x and stxvw4x built-in functions.
Bill Schmidt [Mon, 25 Apr 2016 16:17:26 +0000 (16:17 +0000)]
rs6000-builtin.def: Correct pasto error for stxvd2x and stxvw4x built-in functions.

2016-04-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* rs6000-builtin.def: Correct pasto error for stxvd2x and stxvw4x
built-in functions.

From-SVN: r235412

8 years agoRevert the last change in libatomic
H.J. Lu [Mon, 25 Apr 2016 12:41:43 +0000 (12:41 +0000)]
Revert the last change in libatomic

Need to properly check if -march=i486 is really needed for -m32 build
of libatomic on Linux/x86 and Linux/x86-64.

PR target/70454
* configure.tgt (XCFLAGS): Revert the last change.

From-SVN: r235411

8 years agomsp430.md (ashlhi3): Optimize one bit shifts.
DJ Delorie [Mon, 25 Apr 2016 11:59:44 +0000 (07:59 -0400)]
msp430.md (ashlhi3): Optimize one bit shifts.

* config/msp430/msp430.md (ashlhi3): Optimize one bit shifts.
(ashrhi3): Likewise.
(lshrhi3): Likewise.

From-SVN: r235410

8 years agocmpd.c (__mspabi_cmpf): Add prototype.
Nick Clifton [Mon, 25 Apr 2016 11:13:35 +0000 (11:13 +0000)]
cmpd.c (__mspabi_cmpf): Add prototype.

* config/msp430/cmpd.c (__mspabi_cmpf): Add prototype.
(__mspabi_cmpd): Likewise.
* config/msp430/floathidf.c (__floathidf): Likewise.
* config/msp430/floathisf.c (__floathisf): Likewise
* config/msp430/floatunhidf.c (__floatunssidf): Likewise.
* config/msp430/floatunhisf.c (__floatunshisf): Likewise.
* config/msp430/lib2shift.c (__ashlsi3): Take a signed char as the
second parameter.
(__ashrsi3): Likewise.

From-SVN: r235409

8 years agore PR tree-optimization/70780 (wrong code at -O2 and -O3 on x86_64-linux-gnu)
Richard Biener [Mon, 25 Apr 2016 10:49:55 +0000 (10:49 +0000)]
re PR tree-optimization/70780 (wrong code at -O2 and -O3 on x86_64-linux-gnu)

2016-04-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/70780
* tree-ssa-pre.c (compute_antic_aux): Also return true if the block
wasn't visited yet.
(compute_antic): Mark blocks with abnormal preds as visited as
they have a final empty antic-in solution already.

* gcc.dg/torture/pr70780.c: New testcase.

From-SVN: r235407

8 years agoChangeLog (2016-04-25): Fix ChangeLog formatting.
Michael Collison [Mon, 25 Apr 2016 05:57:07 +0000 (05:57 +0000)]
ChangeLog (2016-04-25): Fix ChangeLog formatting.

2016-04-25  Michael Collison  <michael.collison@linaro.org>
* ChangeLog(2016-04-25): Fix ChangeLog formatting.

From-SVN: r235403

8 years agoneon.md (widen_<us>sum<mode>): New patterns where mode is VQI to improve mixed mode...
Michael Collison [Mon, 25 Apr 2016 05:03:09 +0000 (05:03 +0000)]
neon.md (widen_<us>sum<mode>): New patterns where mode is VQI to improve mixed mode vectorization.

2016-04-25  Michael Collison  <michael.collison@linaro.org>

    * config/arm/neon.md (widen_<us>sum<mode>): New patterns where
    mode is VQI to improve mixed mode vectorization.
    * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3): New
    define_insn to match low half of signed vaddw.
    * config/arm/neon.md (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): New
    define_insn to match high half of signed vaddw.
    * config/arm/neon.md (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): New
    define_insn to match low half of unsigned vaddw.
    * config/arm/neon.md (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): New
    define_insn to match high half of unsigned vaddw.
    * config/arm/arm.c (arm_simd_vect_par_cnst_half): New function.
    (arm_simd_check_vect_par_cnst_half_p): Likewise.
    * config/arm/arm-protos.h (arm_simd_vect_par_cnst_half): Prototype
    for new function.
    (arm_simd_check_vect_par_cnst_half_p): Likewise.
    * config/arm/predicates.md (vect_par_constant_high): Support
    big endian and simplify by calling
    arm_simd_check_vect_par_cnst_half
    (vect_par_constant_low): Likewise.
    * testsuite/gcc.target/arm/neon-vaddws16.c: New test.
    * testsuite/gcc.target/arm/neon-vaddws32.c: New test.
    * testsuite/gcc.target/arm/neon-vaddwu16.c: New test.
    * testsuite/gcc.target/arm/neon-vaddwu32.c: New test.
    * testsuite/gcc.target/arm/neon-vaddwu8.c: New test.
    * testsuite/lib/target-supports.exp
      (check_effective_target_vect_widen_sum_hi_to_si_pattern): Indicate
      that arm neon support vector widen sum of HImode TO SImode.

From-SVN: r235402

8 years agoDaily bump.
GCC Administrator [Mon, 25 Apr 2016 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r235401

8 years agoi386.md (*lea<mode>_general_4): Use const_0_to_3_operand predicate for operand 2.
Uros Bizjak [Sun, 24 Apr 2016 22:03:15 +0000 (00:03 +0200)]
i386.md (*lea<mode>_general_4): Use const_0_to_3_operand predicate for operand 2.

* config/i386/i386.md (*lea<mode>_general_4): Use const_0_to_3_operand
predicate for operand 2.

From-SVN: r235397

8 years agoi386-protos.h (standard_sse_constant_p): Add machine_mode argument.
Uros Bizjak [Sun, 24 Apr 2016 20:58:02 +0000 (22:58 +0200)]
i386-protos.h (standard_sse_constant_p): Add machine_mode argument.

* config/i386/i386-protos.h (standard_sse_constant_p): Add
machine_mode argument.
* config/i386/i386.c (standard_sse_constant_p): Return 2 for
constm1_rtx operands.  For VOIDmode constants, get mode from
pred_mode.  Check mode size if the mode is supported by ABI.
(standard_sse_constant_opcode): Do not use standard_constant_p.
Strictly check ABI support for all-ones operands.
(ix86_legitimate_constant_p): Handle TImode, OImode and XImode
immediates. Update calls to standard_sse_constant_p.
(ix86_expand_vector_move): Update calls to standard_sse_constant_p.
(ix86_rtx_costs): Ditto.
* config/i386/i386.md (*movxi_internal_avx512f): Use
nonimmediate_or_sse_const_operand instead of vector_move_operand.
Use (v,BC) alternative instead of (v,C). Use register_operand
checks instead of MEM_P.
(*movoi_internal_avx): Use nonimmediate_or_sse_const_operand instead
of vector_move_operand.  Add (v,BC) alternative and corresponding avx2
isa attribute.  Use register_operand checks instead of MEM_P.
(*movti_internal): Use nonimmediate_or_sse_const_operand for
TARGET_SSE.  Improve TARGET_SSE insn constraint.  Add (v,BC)
alternative and corresponding sse2 isa attribute.
(*movtf_internal, *movdf_internal, *movsf_interal): Update calls
to standard_sse_constant_p.
(FP constant splitters): Ditto.
* config/i386/constraints.md (BC): Do not use standard_sse_constant_p.
(C): Ditto.
* config/i386/predicates.md (constm1_operand): Remove.
(nonimmediate_or_sse_const_operand): Rewrite using RTX.
* config/i386/sse.md (*<avx512>_cvtmask2<ssemodesuffix><mode>): Use
vector_all_ones_operand instead of constm1_operand.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
From-SVN: r235396

8 years agolibstdc++/70762 fix fallback implementation of nonexistent_path
Jonathan Wakely [Sun, 24 Apr 2016 18:06:54 +0000 (19:06 +0100)]
libstdc++/70762 fix fallback implementation of nonexistent_path

PR libstdc++/70762
* testsuite/util/testsuite_fs.h (__gnu_test::nonexistent_path): Use
static counter to return a different path on every call.

From-SVN: r235395

8 years agomake avail_stores a vec<rtx_insn *>
Trevor Saunders [Sun, 24 Apr 2016 08:45:38 +0000 (08:45 +0000)]
make avail_stores a vec<rtx_insn *>

gcc/ChangeLog:

2016-04-24  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* print-rtl.c (print_rtx_insn_vec): New function.
* print-rtl.h: New prototype.
* store-motion.c (struct st_expr): Make avail_stores a vector.
(st_expr_entry): Adjust.
(free_st_expr_entry): Likewise.
(print_store_motion_mems): Likewise.
(find_moveable_store): Likewise.
(compute_store_table): Likewise.
(delete_store): Likewise.
(build_store_vectors): Likewise.

From-SVN: r235394

8 years agostop using rtx_insn_list in reorg.c
Trevor Saunders [Sun, 24 Apr 2016 08:45:13 +0000 (08:45 +0000)]
stop using rtx_insn_list in reorg.c

gcc/ChangeLog:

2016-04-24  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* reorg.c (try_merge_delay_insns): Make merged_insns a vector.

From-SVN: r235393

8 years agoadd some utility methods to vec
Trevor Saunders [Sun, 24 Apr 2016 07:47:38 +0000 (07:47 +0000)]
add some utility methods to vec

gcc/ChangeLog:

2016-04-24  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* vec.h (vec_safe_contains): New function.
(vec::contains): Likewise.
(vec::begin): Likewise.
(vec::end): Likewise.

From-SVN: r235392

8 years agoDaily bump.
GCC Administrator [Sun, 24 Apr 2016 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r235390

8 years agore PR sanitizer/70712 (False positive from AddressSanitizer with use of 'alignas')
Jakub Jelinek [Sat, 23 Apr 2016 05:28:16 +0000 (07:28 +0200)]
re PR sanitizer/70712 (False positive from AddressSanitizer with use of 'alignas')

PR sanitizer/70712
* cfgexpand.c (expand_stack_vars): Fix typo.

* c-c++-common/asan/pr70712.c: New test.

From-SVN: r235384

8 years agocompiler: Expose runtime code through Func_expression.
Ian Lance Taylor [Sat, 23 Apr 2016 04:58:00 +0000 (04:58 +0000)]
compiler: Expose runtime code through Func_expression.

    Enables us to easily check if a Call_expression is a call to a runtime
    function and, if so, which runtime function is corresponds to.
    This will be used during escape analysis.

    Reviewed-on: https://go-review.googlesource.com/18544

From-SVN: r235383

8 years agore PR libstdc++/70745 (Wrong handling of regex_constant::match_not_eow and regex_cons...
Tim Shen [Sat, 23 Apr 2016 03:58:37 +0000 (03:58 +0000)]
re PR libstdc++/70745 (Wrong handling of regex_constant::match_not_eow and regex_constant::match_not_bow)

PR libstdc++/70745
* include/bits/regex_executor.tcc (_Executor<>::_M_word_boundary):
Fix the match_not_bow and match_not_eow behavior.
* testsuite/28_regex/regression.cc: Add testcase.

From-SVN: r235382

8 years agoadd basic .gitattributes files to notice whitespace issues
Trevor Saunders [Sat, 23 Apr 2016 02:37:43 +0000 (02:37 +0000)]
add basic .gitattributes files to notice whitespace issues

gcc/testsuite/ChangeLog:

2016-04-22  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* .gitattributes: New file.

/ChangeLog:

2016-04-22  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* .gitattributes: New file.

From-SVN: r235381

8 years agocmd/go: bring in final version of gccgo pkg-config support
Ian Lance Taylor [Sat, 23 Apr 2016 00:41:03 +0000 (00:41 +0000)]
cmd/go: bring in final version of gccgo pkg-config support

    This updates gccgo to the final version of https://golang.org/cl/18790,
    by Michael Hudson-Doyle.

    Update golang/go#11739.

    Reviewed-on: https://go-review.googlesource.com/22400

From-SVN: r235380

8 years agoDaily bump.
GCC Administrator [Sat, 23 Apr 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r235379

8 years agoAdd myself as maintainer for the PowerPC port
Segher Boessenkool [Fri, 22 Apr 2016 21:18:49 +0000 (23:18 +0200)]
Add myself as maintainer for the PowerPC port

* MAINTAINERS (rs6000/powerpc port): Add myself.

From-SVN: r235373

8 years ago[testsuite] gcc-dg: handle all return values when shouldfail is set
Christophe Lyon [Fri, 22 Apr 2016 19:28:58 +0000 (19:28 +0000)]
[testsuite] gcc-dg: handle all return values when shouldfail is set

2016-04-22  Christophe Lyon  <christophe.lyon@linaro.org>

* lib/gcc-dg.exp (${tool}_load): Add default return value handler.

From-SVN: r235372

8 years ago* c-cppbuiltin.c (c_cpp_builtins): Fix __cpp_range_based_for.
Jason Merrill [Fri, 22 Apr 2016 16:16:27 +0000 (12:16 -0400)]
* c-cppbuiltin.c (c_cpp_builtins): Fix __cpp_range_based_for.

From-SVN: r235371

8 years ago* parser.c (cp_parser_perform_range_for_lookup): Decay the array.
Jason Merrill [Fri, 22 Apr 2016 16:16:21 +0000 (12:16 -0400)]
* parser.c (cp_parser_perform_range_for_lookup): Decay the array.

From-SVN: r235370

8 years agosubmodule_14.f08: Add cleanup-submodules.
Dominique d'Humieres [Fri, 22 Apr 2016 13:48:28 +0000 (15:48 +0200)]
submodule_14.f08: Add cleanup-submodules.

2016-04-22  Dominique d'Humieres  <dominiq@lps.ens.fr>

* gfortran.dg/submodule_14.f08: Add cleanup-submodules.
* gfortran.dg/submodule_15.f08: Likewise.

From-SVN: r235367

8 years ago[PATCH 2/2] (header usage fix) include c++ headers in system.h
Szabolcs Nagy [Fri, 22 Apr 2016 11:00:42 +0000 (11:00 +0000)]
[PATCH 2/2] (header usage fix) include c++ headers in system.h

2016-04-22  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* system.h (list, map, set, vector): Include conditionally.
* auto-profile.c (INCLUDE_MAP, INCLUDE_SET): Define.
* graphite-isl-ast-to-gimple.c (INCLUDE_MAP): Define.
* ipa-icf.c (INCLUDE_LIST): Define.
* config/aarch64/cortex-a57-fma-steering.c (INCLUDE_LIST): Define.
* config/sh/sh.c (INCLUDE_VECTOR): Define.
* config/sh/sh_treg_combine.cc (INCLUDE_ALGORITHM): Define.
(INCLUDE_LIST, INCLUDE_VECTOR): Define.
* cp/logic.cc (INCLUDE_LIST): Define.
* fortran/trans-common.c (INCLUDE_MAP): Define.

From-SVN: r235362

8 years ago[PATCH 1/2] (header usage fix) remove unused system header includes
Szabolcs Nagy [Fri, 22 Apr 2016 10:57:56 +0000 (10:57 +0000)]
[PATCH 1/2] (header usage fix) remove unused system header includes

2016-04-22  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* auto-profile.c: Remove <string.h> include.
* ipa-icf-gimple.c: Remove <list> include.
* diagnostic.c: Remove <new> include.
* genmatch.c: Likewise.
* pretty-print.c: Likewise.
* toplev.c: Likewise
* c/c-objc-common.c: Likewise.
* cp/error.c: Likewise.
* fortran/error.c: Likewise.

From-SVN: r235361

8 years agolto-streamer-in.c (input_ssa_names): Do not allocate GIMPLE_NOP for all SSA names.
Richard Biener [Fri, 22 Apr 2016 09:05:10 +0000 (09:05 +0000)]
lto-streamer-in.c (input_ssa_names): Do not allocate GIMPLE_NOP for all SSA names.

2016-04-22  Richard Biener  <rguenther@suse.de>

* lto-streamer-in.c (input_ssa_names): Do not allocate
GIMPLE_NOP for all SSA names.
* lto-streamer-out.c (output_ssa_names): Do not output
SSA names that should have been released.

From-SVN: r235360

8 years agore PR tree-optimization/70740 (ICE when compiling the Linux kernel (net/wireless...
Richard Biener [Fri, 22 Apr 2016 06:59:32 +0000 (06:59 +0000)]
re PR tree-optimization/70740 (ICE when compiling the Linux kernel (net/wireless/util.o))

2016-04-22  Richard Biener  <rguenther@suse.de>

PR tree-optimization/70740
* tree-ssa-phiprop.c (propagate_with_phi): Handle inserted
VDEF.

* gcc.dg/torture/pr70740.c: New testcase.

From-SVN: r235359

8 years ago* config/m68k/linux-atomic.c: Do not include unistd.h
Waldemar Brodkorb [Fri, 22 Apr 2016 05:43:43 +0000 (05:43 +0000)]
* config/m68k/linux-atomic.c: Do not include unistd.h

From-SVN: r235358

8 years agoDaily bump.
GCC Administrator [Fri, 22 Apr 2016 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r235357

8 years agoX86: Fix a typo in call_insn_operand
H.J. Lu [Thu, 21 Apr 2016 22:01:34 +0000 (22:01 +0000)]
X86: Fix a typo in call_insn_operand

r231923 has

 ;; Test for a valid operand for a call instruction.
 ;; Allow constant call address operands in Pmode only.
 (define_special_predicate "call_insn_operand"
   (ior (match_test "constant_call_address_operand
       (op, mode == VOIDmode ? mode : Pmode)")
        (match_operand 0 "call_register_no_elim_operand")
-       (and (not (match_test "TARGET_X32"))
-     (match_operand 0 "memory_operand"))))
+       (ior (and (not (match_test "TARGET_X32"))
+  (match_operand 0 "sibcall_memory_operand"))
                                   ^^^^^^^^^^^^^^^^^^^^^^^ A typo.
+     (and (match_test "TARGET_X32 && Pmode == DImode")
+  (match_operand 0 "GOT_memory_operand")))))

"sibcall_memory_operand" should be "memory_operand".

gcc/

PR target/70750
* config/i386/predicates.md (call_insn_operand): Replace
sibcall_memory_operand with memory_operand.

gcc/testsuite/

PR target/70750
* gcc.target/i386/pr70750-1.c: New test.
* gcc.target/i386/pr70750-2.c: Likewise.

From-SVN: r235353

8 years agovrp: remove redundant has_single_use tests
Patrick Palka [Thu, 21 Apr 2016 21:58:08 +0000 (21:58 +0000)]
vrp: remove redundant has_single_use tests

gcc/ChangeLog:

* tree-vrp.c (register_edge_assert_for_2): Remove redundant
has_single_use() tests.
(register_edge_assert_for_1): Likewise.
(find_assert_locations_1): Check the liveness bitmap instead of
checking has_single_use().

From-SVN: r235352

8 years agoReuse the saved_scope structures allocated by push_to_top_level
Patrick Palka [Thu, 21 Apr 2016 21:55:35 +0000 (21:55 +0000)]
Reuse the saved_scope structures allocated by push_to_top_level

gcc/cp/ChangeLog:

* name-lookup.c (free_saved_scope): New free list of saved_scope
structures.
(push_to_top_level): Attempt to reuse a saved_scope struct
from free_saved_scope instead of allocating a new one each time.
(pop_from_top_level_1): Chain the now-unused saved_scope structure
onto free_saved_scope.

From-SVN: r235351

8 years ago* sv.po: Update.
Joseph Myers [Thu, 21 Apr 2016 20:59:01 +0000 (21:59 +0100)]
* sv.po: Update.

From-SVN: r235349

8 years agore PR c++/70540 (ICE on invalid code in cxx_incomplete_type_diagnostic, at cp/typeck2...
Paolo Carlini [Thu, 21 Apr 2016 19:42:34 +0000 (19:42 +0000)]
re PR c++/70540 (ICE on invalid code in cxx_incomplete_type_diagnostic, at cp/typeck2.c:569)

/cp
2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70540
* semantics.c (process_outer_var_ref): Unconditionally return
error_mark_node when mark_used returns false.

/testsuite
2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/70540
* g++.dg/cpp0x/auto48.C: New.

From-SVN: r235348

8 years agore PR c++/70513 (ICE on invalid C++ code on x86_64-linux-gnu: Segmentation fault)
Marek Polacek [Thu, 21 Apr 2016 16:52:51 +0000 (16:52 +0000)]
re PR c++/70513 (ICE on invalid C++ code on x86_64-linux-gnu: Segmentation fault)

PR c++/70513
* parser.c (cp_parser_enum_specifier): Check and possibly error for
extra qualification.

* g++.dg/cpp0x/forw_enum12.C: New test.
* g++.dg/cpp0x/forw_enum13.C: New test.

From-SVN: r235347

8 years agoAVX-512. PR target/70728. Use separate constraint for AVX-512BW
Kirill Yukhin [Thu, 21 Apr 2016 15:29:29 +0000 (15:29 +0000)]
AVX-512. PR target/70728. Use separate constraint for AVX-512BW

PR target/70728
gcc/
* gcc/config/i386/sse.md (define_insn "<shift_insn><mode>3<mask_name>"):
Extract AVX-512BW constraint from AVX.
gcc/testsuite/
* gcc.target/i386/pr70728.c: New test.

From-SVN: r235344

8 years agoRegenerate .pot files.
Joseph Myers [Thu, 21 Apr 2016 15:23:29 +0000 (16:23 +0100)]
Regenerate .pot files.

gcc/po:
* gcc.pot: Regenerate.

libcpp/po:
* cpplib.pot: Regenerate.

From-SVN: r235342

8 years agore PR tree-optimization/70725 (Internal compiler error (ICE) on valid code)
Richard Biener [Thu, 21 Apr 2016 14:09:33 +0000 (14:09 +0000)]
re PR tree-optimization/70725 (Internal compiler error (ICE) on valid code)

2016-04-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/70725
* tree-if-conv.c (if_convertible_phi_p): Adjust guard
for phi_convertible_by_degenerating_args.
(predicate_all_scalar_phis): Handle single-argument PHIs.

From-SVN: r235341

8 years agolibgomp nvptx plugin: make cuMemFreeHost error non-fatal
Alexander Monakov [Thu, 21 Apr 2016 13:11:47 +0000 (16:11 +0300)]
libgomp nvptx plugin: make cuMemFreeHost error non-fatal

From-SVN: r235339

8 years agoCherry-pick r266868 from upstream.
Maxim Ostapenko [Thu, 21 Apr 2016 12:19:54 +0000 (12:19 +0000)]
Cherry-pick r266868 from upstream.

PR sanitizer/70624
* asan/asan_mac.cc: Cherry pick upstream r266868.

From-SVN: r235338

8 years agore PR middle-end/70747 (ICE on valid code on x86_64-linux-gnu: verify_gimple failed)
Richard Biener [Thu, 21 Apr 2016 11:52:50 +0000 (11:52 +0000)]
re PR middle-end/70747 (ICE on valid code on x86_64-linux-gnu: verify_gimple failed)

2016-04-21  Richard Biener  <rguenther@suse.de>

PR middle-end/70747
* fold-const.c (fold_comparison): Return properly typed
constant boolean.

* gcc.dg/pr70747.c: New testcase.

From-SVN: r235335

8 years agore PR tree-optimization/70715 (SCEV failed to prove no-overflow-ness information...
Bin Cheng [Thu, 21 Apr 2016 11:28:58 +0000 (11:28 +0000)]
re PR tree-optimization/70715 (SCEV failed to prove no-overflow-ness information unsigned loop IV)

PR tree-optimization/70715
* tree-ssa-loop-niter.c (loop_exits_before_overflow): Check equality
after expanding BASE using expand_simple_operations.

gcc/testsuite/ChangeLog
PR tree-optimization/70715
* gcc.dg/tree-ssa/scev-13.c: New test.

From-SVN: r235333

8 years agomin(-x, -y), min(~x, ~y)
Marc Glisse [Thu, 21 Apr 2016 10:45:11 +0000 (12:45 +0200)]
min(-x, -y), min(~x, ~y)

2016-04-21  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (min(-x, -y), max(-x, -y), min(~x, ~y), max(~x, ~y)):
New transformations.

gcc/testsuite/
* gcc.dg/tree-ssa/minmax-2.c: New testcase.

From-SVN: r235332

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 10:27:54 +0000 (12:27 +0200)]
[multiple changes]

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Match_Constituent): Treat a constant as a legal
constituent even if it is not to prevent spurious errors.

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

* sem_ch4.adb: Minor typo fixes and reformatting.

2016-04-21  Dmitriy Anisimkov  <anisimko@adacore.com>

* g-calend.ads (No_Time): The same value in any timezone.
* g-socket.adb (Raise_Host_Error): Remove ending
dot from original error message before append colon delimited
host name.

From-SVN: r235331

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 10:25:59 +0000 (12:25 +0200)]
[multiple changes]

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch3.adb: Code cleanup.
* sem_ch6.adb: Code cleanup.
(Is_Matching_Limited_View): New routine.
(Matches_Limited_With_View): Reimplemented.
* sem_ch10.adb (Decorate_Type): Code cleanup.

2016-04-21  Doug Rupp  <rupp@adacore.com>

* tracebak.c (PPC ELF): Add macro defs for lynxos178e.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Try_Container_Indexing): If there are overloaded
indexing functions, collect all overloadings of the call firts,
and then transfer them to indexing node, to prevent interleaving
of the set of interpretations of the nodes involved.
* sem_res.adb (Resolve): Suppress cascaded errors that report
ambiguities when one of the actuals in an overloaded generatlized
indexing operation is illegal and has type Any_Type, as is done
for similar cascaded errors in subprogram calls.
(Valid_Tagged_Conversion): Cleanup conversion checks when one
of the types involved is a class-wide subtype.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Load_Parent_Of_Generic): When looking for the
subprogram declaration within a wrapper package, skip pragmas
that may have been generated by aspect specifications on the
generic instance.

2016-04-21  Javier Miranda  <miranda@adacore.com>

* exp_aggr.adb (Component_Not_OK_For_Backend): Generating C
code return True for array identifiers since the backend needs
to initialize such component by means of memcpy().

From-SVN: r235330

8 years agoa-tasatt.adb, [...] (Fast_Path): Rewritten to avoid reading potentially uninitialized...
Arnaud Charlet [Thu, 21 Apr 2016 10:21:56 +0000 (10:21 +0000)]
a-tasatt.adb, [...] (Fast_Path): Rewritten to avoid reading potentially uninitialized memory.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* a-tasatt.adb, a-tasatt.ads (Fast_Path): Rewritten to avoid reading
potentially uninitialized memory.
* sem_ch3.adb: Minor style fix in comment.

From-SVN: r235329

8 years agognat_rm.texi, [...]: Update doc.
Arnaud Charlet [Thu, 21 Apr 2016 10:06:40 +0000 (10:06 +0000)]
gnat_rm.texi, [...]: Update doc.

        * gnat_rm.texi, gnat_ugn.texi,
        doc/gnat_ugn/gnat_project_manager.rst,
        doc/gnat_ugn/building_executable_programs_with_gnat.rst,
        doc/gnat_ugn/gnat_and_program_execution.rst,
        doc/gnat_ugn/gnat_utility_programs.rst,
        doc/gnat_ugn/the_gnat_compilation_model.rst,
        doc/gnat_rm/implementation_defined_attributes.rst,
        doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
        doc/gnat_rm/implementation_defined_pragmas.rst,
        doc/gnat_rm/the_gnat_library.rst,
        doc/gnat_rm/implementation_defined_aspects.rst: Update doc.
        * doc/Makefile: Cleanups.

From-SVN: r235328

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 09:54:42 +0000 (11:54 +0200)]
[multiple changes]

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_pakd.adb, sem_ch13.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* exp_dbug.adb, exp_dbug.ads (Qualify_Entity_Name): Add suffixes to
disambiguate local variables that may be hidden from inner visibility
by nested block declarations or loop variables.

From-SVN: r235327

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 09:46:18 +0000 (11:46 +0200)]
[multiple changes]

2016-04-21  Jerome Lambourg  <lambourg@adacore.com>

* s-soflin.adb: Initialize the Stack_Limit global variable.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* lib-writ.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* exp_pakd.adb (Compute_Number_Components): New function to
build an expression that computes the number of a components of
an array that may be multidimensional.
(Expan_Packed_Eq): Use it.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* g-traceb.ads: Update list of supported platforms.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Add_Predicates): if the type is declared in
an inner package it may be frozen outside of the package, and
the generated pragma has not been analyzed yet, the expression
for the predicate must be captured and added to the predicate
function at this point.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* contracts.adb (Analyze_Package_Body_Contract): Do not check
for a missing package refinement because 1) packages do not have
"refinement" and 2) the check for proper state refinement is
performed in a different place.
* einfo.adb (Has_Non_Null_Visible_Refinement): Reimplemented.
(Has_Null_Visible_Refinement): Reimplemented.
* sem_ch3.adb (Analyze_Declarations): Determine whether all
abstract states have received a refinement and if not, emit
errors.
* sem_ch7.adb (Analyze_Package_Declaration): Code
cleanup. Determine whether all abstract states of the
package and any nested packages have received a refinement
and if not, emit errors.
(Requires_Completion_In_Body): Add new formal parameter
Do_Abstract_States. Update the comment on usage. Propagate the
Do_Abstract_States flag to all Unit_Requires_Body calls.
(Unit_Requires_Body): Remove formal
parameter Ignore_Abstract_States. Add new formal paramter
Do_Abstract_States. Propagate the Do_Abstract_States flag to
all Requires_Completion_In calls.
* sem_ch7.ads (Unit_Requires_Body): Remove formal
parameter Ignore_Abstract_States. Add new formal paramter
Do_Abstract_States. Update the comment on usage.
* sem_ch9.adb (Analyze_Single_Protected_Declaration): Do
not initialize the constituent list as this is now done on a
need-to-add-element basis.
(Analyze_Single_Task_Declaration):
Do not initialize the constituent list as this is now done on
a need-to-add-element basis.
* sem_ch10.adb (Decorate_State): Do not initialize the constituent
lists as this is now done on a need-to-add-element basis.
* sem_prag.adb (Analyze_Constituent): Set the
refinement constituents when adding a new element.
(Analyze_Part_Of_In_Decl_Part): Set the Part_Of constituents when
adding a new element.
(Analyze_Part_Of_Option): Set the Part_Of
constituents when adding a new element.
(Analyze_Pragma): Set the Part_Of constituents when adding a new
element.
(Check_Constituent_Usage (all versions)): Reimplemented.
(Collect_Constituent): Set the refinement constituents when adding
a new element.
(Create_Abstract_State): Do not initialize the
constituent lists as this is now done on a need-to-add-element basis.
(Propagate_Part_Of): Set the Part_Of constituents when
adding a new element.
* sem_util.adb (Check_State_Refinements): New routine.
(Has_Non_Null_Refinement): Reimplemented.
(Has_Null_Refinement): Reimplemented.
(Requires_State_Refinement): Removed.
* sem_util.ads (Check_State_Refinements): New routine.
(Requires_State_Refinement): Removed.

From-SVN: r235326

8 years agolib-writ.adb, [...]: Minor reformatting and code cleanup.
Hristian Kirtchev [Thu, 21 Apr 2016 09:41:45 +0000 (09:41 +0000)]
lib-writ.adb, [...]: Minor reformatting and code cleanup.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* lib-writ.adb, sem_ch6.adb: Minor reformatting and code cleanup.
* sem.adb: Fix comment.

From-SVN: r235325

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 09:39:38 +0000 (11:39 +0200)]
[multiple changes]

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Subtype_Declaration): A subtype
declaration with no aspects, whose subtype_mark is a subtype
with predicates, inherits the list of subprograms for the type.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* exp_aggr.adb (Has_Per_Object_Constraint): Refine previous
change.

2016-04-21  Thomas Quinot  <quinot@adacore.com>

* g-socket.adb (Raise_Host_Error): Include additional Name parameter.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* lib-writ.adb (Write_ALI): Do not record in ali file units
that are present in the files table but not analyzed. These
units are present because they appear in the context of units
named in limited_with clauses, and the unit being compiled does
not depend semantically on them.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Simplify code to
create the procedure body for an function returning an array type,
when generating C code. Reuse the subprogram body rather than
creating a new one, both as an efficiency measure and because
in an instance the body may contain global references that must
be preserved.

From-SVN: r235324

8 years agomax(INT_MIN, x) -> x
Marc Glisse [Thu, 21 Apr 2016 09:32:32 +0000 (11:32 +0200)]
max(INT_MIN, x) -> x

2016-04-21  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (min(int_max, x), max(int_min, x)): New transformations.

gcc/testsuite/
* gcc.dg/tree-ssa/minmax-1.c: New testcase.

From-SVN: r235323

8 years agosem_ch3.adb, [...]: Minor reformatting.
Hristian Kirtchev [Thu, 21 Apr 2016 09:26:02 +0000 (09:26 +0000)]
sem_ch3.adb, [...]: Minor reformatting.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch3.adb, exp_attr.adb, exp_ch6.adb, exp_aggr.adb: Minor
reformatting.

From-SVN: r235322

8 years agoexp_aggr.adb (Component_Check): Extend the check that verifies that the aggregate...
Javier Miranda [Thu, 21 Apr 2016 09:18:57 +0000 (09:18 +0000)]
exp_aggr.adb (Component_Check): Extend the check that verifies that the aggregate has no function calls to...

2016-04-21  Javier Miranda  <miranda@adacore.com>

* exp_aggr.adb (Component_Check): Extend
the check that verifies that the aggregate has no function
calls to handle transformations performed by the frontend.
(Ultimate_Original_Expression): New subprogram.

From-SVN: r235321

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 09:12:45 +0000 (11:12 +0200)]
[multiple changes]

2016-04-21  Philippe Gil  <gil@adacore.com>

* krunch.adb (Krunch): Fix krunching of i-java.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* exp_ch8.adb (Evaluation_Required): Always return
True when Modify_Tree_For_C.

From-SVN: r235320

8 years agoipa-inline.c (can_inline_edge_p): Pass caller info to ultiimate_alias_target.
Jan Hubicka [Thu, 21 Apr 2016 09:08:08 +0000 (11:08 +0200)]
ipa-inline.c (can_inline_edge_p): Pass caller info to ultiimate_alias_target.

* ipa-inline.c (can_inline_edge_p): Pass caller info to
ultiimate_alias_target.
(update_callee_keys): Likewise.
(lookup_recursive_calls): Likewise.
(speculation_useful_p): Likewise.

From-SVN: r235319

8 years agore PR c++/70018 (Possible issue around IPO and C++ comdats discovered as pure/const)
Jan Hubicka [Thu, 21 Apr 2016 09:05:07 +0000 (11:05 +0200)]
re PR c++/70018 (Possible issue around IPO and C++ comdats discovered as pure/const)

PR ipa/70018
* cgraph.c (cgraph_set_nothrow_flag_1): Rename to ...
(set_nothrow_flag_1): ... this; handle interposition correctly;
recurse on aliases and thunks.
(cgraph_node::set_nothrow_flag): New.
* ipa-pure-const.c (ignore_edge_for_nothrow): Ignore calls to
functions compiled with non-call exceptions that binds to current
def.
(propagate_nothrow): Be safe WRT interposition.
* cgraph.h (set_nothrow_flag): Update prototype.

* g++.dg/ipa/nothrow-1.C: New testcase.

From-SVN: r235318

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:57:30 +0000 (10:57 +0200)]
[multiple changes]

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

* gnatlink.adb (Gnatlink): Robustify detection of Windows target.
* alloc.ads: Minor comment fixes.
* einfo.ads: Fix typo.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* exp_aggr.adb (Component_Not_OK_For_Backend): Redo previous
changes to handle all cases of components depending on the
discriminant, not just string literals.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Subtype_Declaration): If the subtype
declaration is the generated declaration for a generic actual,
inherit predicates from the actual if it is a predicated subtype.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* exp_ch6.adb (Rewrite_Function_Call_For_C): If the function is
inherited and its result is controlling,  introduce a conversion
on the actual for the corresponding procedure call, to avoid
spurious type errors.

2016-04-21  Jerome Lambourg  <lambourg@adacore.com>

* krunch.adb (Krunch): Fix krunching of i-vxworks.

From-SVN: r235317

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:54:25 +0000 (10:54 +0200)]
[multiple changes]

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

* exp_aggr.adb: Minor reformatting and code cleanup.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Resolve_Name): Omit quantified expressions from
resolution, because they introduce local names. Full resolution
will take place when predicate function is constructed.

From-SVN: r235316

8 years agotree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also max_loop_iterations_int.
Jan Hubicka [Thu, 21 Apr 2016 08:52:41 +0000 (10:52 +0200)]
tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also max_loop_iterations_int.

* tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also
max_loop_iterations_int.
(tree_unswitch_outer_loop): Likewise.

From-SVN: r235315

8 years agoexp_aggr.adb (Component_Not_OK_For_Backend): Refine previous change to take into...
Arnaud Charlet [Thu, 21 Apr 2016 08:52:31 +0000 (08:52 +0000)]
exp_aggr.adb (Component_Not_OK_For_Backend): Refine previous change to take into account Per_Object_Constraint field rather...

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* exp_aggr.adb (Component_Not_OK_For_Backend): Refine previous
change to take into account Per_Object_Constraint field rather
than special casing strings.
* exp_ch6.adb: Fix typo in Replace_Returns.

From-SVN: r235314

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:50:36 +0000 (10:50 +0200)]
[multiple changes]

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch5.adb: Minor reformatting.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

* exp_ch2.adb (Expand_Current_Value): Make an appropriate
character literal if the entity is of a character type.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

* exp_aggr.adb (Backend_Processing_Possible): Return False
when generating C and aggregate contains function calls.

2016-04-21  Tristan Gingold  <gingold@adacore.com>

* krunch.adb (Krunch): Only partially krunch children of
Interfaces that aren't known.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Make_Inline): Handle properly the instantiation
of a generic subpprogram that carries an Inline aspect. Place
inline info on the anonymous subprogram that is constructed in
the wrapper package.
(Analyze_Pragma, case Pure): Do not check placement if pragma
appears within an instantiation, which can be nested at any level.
* sem_ch12.adb (Analyze_Instance_And_Renamings): Do not copy Freeze
node from anonymous subprogram to its visible renaming. The
freeze node will be constructed if the subprogram carries
delayed aspects.
(Set_Global): Preserve dimension information if present (from
code reading).

2016-04-21  Vasiliy Fofanov  <fofanov@adacore.com>

* gnatlink.adb: Change wording of the warning message on
problematic filenames to be more neutral. Add a new substring
"patch" introduced on Windows 10.

From-SVN: r235313

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:48:04 +0000 (10:48 +0200)]
[multiple changes]

2016-04-21  Philippe Gil  <gil@adacore.com>

* tracebak.c (__gnat_backtrace): handle bad RIP values (win64 only)

2016-04-21  Javier Miranda  <miranda@adacore.com>

* exp_aggr.adb (Component_Not_OK_For_Backend): Return true for string
literals.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb (Has_Non_Null_Abstract_State): New routine.
* einfo.ads New synthesized attribute
Has_Non_Null_Abstract_State along with occurrences in entities.
(Has_Non_Null_Abstract_State): New routine.
* sem_ch7.adb (Unit_Requires_Body): Add local variable
Requires_Body. A package declaring an abstract state requires
a body only when the state is non-null and the package contains
at least one other construct that requires completion in a body.
* sem_util.adb (Mode_Is_Off): Removed.
(Requires_State_Refinement): Remove an obsolete check. Code
cleanup.

2016-04-21  Bob Duff  <duff@adacore.com>

* sem_attr.adb (Analyze_Attribute): In processing
the 'Old attribute, a warning is given for infinite recursion. Fix
the code to not crash when the prefix of 'Old denotes a protected
function.
* sem_ch5.adb (Analyze_Iterator_Specification):
Avoid calling Is_Dependent_Component_Of_Mutable_Object in cases
where the parameter would not be an object.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

* sem_eval.adb (Compile_Time_Compare): Be prepared for an empty
Etype or Underlying_Type of the operands.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

* atree.adb (Print_Statistics): Protect against overflows and
print the memory consumption in bytes.
* table.adb (Reallocate): Do the intermediate calculation of the new
size using the Memory.size_t type.

From-SVN: r235312

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:30:19 +0000 (10:30 +0200)]
[multiple changes]

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Suppress
expansion of Attribute_Machine and Attribute_Model for AAMP.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb: Disable previous change for now.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch8.adb (Find_Selected_Component): If prefix has an
access type and designated type is a limited view, introduce
an explicit dereference before continuing the analysis, and
set its type to the non-limited view of the designated type,
if we are in context where it is available.

From-SVN: r235311

8 years agoMinor reformatting.
Arnaud Charlet [Thu, 21 Apr 2016 08:27:18 +0000 (10:27 +0200)]
Minor reformatting.

From-SVN: r235310

8 years agofreeze.adb: Freeze profile in ASIS mode.
Ed Schonberg [Thu, 21 Apr 2016 08:26:57 +0000 (08:26 +0000)]
freeze.adb: Freeze profile in ASIS mode.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb: Freeze profile in ASIS mode.

From-SVN: r235309

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:25:21 +0000 (10:25 +0200)]
[multiple changes]

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_aux.ads, sem_aux.adb (Has_Rep_Item): New variant.
* sem_util.adb (Inherit_Rep_Item_Chain): Reimplemented.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch6.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb: Minor comment update.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* freeze.ads, freeze.adb (Freeze_Entity, Freeze_Before): Add
boolean parameter to determine whether freezing an overloadable
entity freezes its profile as well. This is required by
AI05-019. The call to Freeze_Profile within Freeze_Entity is
conditioned by the value of this flag, whose default is True.
* sem_attr.adb (Resolve_Attribute, case 'Access): The attribute
reference freezes the prefix, but it the prefix is a subprogram
it does not freeze its profile.

From-SVN: r235308

8 years ago[multiple changes]
Arnaud Charlet [Thu, 21 Apr 2016 08:23:05 +0000 (10:23 +0200)]
[multiple changes]

2016-04-21  Javier Miranda  <miranda@adacore.com>

* exp_util.adb (Build_Procedure_Form): No action needed for
subprogram renamings since the backend can generate the call
using the renamed subprogram. This leaves the tree more clean
to the backend.
* exp_ch6.adb (Expand_Call): Extend previous patch for
rewritten-for-c entities to handle subprogram renamings.
(Rewrite_Function_Call_For_C): Handle subprogram renamings.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb: Code cleanup.

From-SVN: r235307

8 years agosem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is created for SPARK_To_C...
Ed Schonberg [Thu, 21 Apr 2016 08:21:47 +0000 (08:21 +0000)]
sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is created for SPARK_To_C...

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is
created for SPARK_To_C, the entity must remain invisible so it
does not overload subsequent references to the original function.
* exp_ch6.adb (Build_Procedure_Body_Form, Replace_Returns):
Handle Extended_Return_Statements by replacing it with a block
with assignments and a simple return statement.
* exp_util.adb (Build_Procedure_Form): Make procedure entity
invisible after analyzing declaration, to prevent improper
overloading.

From-SVN: r235306

8 years agosem_ch6.adb (Build_Subprogram_Declaration): Propagate the attribute Rewritten_For_C...
Javier Miranda [Thu, 21 Apr 2016 08:20:59 +0000 (08:20 +0000)]
sem_ch6.adb (Build_Subprogram_Declaration): Propagate the attribute Rewritten_For_C to the body since since the expander...

2016-04-21  Javier Miranda  <miranda@adacore.com>

* sem_ch6.adb (Build_Subprogram_Declaration): Propagate the
attribute Rewritten_For_C to the body since since the expander
may generate calls using that entity.
* exp_ch6.adb (Expand_Call): For internally generated
calls ensure that they reference the entity of the spec
of the called function.
(Rewritten_For_C_Func_Id): New subprogram.
(Rewritten_For_C_Proc_Id): New subprogram.
(Rewrite_Function_Call_For_C): Invoke the new subprogram to
ensure that we skip freezing entities.
* exp_util.adb (Build_Procedure_Form): No action needed if the
procedure was already built.

From-SVN: r235305