aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-11-27[Ada] Default_Initial_Condition assertion policy is now RM definedPiotr Trojanek2-54/+54
gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: (Assertion_Policy): Move "Default_Initial_Condition" from ID_ASSERTION_KIND to RM_ASSERTION_KIND section. * gnat_rm.texi: Regenerate.
2020-11-27[Ada] Sync doc and code for pragma Assertion_PolicyPiotr Trojanek2-31/+37
gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst (Assertion_Policy): Add "Default_Initial_Condition", "Initial_Condition" and "Subprogram_Variant". * gnat_rm.texi: Regenerate.
2020-11-27[Ada] Assertion_Policy is not a valid assertion policyPiotr Trojanek1-1/+0
gcc/ada/ * sem_prag.adb (Is_Valid_Assertion_Kind): Return False on "Assertion_Policy"
2020-11-27[Ada] Do not compile predefined units with -gnatp in gnatmakeEric Botcazou1-3/+3
gcc/ada/ * make.adb (GNAT_Flag): Change to "-gnatg". (Compile): Adjust comments accordingly.
2020-11-27[Ada] Restore general case for folding comparison of static stringsPiotr Trojanek3-63/+74
gcc/ada/ * exp_ch4.adb (Rewrite_Comparison): Add assertion to confirm that evaluation folds comparisons with static operands; when folding comparison with non-static operands, the resulting literal is non-static. * sem_eval.adb (Eval_Relational_Op): Refactor nested IF statement for the special case in the THEN branch; move code for the "general case" out of the ELSE branch. * sem_res.adb (Resolve_Comparison_Op): Only apply a dubious special-case for GNATprove in the GNATprove_Mode.
2020-11-27[Ada] Change parameter from access type to mode outPiotr Trojanek3-24/+24
gcc/ada/ * sem_eval.ads (Compile_Time_Compare): Change parameter Diff from access to mode out. * sem_eval.adb (Compile_Time_Compare): Adapt body and callers. * sem_attr.adb (Eval_Attribute): Adapt callers.
2020-11-27[Ada] Move down call to Narrow_Large_Operation in Expand_N_Op_MultiplyEric Botcazou1-10/+10
gcc/ada/ * exp_ch4.adb (Expand_N_Op_Multiply): Move down block calling Narrow_Large_Operation if the type is Universal_Integer.
2020-11-27[Ada] Reimplement Ada.Numerics.Big_Numbers.Big_Reals.Float_ConversionsEric Botcazou1-9/+168
gcc/ada/ * libgnat/a-nbnbre.adb: Remove clauses for System.Img_Real and add them for System.Unsigned_Types. (Float_Conversions.To_Big_Real): Reimplement. (Float_Conversions.From_Big_Real): Likewise.
2020-11-27[Ada] Optimize generation of checks for fixed-point typesEric Botcazou5-122/+139
gcc/ada/ * checks.ads (Determine_Range_To_Discrete): New procedure. * checks.adb (Apply_Scalar_Range_Check): Call it to determine a range for the expression when the target type is discrete. And also apply the tests for discrete types to fixed-point types when they are treated as integers. (Apply_Type_Conversion_Checks): Apply checks to conversions involving fixed-point types when they are treated as integers. (Determine_Range) <N_Type_Conversion>: Factor out code into... (Determine_Range_To_Discrete): ...this new procedure and add support for fixed-point types when they are treated as integers. * einfo.ads (Type_High_Bound): Remove obsolete sentence. (Type_Low_Bound): Likewise. * exp_ch4.adb (Discrete_Range_Check): Remove obsolete code. (Real_Range_Check): Likewise. (Expand_N_Type_Conversion): In case of a no-op conversion, clear the Do_Range_Check flag on the operand before substituting it. Remove calls to Real_Range_Check and Discrete_Range_Check that are not guarded by the Do_Range_Check flag, and an assertion. * sem_res.adb (Resolve_Type_Conversion): Always apply range checks in GNATprove mode; in normal mode, use the updated type of the operand in the test against Universal_Fixed. Remove obsolete code setting the Do_Range_Check flag at the end.
2020-11-27[Ada] Simplify check for illegal non-returning proceduresPiotr Trojanek1-17/+11
gcc/ada/ * sem_prag.adb (Analyze_Pragma): Change "Ref Manual" to RM; replace uses of an unnecessary "Ok" variable with RETURN statements; replace nested IF with ELSIF.
2020-11-27[Ada] Abort defer mismatch with SJLJ exceptionsArnaud Charlet7-164/+7
gcc/ada/ * libgnarl/s-tasren.adb (Local_Complete_Rendezvous): Always call Defer_Abort. * libgnat/a-except.adb: Abort does not need to be deferred. * libgnarl/s-tpobop.adb (Exceptional_Complete_Entry_Body): Abort never needs to be undeferred here. * exp_ch11.adb (Expand_Exception_Handlers): Remove difference between ZCX and SJLJ. * exp_ch9.adb (Expand_N_Asynchronous_Select): Remove different handling for sjlj. * exp_sel.ads, exp_sel.adb (Build_Abort_Block, Build_Abort_Block_Handler): Ditto.
2020-11-27[Ada] Emit error messages for null/generic nonreturning proceduresGhjuvan Lacambre1-4/+62
gcc/ada/ * sem_prag.adb (Analyze_Pragma): declare new Check_No_Return function and call it.
2020-11-27[Ada] Fix tree for expanded instantiations corresponding to formal packagesArnaud Charlet1-1/+1
gcc/ada/ * sem_ch12.adb (Instantiate_Object): Consistently use New_Copy_Tree instead of New_Copy.
2020-11-27[Ada] Adjust head comment of various subprograms in Exp_FixdEric Botcazou1-9/+8
gcc/ada/ * exp_fixd.adb (Build_Conversion): Adjust head comment. (Build_Divide): Likewise. (Build_Double_Divide): Likewise. (Build_Multiply): Likewise. (Build_Rem): Likewise. (Build_Scaled_Divide): Likewise.
2020-11-27[Ada] To_Big_Integer and 128bits integersArnaud Charlet3-4/+30
gcc/ada/ * libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New variant taking an Unsigned_128. * libgnat/a-nbnbin.adb (To_Big_Integer): Add support for 128 bits signed and unsigned types.
2020-11-27[Ada] Small tweaks to new implementation of Set_Image_FixedEric Botcazou1-14/+31
gcc/ada/ * libgnat/s-imagef.adb (Set_Image_Fixed): Pass the full value of the quotient to Set_Image_Integer during the first round and adjust the handling of the minus sign.
2020-11-27[Ada] Error in Big_Real comparisonArnaud Charlet1-4/+4
gcc/ada/ * libgnat/a-nbnbre.adb ("=", "<"): Fix.
2020-11-27[Ada] Fix oversignt in genericized package System.Value_REric Botcazou1-3/+3
gcc/ada/ * libgnat/s-valuer.adb (Scan_Raw_Real): Move pragma Annotate around and adjust its parameters.
2020-11-27[Ada] Optimize magnitude of integer operations for fixed pointEric Botcazou1-17/+17
gcc/ada/ * exp_fixd.adb (Build_Double_Divide): Use the RM size of types and a more precise estimate for the size of the denominator. (Build_Double_Divide_Code): Likewise. (Build_Multiply): Use a more precise estimate for the size of the result. (Build_Scaled_Divide): Use the RM size of types and a more precise estimate for the size of the numerator. (Build_Scaled_Divide_Code): Likewise.
2020-11-26rs6000: Change rs6000_expand_vector_set paramXionghu Luo4-11/+13
rs6000_expand_vector_set could accept insert either to constant position or variable position, so change the operand to reg_or_cint_operand. gcc/ChangeLog: 2020-11-27 Xionghu Luo <luoxhu@linux.ibm.com> * config/rs6000/rs6000-call.c (altivec_expand_vec_set_builtin): Change call param 2 from type int to rtx. * config/rs6000/rs6000-protos.h (rs6000_expand_vector_set): Likewise. * config/rs6000/rs6000.c (rs6000_expand_vector_init): Change call param 2 from type int to rtx. (rs6000_expand_vector_set): Likewise. * config/rs6000/vector.md (vec_set<mode>): Support both constant and variable index vec_set.
2020-11-27This patch adds absolute jump table support for rs6000.Haochen Gui5-11/+76
gcc/ChangeLog: * config/rs6000/rs6000-protos.h (rs6000_output_addr_vec_elt): Declare. * config/rs6000/rs6000.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Define. (rs6000_gen_pic_addr_diff_vec, rs6000_output_addr_vec_elt): Implement. * config/rs6000/rs6000.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE, ASM_OUTPUT_ADDR_VEC_ELT): Define. * config/rs6000/rs6000.md (tablejump<mode>_absolute, tablejump<mode>_absolute_nospec): New expanders. * config/rs6000/rs6000.opt (mrelative-jumptables): New.
2020-11-27Daily bump.GCC Administrator6-1/+593
2020-11-26Fix PR target/96607Eric Botcazou3-54/+19
After 15 years trying to find out what can go into the delay slot of the call to __tls_get_addr with the Solaris linker, it's now time to concede defeat and consider it as not to be filled. gcc/ChangeLog: PR target/96607 * config/sparc/sparc-protos.h (eligible_for_call_delay): Delete. * config/sparc/sparc.c (eligible_for_call_delay): Likewise. * config/sparc/sparc.md (in_call_delay): Likewise. (tls_delay_slot): New attribute. (define_delay [call]): Use in_branch_delay. (tgd_call<P:mode>): Set type to call_no_delay_slot when tls_delay_slot is false. (tldm_call<P:mode>): Likewise.
2020-11-26match.pd: Use ranges to optimize some x * y / y to x [PR97997]Jakub Jelinek3-3/+135
For signed integers with undefined overflow we already optimize x * y / y into x, but for signed integers with -fwrapv or unsigned integers we don't. The following patch allows optimizing that into just x if value ranges prove that x * y will never overflow. It uses the global SSA_NAME_RANGE_INFO only, because like mentioned in another PR we don't currently have a way to tell the ranger from match.pd the use stmt (and we'd need in that case to tell ranger to only follow SSA_NAME_DEF_STMTs + SSA_NAME_RANGE_INFO and never go in the other direction, as following immediate uses seems forbidden in match.pd). Another possibility would be to optimize this during vrp, but on the other side the optimization itself is match.pd-ish. 2020-11-26 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/97997 * match.pd ((t * 2) / 2) -> t): Optimize even for defined overflow if ranges prove there is no overflow. * gcc.dg/tree-ssa/pr97997-1.c: New test. * gcc.dg/tree-ssa/pr97997-2.c: New test.
2020-11-26tree-optimization/97953 - fix bougs range recorded by EVRPRichard Biener2-1/+29
EVRP records some ranges from asserts into SSA_NAME_RANGE_INFO but fails to assert that the condition the range is derived from is always true after the SSA names definition. The patch implements the simplest post-dominance check, basic-block equality. 2020-11-26 Richard Biener <rguenther@suse.de> PR tree-optimization/97953 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::record_ranges_from_incoming_edge): Make sure the condition post-dominates the SSA definition before recording into SSA_NAME_RANGE_INFO. * gcc.dg/pr97953.c: New testcase.
2020-11-26tree-optimization/98015 - fix VEC_COND_EXPR lowering conditionRichard Biener1-3/+3
This fixes the condition to match the comment and only lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs. 2020-11-26 Richard Biener <rguenther@suse.de> * gimple-isel.cc (gimple_expand_vec_cond_expr): Only lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs.
2020-11-26Fix early-debug relocationsAndrew Stubbs1-5/+10
The relocation symbols were inadvertantly wiped when the type was set in mkoffload. gcc/ChangeLog * config/gcn/mkoffload.c (copy_early_debug_info): Don't wipe relocation symbols.
2020-11-26i386: Cleanup argument handling in ix86_expand_*_builtin functions.Uros Bizjak1-68/+44
There is no need for struct with rtx and mode members since mode is never used. 2020-11-26 Uroš Bizjak <ubizjak@gmail.com> gcc/ * config/i386/i386-expand.c (ix86_expand_multi_arg_builtin): Remove args array of structs, declare rtx xops array instead. Update all uses. (ix86_expand_args_builtin): Ditto. (ix86_expand_round_builtin): Ditto. (ix86_expand_special_args_builtin): Ditto.
2020-11-26dwarf: fix language_string for C2XMartin Liska1-1/+1
gcc/ChangeLog: * dwarf2out.c (gen_compile_unit_die): Fix missing == 0 in a strcmp.
2020-11-26ada: c++: Get rid of libposix4, librt on SolarisRainer Orth4-40/+5
I recently noticed that neither libposix4 nor librt are needed on Solaris 11 any longer: * libposix4 was renamed to librt in Solaris 7 back in 1998. * librt was folded into libc in the OpenSolaris timeframe, leaving librt only as a filter on libc. Thus, it's no longer needed on either Solaris 11 or Illumos. The following patch removes both uses. At the same time, Ada's use of libthread has gone: it was folded into libc in Solaris 10 already. TIME_LIBRARY and friends in g++ are likewise removed: Solaris was the only user. Bootstrapped without regressions on i386-pc-solaris2.11, sparc-sun-solaris2.11, and x86_64-pc-linux-gnu. 2020-11-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> gcc/cp: * g++spec.c (TIMELIB, TIME_LIBRARY): Remove. (lang_specific_driver): Remove TIME_LIBRARY handling. gcc: * config/sol2.h (TIME_LIBRARY): Remove. libstdc++-v3: * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Remove libposix4 references. <solaris*>: Don't use -lrt any longer. * configure: Regenerate. * doc/xml/manual/configure.xml (--enable-libstdcxx-time=OPTION): Remove libposix4 reference. gcc/ada: * Makefile.rtl <sparc*-sun-solaris*> (THREADSLIB): Remove. (MISCLIB): Remove -lposix4. <*86-*-solaris2*>: Likewise. * libgnarl/s-osinte__solaris.ads (System.OS_Interface): Remove -lposix4 -lthread.
2020-11-26rs6000: Set param_vect_partial_vector_usage as 1 for P10Kewen Lin1-4/+7
Due to the unexpected performance on Power9 of those vector with length instructions, we didn't enable vectorization with partial vectors before. Some recent testings show that they perform expectedly on Power10 now. This patch is to set param_vect_partial_vector_usage as 1 for P10 or later. The performance evaluation on the whole SPEC2017 with option set power10/Ofast/unroll shows it can speed up 525.x264_r by 10.80% and 554.roms_r by 1.94%. Bootstrapped/regtested on powerpc64le-linux-gnu P10. gcc/ChangeLog: * config/rs6000/rs6000.c (rs6000_option_override_internal): Set param_vect_partial_vector_usage as 1 for Power10 and up by default.
2020-11-26gimple-fold: Use DECL_PADDING_P in __builtin_clear_paddingJakub Jelinek1-4/+2
On Wed, Nov 25, 2020 at 12:26:17PM -0500, Jason Merrill wrote: > I think you want to check DECL_PADDING_P here; the C and C++ front ends set > it on unnamed bit-fields, and that's what is_empty_type looks at. While the above has been written in the context of __builtin_bit_cast patch, I think it applies to __builtin_clear_padding too. So this patch implements that. The C FE sets DECL_PADDING_P solely on the DECL_BIT_FIELD !DECL_NAME FIELD_DECLs, the C++ FE sets it on those and in another spot I haven't really figured out what it is about. 2020-11-26 Jakub Jelinek <jakub@redhat.com> * gimple-fold.c (clear_padding_union): Ignore DECL_PADDING_P fields. (clear_padding_type): Ignore DECL_PADDING_P fields, rather than DECL_BIT_FIELD with NULL DECL_NAME.
2020-11-26match.pd: Avoid ICE with shifts [PR97979]Jakub Jelinek3-1/+22
My recent wide_int_binop changes caused ICE on this testcase. The problem is that for shift where amount has MSB set now fails to optimize into a constant (IMHO we should treat out of bounds shifts the same later), but there is a precedent for that already - e.g. division by zero fails to optimize into a constant too. I think it is better if path isolation checks for these UBs and does something the user chooses (__builtin_trap vs. __builtin_unreachable, and either a deferred warning about the UB or nothing). This patch just doesn't optimize if int_const_binop failed. 2020-11-26 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/97979 * match.pd ((X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)): Only optimize if int_const_binop returned non-NULL. * gcc.dg/pr97979.c: New test. * gcc.c-torture/compile/pr97979.c: New test.
2020-11-26Delete dead code in ix86_expand_special_args_builtinliuhongt1-39/+25
gcc/ChangeLog: * config/i386/i386-expand.c (ix86_expand_special_args_builtin): Delete last_arg_constant and match.
2020-11-26testsuite/98002 - fix gcc.dg/strncmp-2.cRichard Biener1-0/+1
This makes sure not to free() memory we have mprotected to PROT_NONE by calling mprotect again with PROT_READ|PROT_WRITE. This avoids crashing the allocator when in debug mode. 2020-11-16 Richard Biener <rguenther@suse.de> PR testsuite/98002 * gcc.dg/strncmp-2.c: Call mprotect again before free.
2020-11-26Don't create location wrapper nodes within OpenACC clausesThomas Schwinge13-7/+718
This fixes a GCC 11, 10, 9 regression introduced by commit dfd7fdca2ac17d8b823a16700525824ca312ade0 (Subversion r267272) "C++: more location wrapper nodes (PR c++/43064, PR c++/43486)". But: this isn't intending to blame David, because back then, the problem hasn't been visible in the testsuite (or else I'm sure would've been addressed right away) because of our all dear friend: missing testsuite coverage. Thus, for GCC 8, I'm likewise enhancing the testsuite, without the C++ front end code changes. I actually had presumed that there may be an issue for OpenACC: <http://mid.mail-archive.com/874lb9qr2u.fsf@euler.schwinge.homeip.net>, so here we are, two years (and many "wasted" hours...) later... gcc/cp/ * parser.c (cp_parser_omp_var_list_no_open): Assert that array section's 'low_bound', 'length' are not location wrapper nodes. (cp_parser_oacc_all_clauses, cp_parser_oacc_cache): Instantiate 'auto_suppress_location_wrappers'. gcc/testsuite/ * c-c++-common/goacc/cache-3-1.c: New. * c-c++-common/goacc/cache-3-2.c: Likewise. * c-c++-common/goacc/data-clause-1.c: Likewise. * c-c++-common/goacc/data-clause-2.c: Likewise. * c-c++-common/gomp/map-1.c: Adjust. * c-c++-common/gomp/map-2.c: Likewise. * g++.dg/goacc/cache-3-1.C: New. * g++.dg/goacc/cache-3-2.C: Likewise. * g++.dg/goacc/data-clause-1.C: Likewise. * g++.dg/goacc/data-clause-2.C: Likewise. * g++.dg/gomp/map-1.C: Adjust. * g++.dg/gomp/map-2.C: Likewise. Reported-by: Sandra Loosemore <sandra@codesourcery.com>
2020-11-26i386: Use SDWIM mode iterator for abs and maxmin [PR97873]Uros Bizjak2-18/+45
Generate special double mode sequence also for QImode and HImode. Without QImode and HImode patterns, middle-end extends operands to SImode and emits SImode conditional move instruction with paradoxical SImode output register. This form is not recognized by STV pass, but a single abs with input operand in a register would not be converted anyway due to relatively high register conversion cost. 2020-11-26 Uroš Bizjak <ubizjak@gmail.com> PR target/97873 gcc/ * config/i386/i386.md (abs<mode>2): Use SDWIM mode iterator. (*abs<mode>2_1): Use SWI mode iterator. (<maxmin:code><mode>3): Use SDWIM mode iterator. (*<maxmin:code><mode>3_1): Use SWI mode iterator. gcc/testsuite/ * gcc.target/i386/pr97873-3.c: New test.
2020-11-26[Ada] Ada.Numerics.Big_Numbers.Big_Reals.To_Big_Real looses precisionArnaud Charlet1-1/+9
gcc/ada/ * libgnat/a-nbnbre.adb (To_Big_Real): Do not loose precision.
2020-11-26[Ada] Ada 2020 AI12-0401 Renaming of qualified expression of variableArnaud Charlet1-0/+16
gcc/ada/ * sem_ch8.adb (Analyze_Object_Renaming): Check for AI12-0401.
2020-11-26[Ada] Add support for 128-bit fixed-point types on 64-bit platformsEric Botcazou147-2350/+7391
gcc/ada/ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Likewise. (GNATRTL_128BIT_OBJS): Likewise. (GNATRTL_128BIT_PAIRS): Add new 128-bit variants. * cstand.adb (Create_Standard): Create Standard_Integer_128. * doc/gnat_rm/implementation_defined_characteristics.rst: Document new limits on 64-bit platforms in entry for 3.5.9(10). * gnat_rm.texi: Regenerate. * exp_attr.adb: Add with and use clauses for Urealp. (Expand_N_Attribute_Reference) <Attribute_Fore>: Call new routines for decimal fixed-point types and common ordinary fixed-point types. * exp_ch4.adb (Real_Range_Check): Extend conversion trick to all ordinary fixed-point types and use Small_Integer_Type_For. * exp_fixd.adb: Add with and use clauses for Ttypes. (Build_Divide): Add special case for 32-bit values and deal with 128-bit types. (Build_Double_Divide): Deal with 128-bit types. (Build_Double_Divide_Code): Likewise. Do not apply conversions before calling Build_Multiply. (Build_Multiply): Likewise. Add special case for 32-bit values. (Build_Scaled_Divide): Deal with 128-bit types. (Build_Scaled_Divide_Code): Likewise. Fix size computation. Do not apply conversions before calling Build_Multiply. (Do_Multiply_Fixed_Fixed): Minor tweak. (Integer_Literal): Deal with 128-bit values. * exp_imgv.adb (Has_Decimal_Small): Delete. (Expand_Image_Attribute): Call new routines for common ordinary fixed-point types. (Expand_Value_Attribute): Likewise. (Expand_Width_Attribute): Add new expansion for fixed-point types. * freeze.adb (Freeze_Entity): Move error checks for ordinary fixed-point types to... (Freeze_Fixed_Point_Type): ...here. Deal with 128-bit types and adjust limitations for 32-bnt and 64-bit types. * rtsfind.ads (RTU_Id): Add entries for new System_Fore, System_Img, and System_Val units and remove them for obsolete units. (RE_Id): Add entries for Double_Divide128, Scaled_Divide128, the new Fore, Image, Value routines and remove them for obsolete units. (RE_Unit_Table): Likewise. * sem_ch3.adb (Decimal_Fixed_Point_Type_Declaration): Deal with 128-bit types. * stand.ads (Standard_Entity_Type): Add Standard_Integer_128. * uintp.ads (Uint_31): New deferred constant. (Uint_Minus_18): Likewise. (Uint_Minus_31): Likewise. (Uint_Minus_76): Likewise. (Uint_Minus_127): Likewise. * urealp.ads (Ureal_2_31): New function. (Ureal_2_63): Likewise. (Ureal_2_127): Likewise. (Ureal_2_M_127): Likewise. (Ureal_2_10_18): Likewise. (Ureal_M_2_10_18): Likewise. (Ureal_9_10_36): Likewise. (Ureal_M_9_10_36): Likewise. (Ureal_10_76): Likewise. (Ureal_M_10_76): Likewise. (Ureal_10_36): Delete. (Ureal_M_10_36): Likewise. * urealp.adb (UR_2_10_18): New variable. (UR_9_10_36): Likewise. (UR_10_76): Likewise. (UR_M_2_10_18): Likewise. (UR_M_9_10_36): Likewise. (UR_M_10_76): Likewise. (UR_2_31): Likewise. (UR_2_63): Likewise. (UR_2_127): Likewise. (UR_2_M_127): Likewise. (UR_10_36): Delete. (UR_M_10_36): Likewise. (Initialize): Initialize them. (UR_Write): Do not use awkward Ada literal style. (Ureal_2_10_18): New function. (Ureal_9_10_36): Likewise. (Ureal_10_76): Likewise. (Ureal_2_31): Likewise. (Ureal_2_63): Likewise. (Ureal_2_127): Likewise. (Ureal_2_M_127): Likewise. (Ureal_M_2_10_18): Likewise. (Ureal_M_9_10_36): Likewise. (Ureal_10_76): Likewise. (Ureal_M_10_76): Likewise. (Ureal_10_36): Delete. (Ureal_M_10_36): Likewise. * libgnat/a-decima__128.ads: New file. * libgnat/a-tideau.ads, libgnat/a-tideau.adb: Reimplement as generic unit. * libgnat/a-tideio.adb: Reimplement. * libgnat/a-tideio__128.adb: New file. * libgnat/a-tifiau.ads, libgnat/a-tifiau.adb: New generic unit. * libgnat/a-tifiio.adb: Move bulk of implementation to s-imagef and reimplement. * libgnat/a-tifiio__128.adb: New file. * libgnat/a-tiflau.adb (Get): Minor consistency fix. (Gets): Likewise. * libgnat/a-wtdeau.ads, libgnat/a-wtdeau.adb: Reimplement as generic unit. * libgnat/a-wtdeio.adb: Reimplement. * libgnat/a-wtdeio__128.adb: New file. * libgnat/a-wtfiau.ads, libgnat/a-wtfiau.adb: New generic unit. * libgnat/a-wtfiio.adb: Reimplement. * libgnat/a-wtfiio__128.adb: New file. * libgnat/a-ztdeau.ads, libgnat/a-ztdeau.adb: Reimplement as generic unit. * libgnat/a-ztdeio.adb: Reimplement. * libgnat/a-ztdeio__128.adb: New file. * libgnat/a-ztfiau.ads, libgnat/a-ztfiau.adb: New generic unit. * libgnat/a-ztfiio.adb: Reimplement. * libgnat/a-ztfiio__128.adb: New file. * libgnat/g-rannum.adb (Random_Decimal_Fixed): Use a subtype of the appropiate size for the instantiation. (Random_Ordinary_Fixed): Likewise. * libgnat/s-arit32.ads, libgnat/s-arit32.adb: New support unit. * libgnat/s-fode128.ads: New instantiation. * libgnat/s-fode32.ads: Likewise. * libgnat/s-fode64.ads: Likewise. * libgnat/s-fofi128.ads: Likewise. * libgnat/s-fofi32.ads: Likewise. * libgnat/s-fofi64.ads: Likewise. * libgnat/s-fore_d.ads, libgnat/s-fore_d.adb: New generic unit. * libgnat/s-fore_f.ads, libgnat/s-fore_f.adb: Likewise. * libgnat/s-fore.ads, libgnat/s-fore.adb: Rename into... * libgnat/s-forrea.ads, libgnat/s-forrea.adb: ...this. * libgnat/s-imaged.ads, libgnat/s-imaged.adb: New generic unit. * libgnat/s-imagef.ads, libgnat/s-imagef.adb: Likewise, taken from a-tifiio.adb. * libgnat/s-imde128.ads: New instantiation. * libgnat/s-imde32.ads: Likewise. * libgnat/s-imde64.ads: Likewise. * libgnat/s-imfi128.ads: Likewise. * libgnat/s-imfi32.ads: Likewise. * libgnat/s-imfi64.ads: Likewise. * libgnat/s-imgdec.ads, libgnat/s-imgdec.adb: Delete. * libgnat/s-imglld.ads, libgnat/s-imglld.adb: Likewise. * libgnat/s-imgrea.adb (Set_Image_Real): Replace Sign local variable with Minus local variable for the sake of consistency. * libgnat/s-imguti.ads, libgnat/s-imguti.adb: New support unit. * libgnat/s-vade128.ads: New instantiation. * libgnat/s-vade32.ads: Likewise. * libgnat/s-vade64.ads: Likewise. * libgnat/s-vafi128.ads: Likewise. * libgnat/s-vafi32.ads: Likewise. * libgnat/s-vafi64.ads: Likewise. * libgnat/s-valdec.ads, libgnat/s-valdec.adb: Delete. * libgnat/s-vallld.ads, libgnat/s-vallld.adb: Likewise. * libgnat/s-valued.ads, libgnat/s-valued.adb: New generic unit. * libgnat/s-valuef.ads, libgnat/s-valuef.adb: Likewise. * libgnat/s-valuei.adb: Minor rewording. * libgnat/s-valrea.adb: Move bulk of implementation to... * libgnat/s-valuer.ads, libgnat/s-valuer.adb: ...here. New generic unit. * libgnat/system-aix.ads (Max_Mantissa): Adjust. * libgnat/system-darwin-arm.ads (Max_Mantissa): Likewise. * libgnat/system-darwin-ppc.ads (Max_Mantissa): Likewise. * libgnat/system-darwin-x86.ads (Max_Mantissa): Likewise. * libgnat/system-djgpp.ads (Max_Mantissa): Likewise. * libgnat/system-dragonfly-x86_64.ads (Max_Mantissa): Likewise. * libgnat/system-freebsd.ads (Max_Mantissa): Likewise. * libgnat/system-hpux-ia64.ads (Max_Mantissa): Likewise. * libgnat/system-hpux.ads (Max_Mantissa): Likewise. * libgnat/system-linux-alpha.ads (Max_Mantissa): Likewise. * libgnat/system-linux-arm.ads (Max_Mantissa): Likewise. * libgnat/system-linux-hppa.ads (Max_Mantissa): Likewise. * libgnat/system-linux-ia64.ads (Max_Mantissa): Likewise. * libgnat/system-linux-m68k.ads (Max_Mantissa): Likewise. * libgnat/system-linux-mips.ads (Max_Mantissa): Likewise. * libgnat/system-linux-ppc.ads (Max_Mantissa): Likewise. * libgnat/system-linux-riscv.ads (Max_Mantissa): Likewise. * libgnat/system-linux-s390.ads (Max_Mantissa): Likewise. * libgnat/system-linux-sh4.ads (Max_Mantissa): Likewise. * libgnat/system-linux-sparc.ads (Max_Mantissa): Likewise. * libgnat/system-linux-x86.ads (Max_Mantissa): Likewise. * libgnat/system-lynxos178-ppc.ads (Max_Mantissa): Likewise. * libgnat/system-lynxos178-x86.ads (Max_Mantissa): Likewise. * libgnat/system-mingw.ads (Max_Mantissa): Likewise. * libgnat/system-qnx-aarch64.ads (Max_Mantissa): Likewise. * libgnat/system-rtems.ads (Max_Mantissa): Likewise. * libgnat/system-solaris-sparc.ads (Max_Mantissa): Likewise. * libgnat/system-solaris-x86.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-arm-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-arm-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-arm.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-e500-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-e500-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-e500-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-e500-vthread.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-ppc-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-ppc-ravenscar.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-ppc-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-ppc-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-ppc-vthread.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-ppc.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-x86-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-x86-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-x86-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-x86-vthread.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks-x86.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-aarch64-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-aarch64.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-arm-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-arm.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-e500-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-e500-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-e500-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-ppc-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-ppc-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-ppc-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-ppc64-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-ppc64-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-x86-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-x86-rtp-smp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-x86-rtp.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-x86_64-kernel.ads (Max_Mantissa): Likewise. * libgnat/system-vxworks7-x86_64-rtp-smp.ads (Max_Mantissa): Likewise. gcc/testsuite/ * gnat.dg/multfixed.adb: Robustify.
2020-11-26[Ada] Add the remark concerning the use of Image_Ordinary_Fixed_PointLiaiss Merzougue1-0/+3
gcc/ada/ * libgnat/s-imgrea.ads (Image_Ordinary_Fixed_Point): Add a remark concerning the irrelevant use of Inf and -0.0
2020-11-26[Ada] Add support for .c output fileArnaud Charlet1-5/+4
gcc/ada/ * osint-c.adb (Set_Output_Object_File_Name): Add support for .c output file.
2020-11-26[Ada] Reuse Is_Generic_Subprogram where possiblePiotr Trojanek3-11/+5
gcc/ada/ * lib-writ.adb, sem_ch8.adb, sem_prag.adb: Use Is_Generic_Subprogram instead of low-level membership tests.
2020-11-26[Ada] Minor reformatting and a typo fixGary Dismukes2-4/+3
gcc/ada/ * sem_ch6.adb (Analyze_Call_And_Resolve): Reformatted a comment. * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): Fixed a typo.
2020-11-26[Ada] Replace warning suppression with assertionPiotr Trojanek1-1/+1
gcc/ada/ * sem_res.adb (Resolve_Membership_Op): Replace pragma Warnings with pragma Assert.
2020-11-26[Ada] Improve error message on illegal prefixed procedure callEd Schonberg1-0/+21
gcc/ada/ * sem_ch6.adb (Analyze_Call_And_Resolve): Add information to the error message on an illegal procedure call, when the illegality is due to the presence of a component of the full view of the target object, as well as a procedure with the same name (See RM 4.1.3 (9.2/3)).
2020-11-26[Ada] Crash on task declaration with Restriction_Warning (No_Tasking)Ed Schonberg1-3/+6
gcc/ada/ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): when the restriction is a configuration pragma and specifies No_Tasking, a global flag is set to reject task declarations, and to prevent the construction of Master entities. The flag must not be set if the pragma is a Restriction_Warning, in which case task declarationns are allowed.
2020-11-26[Ada] Sync wide Ada.String hashing unitsPiotr Trojanek2-9/+11
gcc/ada/ * libgnat/a-stzhas.adb (Wide_Wide_Hash): Instantiate inside a wrapper function. * libgnat/a-stzhas.ads (Wide_Wide_Hash): Likewise; remove wrong comment, because this is indeed a RM unit, as described in Ada RM A.4.8 (1/3).
2020-11-26[Ada] Avoid potentially repeated calls to Prefix in Eval_SlicePiotr Trojanek1-2/+3
gcc/ada/ * sem_eval.adb (Eval_Slice): Refactor repeated calls to Prefix with a local constant (named just like in Resolve_Slice).
2020-11-26[Ada] Warn on slices of the form A (subtype) for all objectsPiotr Trojanek1-1/+1
gcc/ada/ * sem_eval.adb (Eval_Slice): Emit warning not just for constants, but for any objects.