- 16 Oct, 2017 3 commits
-
-
2017-10-16 Paolo Carlini <paolo.carlini@oracle.com> PR c++/61323 * g++.dg/cpp0x/constexpr-61323.C: New. From-SVN: r253777
Paolo Carlini committed -
2017-10-16 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/82558 * include/bits/stl_bvector.h (fill): Add iterator offset check. * testsuite/23_containers/vector/bool/82558.cc: New. From-SVN: r253776
François Dumont committed -
From-SVN: r253775
GCC Administrator committed
-
- 15 Oct, 2017 5 commits
-
-
2017-10-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/54090 * g++.dg/template/crash128.C: New. From-SVN: r253772
Paolo Carlini committed -
* i386.c (ix86_vec_cost): New function. (ix86_rtx_costs): Handle vector operations better. * i386.h (struct processor_costs): Add sse_op, fmasd, fmass. * x86-tune-costs.h: Add new costs to all tables. From-SVN: r253771
Jan Hubicka committed -
* i386.c (ix86_rtx_costs): Make difference between x87 and SSE operations. * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss, divsd, sqrtss and sqrtsd * x86-tune-costs.h: Add new entries to all costs. (znver1_cost): Fix to match real instruction latencies. From-SVN: r253769
Jan Hubicka committed -
2017-10-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82372 * fortran/scanner.c (last_error_char): New global variable. (gfc_scanner_init_1): Set last_error_char to NULL. (gfc_gobble_whitespace): If a character not printable or not newline, issue an error. 2017-10-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82372 * gfortran.dg/illegal_char.f90: New test. From-SVN: r253768
Thomas Koenig committed -
From-SVN: r253767
GCC Administrator committed
-
- 14 Oct, 2017 18 commits
-
-
2017-10-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com> Michael Collison <michael.collison@arm.com> * compare-elim.c: Include emit-rtl.h. (can_merge_compare_into_arith): New function. (try_validate_parallel): Likewise. (try_merge_compare): Likewise. (try_eliminate_compare): Call the above when no previous clobber is available. (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN dataflow problems. 2017-10-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com> Michael Collison <michael.collison@arm.com> * gcc.target/aarch64/cmpelim_mult_uses_1.c: New test. Co-Authored-By: Michael Collison <michael.collison@arm.com> From-SVN: r253764
Kyrylo Tkachov committed -
re PR c++/80908 ([c++1z] ICE on instantiating a template deducing the noexcept-ness of a function pointer) 2017-10-14 Paolo Carlini <paolo.carlini@oracle.com> PR c++/80908 * g++.dg/cpp1z/noexcept-type18.C: New. From-SVN: r253763
Paolo Carlini committed -
2017-10-14 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81016 * g++.dg/cpp1z/pr81016.C: New. From-SVN: r253762
Paolo Carlini committed -
re PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technically undefined behavior) PR middle-end/62263 PR middle-end/82498 * tree-ssa-phiopt.c (value_replacement): Comment fix. Handle up to 2 preparation statements for ASSIGN in MIDDLE_BB. * c-c++-common/rotate-8.c: Expect no PHIs in optimized dump. From-SVN: r253761
Jakub Jelinek committed -
re PR middle-end/62263 (Good codegen for bitwise rotate requires code that is technically undefined behavior) PR middle-end/62263 PR middle-end/82498 * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N] to be any operand_equal_p operands. For & (B - 1) require B to be power of 2. Recognize (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns. * c-c++-common/rotate-5.c (f2): New function. Move old function to ... (f4): ... this. Use 127 instead of 128. (f3, f5, f6): New functions. (main): Test all f[1-6] functions, with both 0 and 1 as second arguments. * c-c++-common/rotate-6.c: New test. * c-c++-common/rotate-6a.c: New test. * c-c++-common/rotate-7.c: New test. * c-c++-common/rotate-7a.c: New test. * c-c++-common/rotate-8.c: New test. From-SVN: r253760
Jakub Jelinek committed -
PR bootstrap/82553 * optabs.c (expand_memory_blockage): Fix call of targetm.have_memory_blockage. From-SVN: r253759
Uros Bizjak committed -
sem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Interface is not a suitable... gcc/ada/ 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * sem_elab.adb (In_Preelaborated_Context): A generic package subject to Remote_Call_Interface is not a suitable preelaboratd context when the call appears in the package body. gcc/testsuite/ 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * gnat.dg/remote_call_iface.ads, gnat.dg/remote_call_iface.adb: New testcase. From-SVN: r253758
Hristian Kirtchev committed -
2017-10-14 Eric Botcazou <ebotcazou@adacore.com> * layout.ads (Set_Elem_Alignment): Add Align parameter defaulted to 0. * layout.adb (Set_Elem_Alignment): Likewise. Use M name as maximum alignment for consistency. If Align is non-zero, use the minimum of Align and M for the alignment. * cstand.adb (Build_Float_Type): Use Set_Elem_Alignment instead of setting the alignment directly. 2017-10-14 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb (Analyze_Pragma, case Check): Defer evaluation of the optional string in an Assert pragma until the expansion of the pragma has rewritten it as a conditional statement, so that the string argument is only evaluaed if the assertion fails. This is mandated by RM 11.4.2. 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * debug.adb: Switch -gnatd.v and associated flag are now used to enforce the SPARK rules for elaboration in SPARK code. * sem_elab.adb: Describe switch -gnatd.v. (Process_Call): Verify the SPARK rules only when -gnatd.v is in effect. (Process_Instantiation): Verify the SPARK rules only when -gnatd.v is in effect. (Process_Variable_Assignment): Clarify why variable assignments are processed reglardless of whether -gnatd.v is in effect. * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the sections on elaboration code and compilation switches. * gnat_ugn.texi: Regenerate. 2017-10-14 Gary Dismukes <dismukes@adacore.com> * exp_util.adb, freeze.adb, sem_aggr.adb, sem_util.ads, sem_util.adb, sem_warn.adb: Minor reformattings. From-SVN: r253757
Pierre-Marie de Rodat committed -
2017-10-14 Ed Schonberg <schonberg@adacore.com> * doc/gnat_rm/implementation_defined_aspects.rst: Add documentation for reverse iteration over formal containers. * gnat_rm.texi: Regenerate. 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * sem_elab.adb (Ensure_Dynamic_Prior_Elaboration): Renamed to Ensure_Prior_Elaboration_Dynamic for consistency reasons. (Ensure_Static_Prior_Elaboration): Renamed to Ensure_Prior_Elaboration_Static for consistency reasons. (Info_Variable_Reference): Renamed to Info_Variable_Read in order to reflect its new purpose. (Is_Initialized): New routine. (Is_Suitable_Variable_Reference): Renamed to Is_Suitable_Variable_Read in order to reflect its new purpose. (Is_Variable_Read): New routine. (Output_Variable_Reference): Renamed to Output_Variable_Read in order to reflect its new purpose. (Process_Variable_Assignment): This routine now acts as a top level dispatcher for variable assignments. (Process_Variable_Assignment_Ada): New routine. (Process_Variable_Assignment_SPARK): New routine. (Process_Variable_Reference): Renamed to Process_Variable_Read in order to reflects its new purpose. A reference to a variable is now suitable for ABE processing only when it is a read. The logic in the routine now reflects the latest SPARK elaboration rules. 2017-10-14 Justin Squirek <squirek@adacore.com> * sem_ch8.adb (Analyze_Subprogram_Renaming): Modify condition that triggers marking on formal subprograms. 2017-10-14 Javier Miranda <miranda@adacore.com> * checks.adb (Ensure_Valid): Do not skip adding the validity check on renamings of objects that come from the sources. 2017-10-14 Eric Botcazou <ebotcazou@adacore.com> * cstand.adb (Build_Float_Type): Move down Siz parameter, add Align parameter and set the alignment of the type to Align. (Copy_Float_Type): Adjust call to Build_Float_Type. (Register_Float_Type): Add pragma Unreferenced for Precision. Adjust call to Build_Float_Type and do not set RM_Size and Alignment. From-SVN: r253756
Pierre-Marie de Rodat committed -
2017-10-14 Patrick Bernardi <bernardi@adacore.com> * Makefile.rtl (GNATRTL_NONTASKING_OBJ): Add s-soliin to GNATRTL_NONTASKING_OBJ. From-SVN: r253755
Patrick Bernardi committed -
2017-10-14 Bob Duff <duff@adacore.com> * exp_ch6.adb (Is_Build_In_Place_Result_Type): Include code for enabling b-i-p for nonlimited controlled types (but disabled). 2017-10-14 Justin Squirek <squirek@adacore.com> * sem_elab.adb (Is_Suitable_Variable_Assignment): Replace call to Has_Warnings_Off with Warnings_Off. 2017-10-14 Piotr Trojanek <trojanek@adacore.com> * sinfo.ads (Generic_Parent): Remove wrong (possibly obsolete) comment. 2017-10-14 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch3.adb (Analyze_Declarations): Analyze the contract of an enclosing package at the end of the visible declarations. * sem_prag.adb (Analyze_Initialization_Item): Suppress the analysis of an initialization item which is undefined due to some illegality. 2017-10-14 Patrick Bernardi <bernardi@adacore.com> * ali.adb: Add new ALI line 'T' to read the number of tasks contain within each unit that require a default-sized primary and secondary stack to be generated by the binder. (Scan_ALI): Scan new 'T' lines. * ali.ads: Add Primary_Stack_Count and Sec_Stack_Count to Unit_Record. * bindgen.adb (Gen_Output_File): Count the number of default-sized stacks within the closure that are to be created by the binder. (Gen_Adainit, Gen_Output_File_Ada): Generate default-sized secondary stacks and record these in System.Secodnary_Stack. (Resolve_Binder_Options): Check if System.Secondary_Stack is in the closure of the program being bound. * bindusg.adb (Display): Add "-Q" switch. Remove rouge "--RTS" comment. * exp_ch3.adb (Count_Default_Sized_Task_Stacks): New routine. (Expand_N_Object_Declaration): Count the number of default-sized stacks used by task objects contained within the object whose declaration is being expanded. Only performed when either the restrictions No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in effect. * exp_ch9.adb (Create_Secondary_Stack_For_Task): New routine. (Expand_N_Task_Type_Declaration): Create a secondary stack as part of the expansion of a task type if the size of the stack is known at run-time and the restrictions No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations are in effect. (Make_Task_Create_Call): If using a restricted profile provide secondary stack parameter: either the statically created stack or null. * lib-load.adb (Create_Dummy_Package_Unit, Load_Unit, Load_Main_Source): Include Primary_Stack_Count and Sec_Stack_Count in Unit_Record initialization expressions. * lib-writ.adb (Add_Preprocessing_Dependency, Ensure_System_Dependency): Include Primary_Stack_Count and Sec_Stack_Count in Unit_Record initialization expression. (Write_ALI): Write T lines. (Write_Unit_Information): Do not output 'T' lines if there are no stacks for the binder to generate. * lib-writ.ads: Updated library information documentation to include new T line entry. * lib.adb (Increment_Primary_Stack_Count): New routine. (Increment_Sec_Stack_Count): New routine. (Primary_Stack_Count): New routine. (Sec_Stack_Count): New routine. * lib.ads: Add Primary_Stack_Count and Sec_Stack_Count components to Unit_Record and updated documentation. (Increment_Primary_Stack_Count): New routine along with pragma Inline. (Increment_Sec_Stack_Count): New routine along with pragma Inline. (Primary_Stack_Count): New routine along with pragma Inline. (Sec_Stack_Count): New routine along with pragma Inline. * opt.ads: New constant No_Stack_Size. Flag Default_Stack_Size redefined. New flag Default_Sec_Stack_Size and Quantity_Of_Default_Size_Sec_Stacks. * rtfinal.c Fixed erroneous comment. * rtsfind.ads: Moved RE_Default_Secondary_Stack_Size from System.Secondary_Stack to System.Parameters. Add RE_SS_Stack. * sem_util.adb (Number_Of_Elements_In_Array): New routine. * sem_util.ads (Number_Of_Elements_In_Array): New routine. * switch-b.adb (Scan_Binder_Switches): Scan "-Q" switch. * libgnarl/s-solita.adb (Get_Sec_Stack_Addr): Removed routine. (Set_Sec_Stack_Addr): Removed routine. (Get_Sec_Stack): New routine. (Set_Sec_Stack): New routine. (Init_Tasking_Soft_Links): Update System.Soft_Links reference to reflect new procedure and global names. * libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb, libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb (Register_Foreign_Thread): Update parameter profile to allow the secondary stack size to be specified. * libgnarl/s-tarest.adb (Create_Restricted_Task): Update the parameter profile to include Sec_Stack_Address. Update Tasking.Initialize_ATCB call to remove Secondary_Stack_Size reference. Add secondary stack address and size to SSL.Create_TSD call. (Task_Wrapper): Remove secondary stack creation. * libgnarl/s-tarest.ads (Create_Restricted_Task, Create_Restricted_Task_Sequential): Update parameter profile to include Sec_Stack_Address and clarify the Size parameter. * libgnarl/s-taskin.adb (Initialize_ATCB): Remove Secondary_Stack_Size from profile and body. (Initialize): Remove Secondary_Stack_Size from Initialize_ATCB call. * libgnarl/s-taskin.ads: Removed component Secondary_Stack_Size from Common_ATCB. (Initialize_ATCB): Update the parameter profile to remove Secondary_Stack_Size. * libgnarl/s-tassta.adb (Create_Task): Updated parameter profile and call to Initialize_ATCB. Add secondary stack address and size to SSL.Create_TSD call, and catch any storage exception from the call. (Finalize_Global_Tasks): Update System.Soft_Links references to reflect new subprogram and component names. (Task_Wrapper): Remove secondary stack creation. (Vulnerable_Complete_Master): Update to reflect TSD changes. * libgnarl/s-tassta.ads: Reformat comments. (Create_Task): Update parameter profile. * libgnarl/s-tporft.adb (Register_Foreign_Thread): Update parameter profile to include secondary stack size. Remove secondary size parameter from Initialize_ATCB call and add it to Create_TSD call. * libgnat/s-parame.adb, libgnat/s-parame__rtems.adb, libgnat/s-parame__vxworks.adb (Default_Sec_Stack_Size): New routine. * libgnat/s-parame.ads, libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads, libgnat/s-parame__vxworks.ads: Remove type Percentage. Remove constants Dynamic, Sec_Stack_Percentage and Sec_Stack_Dynamic. Add constant Runtime_Default_Sec_Stack_Size and Sec_Stack_Dynamic. (Default_Sec_Stack_Size): New routine. * libgnat/s-secsta.adb, libgnat/s-secsta.ads: New implementation. Is now Preelaborate. * libgnat/s-soflin.adb: Removed unused with-clauses. With System.Soft_Links.Initialize to initialize non-tasking TSD. (Create_TSD): Update parameter profile. Initialize the TSD and unconditionally call SS_Init. (Destroy_TSD): Update SST.SS_Free call. (Get_Sec_Stack_Addr_NT, Get_Sec_Stack_Addr_Soft, Set_Sec_Stack_Addr_NT, Set_Sec_Stack_Addr_Soft): Remove routines. (Get_Sec_Stack_NT, Get_Sec_Stack_Soft, Set_Sec_Stack_NT, Set_Sec_Stack_Soft): Add routines. (NT_TSD): Move to private part of package specification. * libgnat/s-soflin.ads: New types Get_Stack_Call and Set_Stack_Call with suppressed access checks. Renamed *_Sec_Stack_Addr_* routines and objects to *_Sec_Stack_*. TSD: removed warning suppression and component intialization. Changed Sec_Stack_Addr to Sec_Stack_Ptr. (Create_TSD): Update parameter profile. (NT_TSD): Move to private section from body. * libgnat/s-soliin.adb, libgnat/s-soliin.ads: New files. * libgnat/s-thread.ads (Thread_Body_Enter): Update parameter profile. * libgnat/s-thread__ae653.adb (Get_Sec_Stack_Addr, Set_Sec_Stack_Addr): Remove routine. (Get_Sec_Stack, Set_Sec_Stack): Add routine. (Thread_Body_Enter): Update parameter profile and body to adapt to new System.Secondary_Stack. (Init_RTS): Update body for new System.Soft_Links names. * gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add s-soliin.o. From-SVN: r253754
Pierre-Marie de Rodat committed -
PR bootstrap/82548 * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*, x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append objects to extra_objs instead of overwriting it. From-SVN: r253753
Jakub Jelinek committed -
From-SVN: r253752
Uros Bizjak committed -
sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): Use any_fp_register_operand as operand[3] predicate. * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2): Use any_fp_register_operand as operand[3] predicate. Simplify equality test for operands[2] and operands[4] memory location. (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto. (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New. (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto. (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use any_fp_register_operand as operand[1] predicate. Simplify equality test for operands[0] and operands[3] memory location. (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto. (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New. (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto. From-SVN: r253751
Uros Bizjak committed -
* target-insns.def: Add memory_blockage. * optabs.c (expand_memory_blockage): New function. (expand_asm_memory_barrier): Rename ... (expand_asm_memory_blockage): ... to this. (expand_mem_thread_fence): Call expand_memory_blockage instead of expand_asm_memory_barrier. (expand_mem_singnal_fence): Ditto. (expand_atomic_load): Ditto. (expand_atomic_store): Ditto. * doc/md.texi (Standard Pattern Names For Generation): Document memory_blockage instruction pattern. From-SVN: r253750
Uros Bizjak committed -
PR rtl-optimization/81423 * gcc.c-torture/execute/pr81423.c (foo): Add missing cast. Change L suffixes to LL. (main): Punt if either long long isn't 64-bit or int isn't 32-bit. From-SVN: r253749
Jakub Jelinek committed -
[gcc] * config/rl78/rl78.c (rl78_emit_libcall): New function. * config/rl78/rl78-protos.h (rl78_emit_libcall): New function. * config/rl78/rl78.md: New define_expand "adddi3". [libgcc] * config/rl78/adddi3.S: New assembly file. * config/rl78/t-rl78: Added adddi3.S to LIB2ADD. From-SVN: r253748
Sebastian Perta committed -
From-SVN: r253747
GCC Administrator committed
-
- 13 Oct, 2017 14 commits
-
-
PR sanitizer/82353 * g++.dg/ubsan/pr82353-2.C: New test. * g++.dg/ubsan/pr82353-2-aux.cc: New file. * g++.dg/ubsan/pr82353-2.h: New file. From-SVN: r253744
Jakub Jelinek committed -
* c-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like [LR]SHIFT_EXPR. From-SVN: r253742
Jakub Jelinek committed -
* cfghooks.c (verify_flow_info): Disable check that all probabilities are set correctly. From-SVN: r253741
Jan Hubicka committed -
From-SVN: r253740
Jeff Law committed -
* tree.c (cp_stabilize_reference): Just return a NON_DEPENDENT_EXPR. From-SVN: r253739
Jason Merrill committed -
2017-10-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/81048 * resolve.c (resolve_symbol): Ensure that derived type array results get default initialization. 2017-10-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/81048 * gfortran.dg/derived_init_4.f90 : New test. From-SVN: r253738
Paul Thomas committed -
re PR c++/69078 ([C++14] function local static not initialized when only used in a generic/variadic lambda) 2017-10-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/69078 * g++.dg/cpp1y/lambda-generic-69078-1.C: New. * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise. From-SVN: r253736
Paolo Carlini committed -
re PR target/82274 (__builtin_mul_overflow fails to detect overflow for int64_t when compiled with -m32) PR target/82274 * internal-fn.c (expand_mul_overflow): If both operands have the same highpart of -1 or 0 and the topmost bit of lowpart is different, overflow is if res <= 0 rather than res < 0. * libgcc2.c (__mulvDI3): If both operands have the same highpart of -1 and the topmost bit of lowpart is 0, multiplication overflows even if both lowparts are 0. * gcc.dg/pr82274-1.c: New test. * gcc.dg/pr82274-2.c: New test. From-SVN: r253734
Jakub Jelinek committed -
re PR c++/80873 (ICE in tsubst_copy when trying to use an overloaded function without a definition in a lambda) 2017-10-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/80873 * g++.dg/cpp1y/auto-fn41.C: New. * g++.dg/cpp1y/auto-fn42.C: Likewise. From-SVN: r253733
Paolo Carlini committed -
* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove TARGET_P9_VECTOR code for unaligned_load case. From-SVN: r253731
Pat Haugen committed -
2017-10-13 Mike Frysinger <vapier@chromium.org> * fixinc.in (dirname): Change sed from 's|[^/]*/||' to 's|[^/]*//*||'. From-SVN: r253730
Mike Frysinger committed -
From-SVN: r253729
Jan Hubicka committed -
* cfghooks.c (verify_flow_info): Check that edge probabilities are set. From-SVN: r253728
Jan Hubicka committed -
If the user fails to close an extern "C" linkage specifier, and then uses templates, they will run into "template with C linkage" errors. From personal experience, it can be hard to tell where the extern "C" began. As of r251026 there will be a message highlighting the unclosed '{', but this may be hard to spot at the very end of the errors. This patch adds a note to the various diagnostics that complain about C linkage, showing the user where the extern "C" specification began. gcc/cp/ChangeLog: * cp-tree.h (maybe_show_extern_c_location): New decl. * decl.c (grokfndecl): When complaining about literal operators with C linkage, issue a note giving the location of the extern "C". * parser.c (cp_parser_new): Initialize new field "innermost_linkage_specification_location". (cp_parser_linkage_specification): Store the location of the linkage specification within the cp_parser. (cp_parser_explicit_specialization): When complaining about template specializations with C linkage, issue a note giving the location of the extern "C". (cp_parser_explicit_template_declaration): Likewise for templates. (maybe_show_extern_c_location): New function. * parser.h (struct cp_parser): New field "innermost_linkage_specification_location". gcc/testsuite/ChangeLog: * g++.dg/cpp0x/udlit-extern-c.C: New test case. * g++.dg/diagnostic/unclosed-extern-c.C: Add example of a template erroneously covered by an unclosed extern "C". * g++.dg/template/extern-c.C: New test case. From-SVN: r253726
David Malcolm committed
-