- 22 May, 2018 13 commits
-
-
This path fixes a spurious size error on a fixed point that carries an aspect specification for the 'Small of the type, when there is a subsequent derivation of that type before the type is frozen, the given 'Small is not not a power of two, and the bounds of the type require its full size, also given by an aspect specification. 2018-05-22 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * freeze.adb (Freeze_Fixed_Point_Type): If the first subtype has delayed aspects, analyze them now, os that the representation of the type (size, bounds) can be computed and validated. gcc/testsuite/ * gnat.dg/fixedpnt3.adb: New testcase. From-SVN: r260511
Ed Schonberg committed -
We now only have the executable code section boundaries at hand, so can only infer offsets for symbols within those boundaries. Symbols outside of this region are non-text symbols, pointless for traceback symbolization anyway. 2018-05-22 Olivier Hainque <hainque@adacore.com> gcc/ada/ * libgnat/s-dwalin.adb (Enable_Cache): Skip symbols outside of the executable code section boundaries. From-SVN: r260510
Olivier Hainque committed -
This patch adds generic support for the Ada.Locales package that relies on the setlocale() C service. 2018-05-22 Javier Miranda <miranda@adacore.com> gcc/ada/ * locales.c: New implementation for the Ada.Locales package. * libgnat/a-locale.ads: Remove comment indicating that this is not implemented. * doc/gnat_rm/standard_library_routines.rst: Remove comment indicating that this is not implemented. * gnat_rm.texi: Regenerate. From-SVN: r260509
Javier Miranda committed -
2018-05-22 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch5.adb, freeze.adb, pprint.adb, sem_ch4.adb, sem_res.adb: Minor reformattings. From-SVN: r260508
Hristian Kirtchev committed -
This patch fixes an issue whereby placement of the pragma/aspect Pure_Function was not verified to have been in the same declarative part as the function declaration incorrectly allowing it to appear after a function body or in a different region like a private section. 2018-05-22 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch12.adb (In_Same_Declarative_Part): Moved to sem_util. (Freeze_Subprogram_Body, Install_Body): Modify calls to In_Same_Declarative_Part. * sem_prag.adb (Analyze_Pragma-Pragma_Pure_Function): Add check to verify pragma declaration is within the same declarative list with corresponding error message. * sem_util.adb, sem_util.ads (In_Same_Declarative_Part): Moved from sem_ch12.adb and generalized to be useful outside the scope of freezing. gcc/testsuite/ * gnat.dg/pure_function1.adb, gnat.dg/pure_function1.ads, gnat.dg/pure_function2.adb, gnat.dg/pure_function2.ads: New testcases. From-SVN: r260507
Justin Squirek committed -
This patch modifies the analysis of subprogram declarations to ensure that an aspect which is converted into a categorization pragma is properly taken into account when verifying the dependencies of a subprogram unit. ------------ -- Source -- ------------ -- pack.ads package Pack is end Pack; -- proc1.ads with Pack; procedure Proc1 with Pure; -- proc2.ads with Pack; procedure Proc2; pragma Pure (Proc2); ---------------------------- -- Compilation and output -- ---------------------------- $ gcc -c proc1.ads $ gcc -c proc2.ads proc1.ads:1:06: cannot depend on "Pack" (wrong categorization) proc1.ads:1:06: pure unit cannot depend on non-pure unit proc2.ads:1:06: cannot depend on "Pack" (wrong categorization) proc2.ads:1:06: pure unit cannot depend on non-pure unit 2018-05-22 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Subprogram_Declaration): Set the proper categorization of the unit after processing the aspects in case one of its aspects is converted into a categorization pragma. From-SVN: r260506
Hristian Kirtchev committed -
This PR showed that the normal function for expanding directly-mapped internal functions didn't handle the case in which the call was only being kept for its side-effects. 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR middle-end/85862 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs. gcc/testsuite/ PR middle-end/85862 * gcc.dg/torture/pr85862.c: New test. From-SVN: r260504
Richard Sandiford committed -
2018-05-22 Richard Biener <rguenther@suse.de> PR tree-optimization/85834 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle non-constant and non-zero memset arguments. * g++.dg/torture/pr85834.C: New testcase. * gcc.dg/tree-ssa/ssa-fre-64.c: Likewise. From-SVN: r260503
Richard Biener committed -
2018-05-22 Martin Liska <mliska@suse.cz> PR ipa/85607 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types. 2018-05-22 Martin Liska <mliska@suse.cz> PR ipa/85607 * g++.dg/ipa/pr85607.C: New test. From-SVN: r260502
Martin Liska committed -
re PR tree-optimization/85863 (ICE in compiling spec2006 fortran test case solib.fppized.f starting with r260283) 2018-05-22 Richard Biener <rguenther@suse.de> PR tree-optimization/85863 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant comparisons when vectype is specified. (vectorizable_condition): Do not specify vectype for vect_is_simple_cond when SLP vectorizing. * gfortran.fortran-torture/compile/pr85863.f: New testcase. From-SVN: r260501
Richard Biener committed -
From-SVN: r260500
Bin Cheng committed -
2018-05-22 Janus Weil <janus@gcc.gnu.org> PR fortran/85841 * libgfortran.h: Remove the macros GFC_STD_F2008_TS and GFC_STD_OPT_F08TS. * error.c (notify_std_msg): Remove GFC_STD_F2008_TS. * options.c (set_default_std_flags): Ditto. (gfc_handle_option): Make -std=f2008ts an alias for -std=f2018. * array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by GFC_STD_F2018. * check.c (gfc_check_atomic, gfc_check_event_query, gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto. * decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto. * intrinsic.c (add_functions, add_subroutines, gfc_check_intrinsic_standard): Ditto. * iso-c-binding.def: Ditto. * iso-fortran-env.def: Ditto. * match.c (gfc_match_event_post, gfc_match_event_wait, gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team, gfc_match_end_team, gfc_match_sync_team): Ditto. * gfortran.texi: Remove mention of -std=f2008ts. Move TSs into F2018 section. * invoke.texi: Update documentation of -std=f2008ts. 2018-05-22 Janus Weil <janus@gcc.gnu.org> PR fortran/85841 * gfortran.dg/assumed_rank_5.f90: Update error message. * gfortran.dg/assumed_type_4.f90: Ditto. * gfortran.dg/bind_c_array_params.f03: Ditto. * gfortran.dg/bind_c_usage_28.f90: Ditto. * gfortran.dg/c_funloc_tests_5.f03: Ditto. * gfortran.dg/c_funloc_tests_6.f90: Ditto. * gfortran.dg/c_loc_tests_11.f03: Ditto. * gfortran.dg/coarray_atomic_2.f90: Ditto. * gfortran.dg/coarray_collectives_2.f90: Ditto. * gfortran.dg/coarray_collectives_10.f90: Ditto. * gfortran.dg/coarray_collectives_13.f90: Ditto. * gfortran.dg/rank_3.f90: Ditto. * gfortran.dg/error_stop_4.f90: Replace -std=f2008ts by -std=f2008. * gfortran.dg/implicit_14.f90: Ditto. From-SVN: r260499
Janus Weil committed -
From-SVN: r260497
GCC Administrator committed
-
- 21 May, 2018 27 commits
-
-
From-SVN: r260492
Joseph Myers committed -
2018-05-21 Christian Groessler <chris@groessler.org> * gcc.c-torture/compile/simd-5.c: Fix comment. From-SVN: r260491
Christian Groessler committed -
re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM double-double format) 2018-05-21 Michael Meissner <meissner@linux.ibm.com> PR target/85657 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not define __ibm128 as long double. * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128 as a distinct type with IEEE 128-bit floating point is supported. (init_float128_ieee): Fix up conversions between IFmode and IEEE 128-bit types to use the correct functions. (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to convert between 128-bit floating point types that have different modes but the same representation, instead of using gen_lowpart to makean alias. * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and KFmode. (IFKF_reg): New attributes to give the register constraints for IFmode and KFmode. (extend<mode>tf2_internal): New insns to mark an explicit conversion between 128-bit floating point types that have a different mode but share the same representation. [gcc/testsuite] 2018-05-21 Michael Meissner <meissner@linux.ibm.com> PR target/85657 * gcc.target/powerpc/pr85657-1.c: New test for converting between __float128, __ibm128, and long double. * gcc.target/powerpc/pr85657-2.c: Likewise. * gcc.target/powerpc/pr85657-3.c: Likewise. * g++.dg/pr85667.C: New test to make sure __ibm128 is implementated as a separate type internally, and is not just an alias for long double. From-SVN: r260490
Michael Meissner committed -
re PR target/85657 (Make __ibm128 a separate type, even if long double uses the IBM double-double format) [gcc] 2018-05-21 Michael Meissner <meissner@linux.ibm.com> PR target/85657 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not define __ibm128 as long double. * config/rs6000/rs6000.c (rs6000_init_builtins): Always create __ibm128 as a distinct type. (init_float128_ieee): Fix up conversions between IFmode and IEEE 128-bit types to use the correct functions. (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to convert between 128-bit floating point types that have different modes but the same representation, instead of using gen_lowpart to makean alias. * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and KFmode. (IFKF_reg): New attributes to give the register constraints for IFmode and KFmode. (extend<mode>tf2_internal): New insns to mark an explicit conversion between 128-bit floating point types that have a different mode but share the same representation. [gcc/testsuite] 2018-05-21 Michael Meissner <meissner@linux.ibm.com> PR target/85657 * gcc.target/powerpc/pr85657-1.c: New test for converting between __float128, __ibm128, and long double. * gcc.target/powerpc/pr85657-2.c: Likewise. * gcc.target/powerpc/pr85657-3.c: Likewise. * g++.dg/pr85667.C: New test to make sure __ibm128 is implementated as a separate type internally, and is not just an alias for long double. From-SVN: r260489
Michael Meissner committed -
In this PR we have: c_5 = c_4(D) + 4; c_12 = c_5 + 1; *c_5 = 2; a = 2; // A c_21 = c_12 + 1; *c_12 = 2; a = 2; // B c_28 = c_21 + 1; *c_21 = 2; a = 2; c_7 = c_28 + 1; *c_28 = 2; where a is a global int. We decide that A can't clobber *c_5 == c_4[4] because the latter implies that c_4 is an object of 5 bytes or more, whereas a has exactly 4 bytes. The assumption for B and *c_5 is the same, but when considering B and *c_12, we only follow the definition of c_12 to c_5 + 1 (for good reason) and so have *c_12 == c_5[1]. We then don't have the same size guarantee and so assume that B could clobber *c_12. This leads to a situation in which the strinfo for c_5 is still valid but the next strinfo (c_12) isn't. We then segfaulted while trying to get the strinfo for c_21 + 1 == c_5 + 3 because get_stridx_plus_constant assumed that c_5's next strinfo (c_12) would be valid too. And of course it should be valid really. It doesn't make sense for the string based at c_5 to be valid but a substring of it to be invalid. I don't think we can guarantee that such weird corner cases never happen though, even if we tried to avoid this one. One possibility would be to mark c_12 as valid on the basis that c_5 is valid, but I'm not sure the complication is worth it given that it seems to trigger very rarely. A better optimisation would be to get the unroller to clean up after itself a bit more... Although this particular instance of the bug relies on r249880, I think we could have similar problems in GCC 7. It would be much harder to trigger though, especially since it relies on unfolded IR like the above. 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR tree-optimization/85814 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with a null return from get_strinfo when unsharing the next strinfo in the chain. gcc/testsuite/ PR tree-optimization/85814 * gcc.dg/torture/pr85814.c: New test. From-SVN: r260488
Richard Sandiford committed -
2018-05-21 Janus Weil <janus@gcc.gnu.org> PR fortran/85841 PR testsuite/85865 * testsuite/libgomp.fortran/collapse2.f90: Add option "-std=legacy". * testsuite/libgomp.fortran/omp_atomic2.f90: Ditto. * testsuite/libgomp.fortran/omp_parse1.f90: Ditto. * testsuite/libgomp.fortran/omp_parse3.f90: Ditto. * testsuite/libgomp.fortran/task2.f90: Ditto. * testsuite/libgomp.fortran/vla1.f90: Ditto. * testsuite/libgomp.fortran/vla2.f90: Ditto. * testsuite/libgomp.fortran/vla3.f90: Ditto. * testsuite/libgomp.fortran/vla4.f90: Ditto. * testsuite/libgomp.fortran/vla5.f90: Ditto. * testsuite/libgomp.fortran/vla6.f90: Ditto. * testsuite/libgomp.fortran/vla8.f90: Ditto. * testsuite/libgomp.oacc-fortran/collapse-2.f90: Ditto. * testsuite/libgomp.oacc-fortran/nested-function-1.f90: Ditto. From-SVN: r260487
Janus Weil committed -
2018-05-21 Paolo Carlini <paolo.carlini@oracle.com> * parser.c (cp_parser_parameter_declaration_list): Remove bool* parameter. (cp_parser_parameter_declaration_clause): Adjust. (cp_parser_cache_defarg): Likewise. From-SVN: r260486
Paolo Carlini committed -
PR gcc/84923 * varasm.c (weak_finish): Clean up weak_decls. From-SVN: r260485
Vladimir Mezentsev committed -
/cp 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84588 * parser.c (cp_parser_maybe_commit_to_declaration, cp_parser_check_condition_declarator): New. (cp_parser_simple_declaration): Use the first above. (cp_parser_condition): Use both the above; enforce [stmt.stmt]/2 about the declarator not specifying a function or an array; improve error-recovery. /testsuite 2018-05-21 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84588 * g++.dg/cpp0x/cond1.C: New. * g++.dg/cpp1y/pr84588-1.C: Likewise. * g++.dg/cpp1y/pr84588-2.C: Likewise. * g++.dg/cpp1y/pr84588-3.C: Likewise. * g++.dg/parse/cond6.C: Likewise. * g++.dg/parse/cond7.C: Likewise. * g++.dg/parse/cond8.C: Likewise. * g++.dg/cpp1z/decomp16.C: Update. * g++.old-deja/g++.jason/cond.C: Likewise. From-SVN: r260482
Paolo Carlini committed -
2018-05-21 Steven G. Kargl <kargl@gcc.gnu.org> ChangeLog for r260480 * gfortran.dg/graphite/block-2.f: Adjust testcase for new gfortran warnings for deleted and obsolescent features. * gfortran.dg/graphite/id-19.f: Ditto. * gfortran.dg/graphite/id-20.f: Ditto. * gfortran.dg/graphite/id-27.f90: Ditto. * gfortran.dg/graphite/pr82449.f: Ditto. From-SVN: r260481
Steven G. Kargl committed -
2018-05-21 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.dg/graphite/block-2.f: Adjust testcase for new gfortran warnings for deleted and obsolescent features. * gfortran.dg/graphite/id-19.f: Ditto. * gfortran.dg/graphite/id-20.f: Ditto. * gfortran.dg/graphite/id-27.f90: Ditto. * gfortran.dg/graphite/pr82449.f: Ditto. From-SVN: r260480
Steven G. Kargl committed -
C++17 added new overloads to <fstream> class templates to support opening files from wide character strings "on systems where filesystem::path::value_type is not char". This patch adds those overloads conditional on _wfopen being available, and enables them for pre-C++17 modes as well. Add support for opening file streams from wide character strings. * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN] (__basic_file<char>::open(const wchar_t*, ios_base::openmode)): Define new overload. * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN] (__basic_file<char>::open(const wchar_t*, ios_base::openmode)): Declare new overload. * configure.ac: Check for _wfopen. * crossconfig.m4: Likewise. * configure: Regenerate. * config.h.in: Regenerate. * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN] (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)): Define new overload. * include/std/fstream [_GLIBCXX_HAVE__WFOPEN] (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)): Declare new overload. [_GLIBCXX_HAVE__WFOPEN] (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode)) (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode)) (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode)) (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode)) (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode)) (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define new overloads. * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New. * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New. * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New. * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New. * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New. * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New. * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New. From-SVN: r260479
Jonathan Wakely committed -
2018-05-21 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/85845 * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept qualification. From-SVN: r260478
François Dumont committed -
This recently-committed test fails the INS scan for tiny and large memory models. That is because instead of the: make_vector: adrp x1, a adrp x0, b movi v0.4s, 0 ldr s2, [x1, #:lo12:a] ldr s1, [x0, #:lo12:b] ins v0.s[2], v2.s[0] ins v0.s[3], v1.s[0] ret That we generate for the default small model, we end up with a simple register addressing mode with no addend/offset for the lane load: make_vector: movi v0.4s, 0 adr x1, a adr x0, b ld1 {v0.s}[2], [x1] ld1 {v0.s}[3], [x0] ret and make_vector: movi v0.4s, 0 adrp x0, .LC0 ldr x1, [x0, #:lo12:.LC0] adrp x0, .LC1 ldr x0, [x0, #:lo12:.LC1] ld1 {v0.s}[2], [x1] ld1 {v0.s}[3], [x0] ret So we end up merging the load and the lane insert. This patch adjusts the testcase to scan for the right thing accordingly. Checked that the testcase passes with -mcmodel=tiny, -mcmodel=small, -mcmodel=large. * gcc.target/aarch64/vec_init_1.c: Scan for LD1 instead of INS for tiny and large memory models. From-SVN: r260474
Kyrylo Tkachov committed -
From-SVN: r260472
Pierre-Marie de Rodat committed -
The compiler warns on an object declaration with default initialization and an address clause, to indicate that the overlay implied by the address clause might affect a value elsewhere. The warning is suppressed if the type carries the Suppress_Initialization aspect. With this patch the compiler also inhibits the warning if the aspect is specified for the object itself. 2018-05-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * freeze.adb (Warn_Overlay): Do not emit a wawrning on an object declaration with an explicit address clause and a type with default initialization, if the declaration carries an aspect Suppress_Initialization. gcc/testsuite/ * gnat.dg/suppress_initialization.adb, gnat.dg/suppress_initialization_pkg.ads: New testcase. From-SVN: r260471
Ed Schonberg committed -
2018-05-21 Daniel Mercier <mercier@adacore.com> gcc/ada/ * pprint.adb: Use mixed case for attribute names. From-SVN: r260470
Daniel Mercier committed -
This patch ensures that aspect specifications which appear on package, protected, and task body stubs are properly analyzed. ------------ -- Source -- ------------ -- pack.ads package Pack with SPARK_Mode, Abstract_State => State is ------------------------------------- -- Refined_Depends, Refined_Global -- ------------------------------------- procedure Proc_1; procedure Proc_2 with Global => (In_Out => State), Depends => (State => State); task Task_Obj_1; task Task_Obj_2 with Global => (In_Out => State), Depends => (State => State); ------------------ -- Refined_Post -- ------------------ function Func_1 (Formal : Integer) return Integer; function Func_2 (Formal : Integer) return Integer with Post => Func_2'Result > Formal; ------------------- -- Refined_State -- ------------------- package Pack_1 is end Pack_1; package Pack_2 with Abstract_State => State_2 is end Pack_2; ---------------- -- SPARK_Mode -- ---------------- package Pack_3 with SPARK_Mode => Off is end Pack_3; package Pack_4 with SPARK_Mode => Off is end Pack_4; package Pack_5 is end Pack_5; protected type Prot_Typ_1 with SPARK_Mode => Off is end Prot_Typ_1; protected type Prot_Typ_2 with SPARK_Mode => Off is end Prot_Typ_2; protected type Prot_Typ_3 is end Prot_Typ_3; procedure Proc_3 with SPARK_Mode => Off; procedure Proc_4 with SPARK_Mode => Off; procedure Proc_5; task type Task_Typ_1 with SPARK_Mode => Off; task type Task_Typ_2 with SPARK_Mode => Off; task type Task_Typ_3; end Pack; -- pack.adb package body Pack with SPARK_Mode, Refined_State => (State => Constit) is Constit : Integer := 0; ------------------------------------- -- Refined_Depends, Refined_Global -- ------------------------------------- procedure Proc_1 is separate with Refined_Global => (In_Out => Constit), -- Error Refined_Depends => (Constit => Constit); -- Error procedure Proc_2 is separate with Refined_Global => (In_Out => Constit), -- OK Refined_Depends => (Constit => Constit); -- OK task body Task_Obj_1 is separate with Refined_Global => (In_Out => Constit), -- Error Refined_Depends => (Constit => Constit); -- Error task body Task_Obj_2 is separate with Refined_Global => (In_Out => Constit), -- OK Refined_Depends => (Constit => Constit); -- OK ------------------ -- Refined_Post -- ------------------ function Func_1 (Formal : Integer) return Integer is separate with Refined_Post => Func_1'Result > Formal; -- OK function Func_2 (Formal : Integer) return Integer is separate with Refined_Post => Func_2'Result > Formal; -- OK ------------------- -- Refined_State -- ------------------- package body Pack_1 is separate with Refined_State => (State_1 => Constit_1); -- Error package body Pack_2 is separate with Refined_State => (State_2 => Constit_2); -- Error ---------------- -- SPARK_Mode -- ---------------- package body Pack_3 is separate with SPARK_Mode => On; -- Error package body Pack_4 is separate; package body Pack_5 is separate with SPARK_Mode => Off; -- Error protected body Prot_Typ_1 is separate with SPARK_Mode => On; -- Error protected body Prot_Typ_2 is separate; protected body Prot_Typ_3 is separate with SPARK_Mode => Off; -- Error procedure Proc_3 is separate with SPARK_Mode => On; -- Error procedure Proc_4 is separate; procedure Proc_5 is separate with SPARK_Mode => Off; -- Error task body Task_Typ_1 is separate with SPARK_Mode => On; -- Error task body Task_Typ_2 is separate; task body Task_Typ_3 is separate with SPARK_Mode => Off; -- Error end Pack; -- pack-func_1.adb separate (Pack) function Func_1 (Formal : Integer) return Integer with Refined_Post => Func_1'Result > Formal -- Error is begin return Formal * 10; end Func_1; -- pack-func_2.adb separate (Pack) function Func_2 (Formal : Integer) return Integer with Refined_Post => Func_2'Result > Formal -- Error is begin return Formal * 10; end Func_2; -- pack-pack_1.adb separate (Pack) package body Pack_1 with SPARK_Mode, Refined_State => (State_1 => Constit_1) -- Error is Constit_1 : Integer := 1; end Pack_1; -- pack-pack_2.adb separate (Pack) package body Pack_2 with SPARK_Mode, Refined_State => (State_2 => Constit_2) -- OK is Constit_2 : Integer := 2; end Pack_2; -- pack-pack_3.adb separate (Pack) package body Pack_3 is end Pack_3; -- pack-pack_4.adb separate (Pack) package body Pack_4 with SPARK_Mode => On is end Pack_4; -- OK -- pack-pack_5.adb separate (Pack) package body Pack_5 with SPARK_Mode => On is end Pack_5; -- OK -- pack-proc_1.adb separate (Pack) procedure Proc_1 with Refined_Global => (In_Out => Constit), -- Error Refined_Depends => (Constit => Constit) -- Error is begin null; end Proc_1; -- pack-proc_2.adb separate (Pack) procedure Proc_2 with Refined_Global => (In_Out => Constit), -- Error Refined_Depends => (Constit => Constit) -- Error is begin null; end Proc_2; -- pack-proc_3.adb separate (Pack) procedure Proc_3 is begin null; end Proc_3; -- pack-proc_4.adb separate (Pack) procedure Proc_4 with SPARK_Mode => On is begin null; end Proc_4; -- OK -- pack-proc_5.adb separate (Pack) procedure Proc_5 with SPARK_Mode => On is begin null; end Proc_5; -- OK -- pack-prot_typ_1.adb separate (Pack) protected body Prot_Typ_1 is end Prot_Typ_1; -- pack-prot_typ_2.adb separate (Pack) protected body Prot_Typ_2 with SPARK_Mode => On is end Prot_Typ_2; -- OK -- pack-prot_typ_3.adb separate (Pack) protected body Prot_Typ_3 with SPARK_Mode => On is end Prot_Typ_3; -- OK -- pack-task_obj_1.adb separate (Pack) task body Task_Obj_1 with Refined_Global => (In_Out => Constit), -- Error Refined_Depends => (Constit => Constit) -- Error is begin null; end Task_Obj_1; -- pack-task_obj_2.adb separate (Pack) task body Task_Obj_2 with Refined_Global => (In_Out => Constit), -- Error Refined_Depends => (Constit => Constit) -- Error is begin null; end Task_Obj_2; -- pack-task_typ_1.adb separate (Pack) task body Task_Typ_1 is begin null; end Task_Typ_1; -- pack-task_typ_2.adb separate (Pack) task body Task_Typ_2 with SPARK_Mode => On is -- OK begin null; end Task_Typ_2; -- pack-task_typ_3.adb separate (Pack) task body Task_Typ_3 with SPARK_Mode => On is -- OK begin null; end Task_Typ_3; ---------------------------- -- Compilation and output -- ---------------------------- $ gcc -c pack.adb pack.adb:12:11: useless refinement, declaration of subprogram "Proc_1" lacks aspect or pragma Global pack.adb:13:11: useless refinement, declaration of subprogram "Proc_1" lacks aspect or pragma Depends pack.adb:20:11: useless refinement, declaration of task type "Task_Obj_1" lacks aspect or pragma Global pack.adb:21:11: useless refinement, declaration of task type "Task_Obj_1" lacks aspect or pragma Depends pack.adb:42:11: aspect "Refined_State" must apply to a package body pack.adb:45:11: aspect "Refined_State" must apply to a package body pack.adb:51:41: incorrect placement of aspect "Spark_Mode" pack.adb:53:41: incorrect placement of aspect "Spark_Mode" pack.adb:55:47: incorrect placement of aspect "Spark_Mode" pack.adb:57:47: incorrect placement of aspect "Spark_Mode" pack.adb:59:38: incorrect placement of aspect "Spark_Mode" pack.adb:61:38: incorrect placement of aspect "Spark_Mode" pack.adb:63:42: incorrect placement of aspect "Spark_Mode" pack.adb:65:42: incorrect placement of aspect "Spark_Mode" pack-proc_1.adb:4:08: aspect "Refined_Global" cannot apply to a subunit pack-proc_1.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit pack-proc_2.adb:4:08: aspect "Refined_Global" cannot apply to a subunit pack-proc_2.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit pack-task_obj_1.adb:4:08: aspect "Refined_Global" cannot apply to a subunit pack-task_obj_1.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit pack-task_obj_2.adb:4:08: aspect "Refined_Global" cannot apply to a subunit pack-task_obj_2.adb:5:08: aspect "Refined_Depends" cannot apply to a subunit pack-func_1.adb:4:08: aspect "Refined_Post" cannot apply to a subunit pack-func_2.adb:4:08: aspect "Refined_Post" cannot apply to a subunit pack-pack_1.adb:3:14: body of package "Pack_1" has unused hidden states pack-pack_1.adb:3:14: variable "Constit_1" defined at line 7 pack-pack_1.adb:5:08: useless refinement, package "Pack_1" does not define abstract states pack-pack_1.adb:5:26: "State_1" is undefined pack-pack_3.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2 pack-pack_3.adb:3:01: value Off was set for SPARK_Mode on "Pack_3" at pack.ads:38 pack-pack_4.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2 pack-pack_4.adb:3:01: value Off was set for SPARK_Mode on "Pack_4" at pack.ads:39 pack-pack_4.adb:3:26: incorrect use of SPARK_Mode pack-pack_4.adb:3:26: value Off was set for SPARK_Mode on "Pack_4" at pack.ads:39 pack-prot_typ_2.adb:3:32: incorrect use of SPARK_Mode pack-prot_typ_2.adb:3:32: value Off was set for SPARK_Mode on "Prot_Typ_2" at pack.ads:43 pack-proc_3.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2 pack-proc_3.adb:3:01: value Off was set for SPARK_Mode on "Proc_3" at pack.ads:46 pack-proc_4.adb:3:01: incorrect use of SPARK_Mode at pack.adb:2 pack-proc_4.adb:3:01: value Off was set for SPARK_Mode on "Proc_4" at pack.ads:47 pack-proc_4.adb:3:23: incorrect use of SPARK_Mode pack-proc_4.adb:3:23: value Off was set for SPARK_Mode on "Proc_4" at pack.ads:47 pack-task_typ_2.adb:3:27: incorrect use of SPARK_Mode pack-task_typ_2.adb:3:27: value Off was set for SPARK_Mode on "Task_Typ_2" at pack.ads:51 2018-05-21 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_ch6.adb (Analyze_Generic_Subprogram_Body): Rename the call to Analyze_Aspect_Specifications_On_Body_Or_Stub. (Analyze_Subprogram_Body_Helper): Rename the calls to Analyze_Aspect_Specifications_On_Body_Or_Stub. * sem_ch9.adb (Analyze_Entry_Body): Rename the call to Analyze_Aspect_Specifications_On_Body_Or_Stub. * sem_ch10.adb: Add with and use clause for Sem_Ch13. (Analyze_Package_Body_Stub): Add constant Id. Decorate the package stub prior to analyzing its aspects. (Analyze_Protected_Body_Stub): Add constant Id. Decorate the package stub prior to analyzing its aspects. Save and restore the configuration switches. (Analyze_Task_Body_Stub): Add constant Id. Decorate the package stub prior to analyzing its aspects. * sem_ch13.adb (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed to Analyze_Aspects_On_Subprogram_Body_Or_Stub. * sem_ch13.ads (Analyze_Aspect_Specifications_On_Body_Or_Stub): Renamed to Analyze_Aspects_On_Subprogram_Body_Or_Stub. * sem_prag.adb: Code reformatting. (Analyze_Refined_Depends_Global_Post): Consider task body stubs. From-SVN: r260469
Hristian Kirtchev committed -
This properly links with libsocket when needed by the user code. 2018-05-21 Jerome Lambourg <lambourg@adacore.com> gcc/ada/ * gcc-interface/Makefile.in: Add g-soliop__qnx.ads to the runtime build for QNX. From-SVN: r260468
Jerome Lambourg committed -
This patch corrects the part of the access-before-elaboration mechanism which ensures that the freeze node of a tagged type is within the early call region of all its overriding bodies to ignore predefined primitives. ------------ -- Source -- ------------ -- pack.ads package Pack with SPARK_Mode is type Parent_Typ is tagged null record; procedure Prim (Obj : Parent_Typ); type Deriv_Typ is new Parent_Typ with private; overriding procedure Prim (Obj : Deriv_Typ); private type Deriv_Typ is new Parent_Typ with null record; end Pack; ----------------- -- Compilation -- ----------------- $ gcc -c pack.ads 2018-05-21 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_cg.adb: Remove with and use clause for Exp_Disp. * exp_ch9.adb: Remove with and use clause for Exp_Disp. * exp_disp.adb (Is_Predefined_Dispatching_Operation): Moved to Sem_Util. (Is_Predefined_Interface_Primitive): Moved to Sem_Util. (Is_Predefined_Internal_Operation): Moved to Sem_Util. * exp_disp.ads (Is_Predefined_Dispatching_Operation): Moved to Sem_Util. (Is_Predefined_Interface_Primitive): Moved to Sem_Util. (Is_Predefined_Internal_Operation): Moved to Sem_Util. * exp_dist.adb: Remove with and use clause for Exp_Disp. * freeze.adb: Remove with and use clause for Exp_Disp. * sem_cat.adb: Remove with and use clause for Exp_Disp. * sem_ch6.adb: Remove with and use clause for Exp_Disp. * sem_ch12.adb: Remove with and use clause for Exp_Disp. * sem_elab.adb (Check_Overriding_Primitive): Do not process predefined primitives. * sem_util.adb: Remove with and use clause for Exp_Disp. (Is_Predefined_Dispatching_Operation): Moved from Exp_Disp. (Is_Predefined_Interface_Primitive): Moved from Exp_Disp. (Is_Predefined_Internal_Operation): Moved from Exp_Disp. * sem_util.ads (Is_Predefined_Dispatching_Operation): Moved from Exp_Disp. (Is_Predefined_Interface_Primitive): Moved from Exp_Disp. (Is_Predefined_Internal_Operation): Moved from Exp_Disp. From-SVN: r260467
Hristian Kirtchev committed -
A type conversion may be illegal if the expression in the conversion has a limited view of a type. This patch expands the error report to indicate the presence of a limited view, and when the context is a package body it suggests the addition of a regular with-clause to make the full view available. Compiling client.adb must yield: client.adb:6:16: invalid conversion, not compatible with limited view of type "Map_Type" defined at maps.ads:2 client.adb:6:16: add with_clause for "Maps" to current unit ---- package Maps is type Map_Type is null record; end; ---- limited with Maps; package Payloads is function Get_Map return access Maps.Map_Type; end; ---- with Maps; package Maps2 is type New_Map_Type is new Maps.Map_Type; end; ---- with Maps2; package Client is procedure Foo (Map : Maps2.New_Map_Type) is null; procedure Bar; end; ---- with Payloads; package body Client is procedure Bar is begin Foo (Maps2.New_Map_Type (Payloads.Get_Map.all)); end; end; 2018-05-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_res.adb (Valid_Conversion): Improve error message on an illegal type conversion whose expression has a limited view of a type. From-SVN: r260466
Ed Schonberg committed -
This patch fixes an omission in the expansion of loops over GNAT-specific iterable objects. If the source includes an explicit name for the loop, that name has to be preserved in the expanded code to allow exit statements to mention it. 2018-05-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_ch5.adb (Build_Formal_Container_Iteration): If source has explicit name for iterator loop, preserve that name in expanded construct, for possible use in exit statements. gcc/testsuite/ * gnat.dg/exit1.adb: New testcase. From-SVN: r260465
Ed Schonberg committed -
2018-05-21 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the spec of a unit has Ada 2012 membership tests with multiple choices and the unit body is not compiled under Ada 2012 mode. From-SVN: r260464
Javier Miranda committed -
2018-05-21 Doug Rupp <rupp@adacore.com> gcc/ada/ * sigtramp-vxworks-target.inc: Set cfa_reg properly from sigcontext pregs. (CFI_COMMON_REGS): Restore LR jic probed from prologue. (REGNO_PC_OFFSET): Change to correct value for Aarch64. From-SVN: r260463
Doug Rupp committed -
2018-05-21 Jose Ruiz <ruiz@adacore.com> gcc/ada/ * doc/gnat_ugn/gnat_utility_programs.rst, exp_attr.adb, libgnarl/s-tassta.adb: Minor typo fixes From-SVN: r260462
Jose Ruiz committed -
This patch refines the handling of the well-known syntactic ambiguity created by a function with defaulted parameters that returns an array, so that F (X) may designate a call to the function, or an indexing of a parameterless call. This patch handles the case where such a call is itself the prefix of another call, and the function is a primitive operation invoked in prefix form. 2018-05-21 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch4.adb (Analyze_One_Call): Recognize complex cases where an indexed call originally in prefix forn is itself the prefix of a further call. gcc/testsuite/ * gnat.dg/array30.adb: New testcase. From-SVN: r260461
Ed Schonberg committed -
2018-05-21 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_eval.adb (Is_Null_Range): Clarify access to the full view of a type. (Not_Null_Range): Same as above. From-SVN: r260460
Piotr Trojanek committed
-