- 30 May, 2012 9 commits
-
-
* gcc.target/powerpc/powerpc.exp: Load torture-options.exp, call torture-finish. From-SVN: r188008
Alan Modra committed -
* Makefile.in: Fix many dependencies. (DWARF2_H): Depend on dwarf2.def. (RTL_ERROR_H): Depend on rtl-error.h. (TREE_PRETTY_PRINT_H, GIMPLE_PRETTY_PRINT_H): New. Replace all gimple-pretty-print.h and tree-pretty-print.h references. From-SVN: r188007
Steven Bosscher committed -
2012-05-30 Marc Glisse <marc.glisse@inria.fr> gcc/ * simplify-rtx.c (simplify_binary_operation_1): Optimize shuffle of concatenations. gcc/testsuite/ * gcc.target/i386/shuf-concat.c: New test. From-SVN: r188006
Marc Glisse committed -
2012-05-30 Richard Guenther <rguenther@suse.de> PR middle-end/53522 * tree-emutls.c (gen_emutls_addr): Do not add globals to referenced-vars. From-SVN: r188005
Richard Guenther committed -
* explow.c (probe_stack_range): Restore simple control flow and stop again when the probe cannot be generated if HAVE_check_stack. From-SVN: r188003
Eric Botcazou committed -
PR rtl-optimization/53519 * combine.c (simplify_shift_const_1) <case NOT>: Use constm1_rtx instead of GEN_INT (GET_MODE_MASK (mode)) as second operand of XOR. * gcc.c-torture/compile/pr53519.c: New test. From-SVN: r188001
Jakub Jelinek committed -
2012-05-30 Tobias Burnus <burnus@net-b.de> * decl.c: Fix comment typos. * expr.c: Ditto. * frontend-passes.c: Ditto. * match.c: Ditto. * resolve.c: Ditto. * trans-array.c: Ditto. * trans-common.c: Ditto. * trans-intrinsic.c: Ditto. * trans-types.c: Ditto. 2012-05-30 Tobias Burnus <burnus@net-b.de> * io/io.h: Fix comment typos. * io/list_read.c: Ditto. From-SVN: r188000
Tobias Burnus committed -
2012-05-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> * config/arm/arm.c (arm_evpc_neon_vrev): Adjust off by one error. 2012-05-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> * gcc.target/arm/neon-vrev.c: New. From-SVN: r187999
Ramana Radhakrishnan committed -
From-SVN: r187998
GCC Administrator committed
-
- 29 May, 2012 31 commits
-
-
2012-05-29 Jack Howarth <howarth@bromo.med.uc.edu> PR debug/53453 * doc/tm.texi: Update. * doc/tm.texi.in (SDB and DWARF) <TARGET_FORCE_AT_COMP_DIR>: Add @hook. * target.def (force_at_comp_dir): New hook. * config/darwin.h (TARGET_FORCE_AT_COMP_DIR): Define. * dwarf2out.c (dwarf2out_finish): Check targetm.force_at_comp_dir. From-SVN: r187994
Jack Howarth committed -
2012-05-29 Jack Howarth <howarth@bromo.med.uc.edu> * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when Darwin >= 10. (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10. (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10. From-SVN: r187993
Jack Howarth committed -
2012-05-29 Iain Sandoe <iains@gcc.gnu.org> * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when Darwin >= 10. (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10. (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10. From-SVN: r187992
Jack Howarth committed -
PR target/51340 * config/sh/sh.c (sh_option_override): Set TARGET_FMAC if flag_unsafe_math_optimizations is set. * doc/invoke.texi (SH Options): Add -mno-fused-madd description. Update description of -mfused-madd. PR target/51340 * gcc.target/sh/pr51340-1.c: New. * gcc.target/sh/pr51340-2.c: New. * gcc.target/sh/pr51340-3.c: New. From-SVN: r187988
Oleg Endo committed -
PR target/52941 * config/sh/predicates.md (atomic_arith_operand, atomic_logical_operand): New predicates. * config/sh/sh.c (sh_option_override): Check atomic options. * config/sh/sh.h (TARGET_ANY_ATOMIC, UNSUPPORTED_ATOMIC_OPTIONS, UNSUPPORTED_HARD_ATOMIC_CPU): New macros. (DRIVER_SELF_SPECS): Use UNSUPPORTED_ATOMIC_OPTIONS and UNSUPPORTED_HARD_ATOMIC_CPU. * config/sh/sync.md: Update description comments. (I12): New mode iterator. (fetchop_predicate, fetchop_constraint): New code attributes. (atomic_compare_and_swapsi_hard, atomic_compare_and_swap<mode>_hard, atomic_exchangesi_hard, atomic_exchange<mode>_hard, atomic_fetch_<fetchop_name>si_hard, atomic_fetch_<fetchop_name><mode>_hard, atomic_fetch_nandsi_hard, atomic_fetch_nand<mode>_hard, atomic_<fetchop_name>_fetchsi_hard, atomic_<fetchop_name>_fetch<mode>_hard, atomic_nand_fetchsi_hard, atomic_nand_fetch<mode>_hard, atomic_test_and_set_hard): New insns. (atomic_compare_and_swap<mode>_soft, atomic_exchange<mode>_soft, atomic_fetch_<fetchop_name><mode>_soft, atomic_fetch_nand<mode>_soft, atomic_<fetchop_name>_fetch<mode>_soft, atomic_nand_fetch<mode>_soft, atomic_test_and_set_soft): Use same formatting for the first line of the asm block as in new insns above. (atomic_compare_and_swap<mode>, atomic_exchange<mode>, atomic_fetch_<fetchop_name><mode>, atomic_<fetchop_name>_fetch<mode>, atomic_test_and_set): Integrate new *_hard insns into expanders. * config/sh/sh.opt (mhard-atomic): New option. * doc/invoke.texi (SH Options): Document it. From-SVN: r187987
Oleg Endo committed -
2012-05-29 Edmar Wienskoski <edmar@freescale.com> * MAINTAINERS (Write After Approval): Add myself. From-SVN: r187986
Edmar Wienskoski committed -
* include/bits/stl_tempbuf.h (__uninitialized_construct_buf) (__uninitialized_construct_buf_dispatch<>::__ucr): Fix to work with iterator returning rvalue. * testsuite/25_algorithms/stable_sort/3.cc: New. From-SVN: r187985
François Dumont committed -
fixincludes/ * configure.ac: Use GCC_AC_FUNC_MMAP_BLACKLIST instead of gcc_AC_FUNC_MMAP_BLACKLIST. * Makefile.in (ACLOCAL_AMFLAGS): Don't include ../gcc. * aclocal.m4: Regenerate. * configure: Regenerate. From-SVN: r187984
Thomas Schwinge committed -
From-SVN: r187982
Joseph Myers committed -
From-SVN: r187981
Joseph Myers committed -
From-SVN: r187980
Joseph Myers committed -
2012-05-29 Meador Inge <meadori@codesourcery.com> * c-decl.c (c_push_function_context): Always create a new language function. (c_pop_function_context): Clear the language function created in c_push_function_context. From-SVN: r187979
Meador Inge committed -
* config/alpha/ev6.md: (define_bypass "ev6_fmul,ev6_fadd"): New. (define_bypass "ev6_fcmov"): New. From-SVN: r187978
Matt Turner committed -
* mt-sde: Fix typos. * stdint.m4: Fix typos. * tcl.m4: Fix typos. From-SVN: r187971
Joseph Myers committed -
* integrate.c: Remove. * integrate.h: Remove. * Makefile.in: Remove make rules for integrate.c and INTEGRATE_H. * config/arm/t-arm: Remove INTEGRATE_H dependency for target files. * config/rs6000/t-rs6000: Likewise * config/spu/t-spu-elf: Likewise. * function.h (get_hard_reg_initial_val, has_hard_reg_initial_val, get_hard_reg_initial_reg, emit_initial_value_sets): Move prototypes from integrate.h to here. (initial_value_entry): New prototype. * reload.h (allocate_initial_values): Remove prototype. * tree.h (set_decl_abstract_flags, set_decl_origin_self): Likewise. * cse.c (fixed_base_plus_p): Don't handle virtual registers for integrate.c. * dwarf2out.c (set_decl_origin_self, set_block_origin_self, set_decl_abstract_flags, set_block_abstract_flags): Move from integrate.c to here, the only user. * expmed.c (extract_fixed_bit_field): Remove outdated comment about integrate.c. * function.c: Don't include integrate.h. (struct initial_value_pair, struct initial_value_struct, get_hard_reg_initial_val, has_hard_reg_initial_val, get_hard_reg_initial_reg, emit_initial_value_sets): Move from integrate.c to here. (initial_value_entry): New function. * genemit.c (main): Don't print integrate.h include line. * ira.c: Don't include integrate.h. (allocate_initial_values): Move from integrate.c to here. (ira): Update allocate_initial_values call. * tree-inline.c: Don't include integrate.h. (function_attribute_inlinable_p): Moved from integrate.c to here. * cfgexpand.c: Don't include integrate.h. * except.c: Likewise. * langhooks.c: Likewise. * passes.c: Likewise. * toplev.c: Likewise. * config/frv/frv.c: Likewise. * config/pa/pa.c: Likewise. * config/spu/spu.c: Likewise. * config/epiphany/epiphany.c: Likewise. * config/mep/mep.c: Likewise. * config/score/score.c: Likewise. * config/picochip/picochip.c: Likewise. * config/sh/sh.c: Likewise. * config/alpha/alpha.c: Likewise. * config/microblaze/microblaze.c: Likewise. * config/mips/mips.c: Likewise. * config/v850/v850.c: Likewise. * config/mmix/mmix.c: Likewise. * config/bfin/bfin.c: Likewise. * config/arm/arm.c: Likewise. * config/s390/s390.c: Likewise. * config/m32r/m32r.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/c6x/c6x.c: Include function.h instead of integrate.h. * config/tilegx/tilegx.c: Likewise. * config/tilepro/tilepro.c: Likewise. From-SVN: r187969
Steven Bosscher committed -
t-avr (s-avr-mmcu-texi): Call gen-avr-mmcu-texi$(build_exeext) via ./ and don't assume . is in PATH. * config/avr/t-avr (s-avr-mmcu-texi): Call gen-avr-mmcu-texi$(build_exeext) via ./ and don't assume . is in PATH. From-SVN: r187968
Georg-Johann Lay committed -
* config/arm/ieee754-df.S: Fix typos. * config/arm/ieee754-sf.S: Fix typos. * config/c6x/libunwind.S: Fix typos. * config/epiphany/udivsi3-float.c: Fix typos. * config/microblaze/muldi3_hard.S: Fix typos. * config/picochip/adddi3.S: Fix typos. * config/picochip/ashlsi3.S: Fix typos. * config/picochip/ashrsi3.S: Fix typos. * config/picochip/clzsi2.S: Fix typos. * config/picochip/cmpsi2.S: Fix typos. * config/picochip/divmod15.S: Fix typos. * config/picochip/divmodhi4.S: Fix typos. * config/picochip/divmodsi4.S: Fix typos. * config/picochip/longjmp.S: Fix typos. * config/picochip/lshrsi3.S: Fix typos. * config/picochip/parityhi2.S: Fix typos. * config/picochip/popcounthi2.S: Fix typos. * config/picochip/setjmp.S: Fix typos. * config/picochip/subdi3.S: Fix typos. * config/picochip/ucmpsi2.S: Fix typos. * config/picochip/udivmodhi4.S: Fix typos. * config/picochip/udivmodsi4.S: Fix typos. * config/spu/divv2df3.c: Fix typos. * config/spu/mfc_multi_tag_release.c: Fix typos. * config/spu/mfc_tag_release.c: Fix typos. * configure.ac: Fix typos. * configure: Regenerate. From-SVN: r187967
Joseph Myers committed -
* directives.c: Fix typos. * include/line-map.h: Fix typos. * line-map.c: Fix typos. * macro.c: Fix typos. From-SVN: r187966
Joseph Myers committed -
* rtl.h (assign_stack_temp, assign_stack_temp_for_type, assign_temp): Remove 'keep' argument. (mark_temp_addr_taken): Remove prototype. * tree.h (expand_decl): Remove prototype. * function.c (struct temp_slot): Remove addr_taken and keep member. (assign_stack_temp_for_type) Don't initialize above, remove keep argument. (assign_stack_temp, assign_temp): Remove keep argument. (mark_temp_addr_taken): Remove. (preserve_temp_slots): Remove handling of addr_taken and keep members. (free_temp_slots): Ditto. * expr.c (expand_expr_real_1 <COMPOUND_LITERAL_EXPR>): Remove dead code. * stmt.c (expand_asm_operands): Remove dead code. (expand_decl): Remove. * c-decl.c (finish_struct): Don't call expand_decl. * builtins.c (expand_builtin_cexpi): Adjust calls to assign_temp and assign_stack_temp. * calls.c (save_fixed_argument_area, initialize_argument_information, expand_call, emit_library_call_value_1, store_one_arg): Ditto. * expmed.c (extract_bit_field_1): Ditto. * expr.c (emit_group_load_1, emit_group_store, copy_blkmode_from_reg, emit_push_insn, expand_assignment, store_field, expand_constructor, expand_cond_expr_using_cmove, expand_expr_real_2, expand_expr_real_1): Ditto. * stmt.c (expand_asm_operands, expand_return): Ditto. * function.c (pop_temp_slots): Call free_temp_slots. * calls.c (store_one_arg): Don't call preserve_temp_slots or free_temp_slots. * expr.c (expand_assignment): Don't call free_temp_slots. * config/arm/arm.c (neon_expand_vector_init): Ditto. * config/i386/i386.c (ix86_expand_vector_set): Ditto. (ix86_expand_vector_extract): Ditto. * config/ia64/ia64.c (spill_xfmode_rfmode_operand, ia64_expand_movxf_movrf): Ditto. * config/mips/mips.c (mips_expand_vi_general): Ditto. * config/mmix/mmix.md (floatdisf2, floatunsdisf2, truncdfsf2, extendsfdf2): Ditto. * config/rs6000/rs6000.c (rs6000_expand_vector_init, rs6000_expand_vector_set, rs6000_expand_vector_extract, rs6000_allocate_stack_temp): Ditto. * config/rs6000/rs6000.md (fix_trunctfsi2_fprs): Ditto. * config/sparc/sparc.c (emit_soft_tfmode_libcall, sparc_emit_float_lib_cmp, sparc_emit_float_lib_cmp, sparc_expand_vector_init): Ditto. From-SVN: r187965
Michael Matz committed -
* expr.c (expand_expr_real_1 <normal_inner_ref>): Don't allocate a kept temp. (expand_expr_real_1 <COMPOUND_LITERAL_EXPR>): Make unreachable. * gimple-fold.c (canonicalize_constructor_val): Canonicalize COMPOUND_LITERAL_EXPR. * function.c (expand_function_start): Don't call expand_decl, instead assert that we have RTL assigned. * tree-ssa-live.c (remove_unused_locals): Clear nonlocal_goto_save_area if its backing variable is removed. * stmt.c (expand_asm_operands): Remove handling of non-lvalues as mem inputs. (expand_decl): Assert that this does nothing. * calls.c (expand_call): Don't call mark_temp_addr_taken. * c-tree.h (c_expand_decl): Remove prototype. c-family/ * c-common.h (c_expand_decl): Remove prototype. ada/ * gcc-interface/utils.c (create_var_decl_1): Don't call expand_decl. From-SVN: r187962
Michael Matz committed -
2012-05-29 Richard Guenther <rguenther@suse.de> PR tree-optimization/53516 * tree-data-ref.c (stmt_with_adjacent_zero_store_dr_p): Reject bitfield accesses. * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise. * gcc.dg/torture/pr53516.c: New testcase. From-SVN: r187961
Richard Guenther committed -
* LANGUAGES: Fix typos. * Makefile.in: Fix typos. * alias.c: Fix typos. * auto-inc-dec.c: Fix typos. * bb-reorder.c: Fix typos. * cfgcleanup.c: Fix typos. * cgraph.c: Fix typos. * cgraph.h: Fix typos. * cgraphunit.c: Fix typos. * collect2-aix.h: Fix typos. * collect2.c: Fix typos. * compare-elim.c: Fix typos. * config/alpha/vms.h: Fix typos. * config/arm/README-interworking: Fix typos. * config/arm/arm.c: Fix typos. * config/arm/iterators.md: Fix typos. * config/arm/vxworks.h: Fix typos. * config/avr/avr.c: Fix typos. * config/avr/avr.h: Fix typos. * config/avr/avr.md: Fix typos. * config/avr/builtins.def: Fix typos. * config/c6x/c6x.c: Fix typos. * config/cr16/cr16.c: Fix typos. * config/cr16/cr16.md: Fix typos. * config/cris/cris.md: Fix typos. * config/darwin.c: Fix typos. * config/darwin.opt: Fix typos. * config/i386/i386-c.c: Fix typos. * config/i386/i386.c: Fix typos. * config/ia64/ia64.c: Fix typos. * config/m68k/cf.md: Fix typos. * config/mep/mep.c: Fix typos. * config/microblaze/microblaze.c: Fix typos. * config/microblaze/microblaze.h: Fix typos. * config/mn10300/mn10300.c: Fix typos. * config/mn10300/mn10300.md: Fix typos. * config/pa/pa.c: Fix typos. * config/picochip/picochip.h: Fix typos. * config/rs6000/a2.md: Fix typos. * config/rs6000/rs6000.c: Fix typos. * config/rs6000/vector.md: Fix typos. * config/rx/rx.md: Fix typos. * config/rx/rx.opt: Fix typos. * config/s390/2097.md: Fix typos. * config/s390/s390.c: Fix typos. * config/s390/s390.h: Fix typos. * config/sh/sh.c: Fix typos. * config/sh/sh.md: Fix typos. * config/sparc/sync.md: Fix typos. * config/spu/spu.c: Fix typos. * config/spu/spu.md: Fix typos. * config/vms/vms.c: Fix typos. * config/vxworks-dummy.h: Fix typos. * config/vxworks.h: Fix typos. * cselib.c: Fix typos. * df-scan.c: Fix typos. * df.h: Fix typos. * doc/extend.texi: Fix typos. * doc/install.texi: Fix typos. * doc/invoke.texi: Fix typos. * doc/md.texi: Fix typos. * doc/plugins.texi: Fix typos. * doc/rtl.texi: Fix typos. * dse.c: Fix typos. * dwarf2asm.c: Fix typos. * dwarf2out.c: Fix typos. * except.h: Fix typos. * expr.c: Fix typos. * fold-const.c: Fix typos. * gcc.c: Fix typos. * gcse.c: Fix typos. * genautomata.c: Fix typos. * gengtype-state.c: Fix typos. * gengtype.c: Fix typos. * genhooks.c: Fix typos. * gimple-fold.c: Fix typos. * gimple-pretty-print.c: Fix typos. * gimple.c: Fix typos. * gimple.h: Fix typos. * gimplify.c: Fix typos. * graphite-interchange.c: Fix typos. * graphite-sese-to-poly.c: Fix typos. * ifcvt.c: Fix typos. * input.c: Fix typos. * ipa-cp.c: Fix typos. * ipa-inline-analysis.c: Fix typos. * ipa-inline-transform.c: Fix typos. * ipa-inline.c: Fix typos. * ipa-pure-const.c: Fix typos. * ipa-ref.h: Fix typos. * ipa-reference.c: Fix typos. * ipa-utils.c: Fix typos. * ipa.c: Fix typos. * ira-emit.c: Fix typos. * ira-lives.c: Fix typos. * lto-streamer.c: Fix typos. * lto-streamer.h: Fix typos. * lto-wrapper.c: Fix typos. * mcf.c: Fix typos. * mode-switching.c: Fix typos. * modulo-sched.c: Fix typos. * plugin.c: Fix typos. * postreload.c: Fix typos. * sched-deps.c: Fix typos. * sel-sched-ir.c: Fix typos. * sel-sched-ir.h: Fix typos. * sel-sched.c: Fix typos. * sese.c: Fix typos. * stor-layout.c: Fix typos. * target-hooks-macros.h: Fix typos. * target.def: Fix typos. * trans-mem.c: Fix typos. * tree-eh.c: Fix typos. * tree-predcom.c: Fix typos. * tree-sra.c: Fix typos. * tree-ssa-address.c: Fix typos. * tree-ssa-loop-ivopts.c: Fix typos. * tree-ssa-loop-niter.c: Fix typos. * tree-ssa-math-opts.c: Fix typos. * tree-ssa-pre.c: Fix typos. * tree-ssa-propagate.c: Fix typos. * tree-ssa-reassoc.c: Fix typos. * tree-ssa-sccvn.c: Fix typos. * tree-ssa-ter.c: Fix typos. * tree-ssa-uninit.c: Fix typos. * tree-ssanames.c: Fix typos. * tree-vect-generic.c: Fix typos. * tree-vect-slp.c: Fix typos. * tree.c: Fix typos. * tree.h: Fix typos. * varasm.c: Fix typos. * varpool.c: Fix typos. From-SVN: r187959
Joseph Myers committed -
From-SVN: r187956
Joseph Myers committed -
2012-05-29 Richard Guenther <rguenther@suse.de> * tree-dfa.c (find_vars_r): Do not call add_referenced_vars for globals. (add_referenced_var_1): Re-organize. Assert we are not called for globals. (remove_referenced_var): Likewise. * varpool.c (add_new_static_var): Use create_tmp_var_raw. * tree-mudflap.c (execute_mudflap_function_ops): Do not call add_referenced_var on globals. * matrix-reorg.c (transform_access_sites): Likewise. From-SVN: r187955
Richard Guenther committed -
* alias.c (reg_known_value): Make this a VEC. (reg_known_equiv_p): Make this an sbitmap. (reg_known_value_size): Remove. (get_reg_known_value, set_reg_known_value, get_reg_known_equiv_p, set_reg_known_equiv_p): Update for reg_known_value and reg_known_value_size data structure change. (init_alias_analysis, end_alias_analysis): Likewise. From-SVN: r187953
Steven Bosscher committed -
PR middle-end/53510 * input.c (read_line): Use XRESIZEVEC instead of XNEWVEC to avoid leaking memory. No need to handle memory allocation failure. Double string_len on each reallocation instead of adding 2. * gcov.c (read_line): Likewise. From-SVN: r187952
Jakub Jelinek committed -
2012-05-29 Manuel López-Ibáñez <manu@gcc.gnu.org> * c.opt (Wmissing-braces): Use LangEnabledBy(C ObjC,Wall). * c-opts.c (c_common_handle_option): Remove code handling warn_missing_braces. From-SVN: r187948
Manuel López-Ibáñez committed -
PR bootstrap/53459 * lex.c (search_line_fast): Avoid unused local typedefs to simulate a static assertion. From-SVN: r187947
Dodji Seketeli committed -
This reverts commit r187853 From-SVN: r187946
Dodji Seketeli committed -
As stated in the audit trail of this problem report, consider this test case: $ cat test.c 1 struct x { 2 int i; 3 }; 4 struct x x; 5 6 #define TEST(X) x.##X 7 8 void foo (void) 9 { 10 TEST(i) = 0; 11 } $ $ cc1 -quiet test.c test.c: In function 'foo': test.c:10:1: error: pasting "." and "i" does not give a valid preprocessing token TEST(i) = 0; ^ $ So, when pasting tokens, the error diagnostic uses the global and imprecise input_location variable, leading to an imprecise output. To properly fix this, I think libcpp should keep the token of the pasting operator '##', instead of representing it with flag on the LHS operand's token. That way, it could use its location. Doing that would be quite intrusive though. So this patch just uses the location of the LHS of the pasting operator, for now. It's IMHO better than the current situation. The patch makes paste_tokens take a location parameter that is used in the diagnostics. This change can still be useful later when we can use the location of the pasting operator, because paste_tokens will just be passed the new, more precise location. Incidentally, it appeared that when getting tokens from within preprocessor directives (like what is done in gcc.dg/cpp/paste12.c), with -ftrack-macro-expansion disabled, the location of the expansion point of macros was being lost because cpp_reader::set_invocation_location wasn't being properly set. It's because when cpp_get_token_1 calls enter_macro_context, there is a little period of time between the beginning of that later function and when the macro is really pushed (and thus when the macro is really expanded) where we wrongly consider that we are not expanding the macro because macro_of_context is still NULL. In that period of time, in the occurrences of indirect recursive calls to cpp_get_token_1, this later function wrongly sets cpp_reader::invocation_location because cpp_reader::set_invocation_location is not being properly set. To avoid that confusion the patch does away with cpp_reader::set_invocation_location and introduces a new flag cpp_reader::about_to_expand_macro_p that is set in the small time interval exposed earlier. A new in_macro_expansion_p is introduced as well, so that cpp_get_token_1 can now accurately detect when we are in the process of expanding a macro, and thus correctly collect the location of the expansion point. People seem to like screenshots. Thus, after the patch, we now have: $ cc1 -quiet test.c test.c: In function 'foo': test.c:6:18: error: pasting "." and "i" does not give a valid preprocessing token #define TEST(X) x.##X ^ test.c:10:3: note: in expansion of macro 'TEST' TEST(i) = 0; ^ $ Bootstrapped and tested on x86_64-unknown-linux-gnu against trunk. libcpp/ PR preprocessor/53229 * internal.h (cpp_reader::set_invocation_location): Remove. (cpp_reader::about_to_expand_macro_p): New member flag. * directives.c (do_pragma): Remove Kludge as pfile->set_invocation_location is no more. * macro.c (cpp_get_token_1): Do away with the use of cpp_reader::set_invocation_location. Just collect the macro expansion point when we are about to expand the top-most macro. Do not override cpp_reader::about_to_expand_macro_p. This fixes gcc.dg/cpp/paste12.c by making get_token_no_padding properly handle locations of expansion points. (cpp_get_token_with_location): Adjust, as cpp_reader::set_invocation_location is no more. (paste_tokens): Take a virtual location parameter for the LHS of the pasting operator. Use it in diagnostics. Update comments. (paste_all_tokens): Tighten the assert. Propagate the location of the expansion point when no virtual locations are available. Pass the virtual location to paste_tokens. (in_macro_expansion_p): New static function. (enter_macro_context): Set the cpp_reader::about_to_expand_macro_p flag until we really start expanding the macro. gcc/testsuite/ PR preprocessor/53229 * gcc.dg/cpp/paste6.c: Force to run without -ftrack-macro-expansion. * gcc.dg/cpp/paste8.c: Likewise. * gcc.dg/cpp/paste8-2.c: New test, like paste8.c but run with -ftrack-macro-expansion. * gcc.dg/cpp/paste12.c: Force to run without -ftrack-macro-expansion. * gcc.dg/cpp/paste12-2.c: New test, like paste12.c but run with -ftrack-macro-expansion. * gcc.dg/cpp/paste13.c: Likewise. * gcc.dg/cpp/paste14.c: Likewise. * gcc.dg/cpp/paste14-2.c: New test, like paste14.c but run with -ftrack-macro-expansion. * gcc.dg/cpp/paste18.c: New test. From-SVN: r187945
Dodji Seketeli committed -
* gcc.target/cris/torture/trap-1.c, gcc.target/cris/torture/trap-2.c, gcc.target/cris/torture/trap-3.c, gcc.target/cris/torture/trap-v0.c, gcc.target/cris/torture/trap-v3.c: New tests. From-SVN: r187943
Hans-Peter Nilsson committed
-