- 17 Oct, 2011 10 commits
-
-
dodji authored
This patch basically arranges for the allocation size of line_map buffers to be as close as possible to a power of two. This *significantly* decreases peak memory consumption as (macro) maps are numerous and stay live during all the compilation. The patch adds a new ggc_round_alloc_size interface to the ggc allocator. In each of the two main allocator implementations ('page' and 'zone') the function has been extracted from the main allocation function code and returns the actual size of the allocated memory region, thus giving a chance to the caller to maximize the amount of memory it actually uses from the allocated memory region. In the 'none' allocator implementation (that uses xmalloc) the ggc_round_alloc_size just returns the requested allocation size. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180086 138bc75d-0d04-0410-961f-82ee72b054a4
-
dodji authored
This patch adds statistics about line maps' memory consumption and macro expansion to the output of -fmem-report. It has been useful in trying to reduce the memory consumption of the macro maps support. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180085 138bc75d-0d04-0410-961f-82ee72b054a4
-
dodji authored
This patch adds -fdebug-cpp option. When used with -E this dumps the relevant macro map before every single token. This clutters the output a lot but has proved to be invaluable in tracking some bugs during the development of the virtual location support. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180084 138bc75d-0d04-0410-961f-82ee72b054a4
-
dodji authored
In this third instalment the diagnostic machinery -- when faced with the virtual location of a token resulting from macro expansion -- uses the new linemap APIs to unwind the stack of macro expansions that led to that token and emits a [hopefully] more useful message than what we have today. diagnostic_report_current_module has been slightly changed to use the location given by client code instead of the global input_location variable. This results in more precise diagnostic locations in general but then the patch adjusts some C++ tests which output changed as a result of this. Three new regression tests have been added. The mandatory screenshot goes like this: [dodji@adjoa gcc]$ cat -n test.c 1 #define OPERATE(OPRD1, OPRT, OPRD2) \ 2 OPRD1 OPRT OPRD2; 3 4 #define SHIFTL(A,B) \ 5 OPERATE (A,<<,B) 6 7 #define MULT(A) \ 8 SHIFTL (A,1) 9 10 void 11 g () 12 { 13 MULT (1.0);/* 1.0 << 1; <-- so this is an error. */ 14 } [dodji@adjoa gcc]$ ./cc1 -quiet -ftrack-macro-expansion test.c test.c: In function 'g': test.c:5:14: erreur: invalid operands to binary << (have 'double' and 'int') test.c:2:9: note: in expansion of macro 'OPERATE' test.c:5:3: note: expanded from here test.c:5:14: note: in expansion of macro 'SHIFTL' test.c:8:3: note: expanded from here test.c:8:3: note: in expansion of macro 'MULT2' test.c:13:3: note: expanded from here git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180083 138bc75d-0d04-0410-961f-82ee72b054a4
-
dodji authored
This second instalment uses the infrastructure of the previous patch to allocate a macro map for each macro expansion and assign a virtual location to each token resulting from the expansion. To date when cpp_get_token comes across a token that happens to be a macro, the macro expander kicks in, expands the macro, pushes the resulting tokens onto a "token context" and returns a dummy padding token. The next call to cpp_get_token goes look into the token context for the next token [which is going to result from the previous macro expansion] and returns it. If the token is a macro, the macro expander kicks in and you know the story. This patch piggy-backs on that macro expansion process, so to speak. First it modifies the macro expander to make it create a macro map for each macro expansion. It then allocates a virtual location for each resulting token. Virtual locations of tokens resulting from macro expansions are then stored on a special kind of context called an...
-
dodji authored
This is the first instalment of a set which goal is to track locations of tokens across macro expansions. Tom Tromey did the original work and attached the patch to PR preprocessor/7263. This opus is a derivative of that original work. This patch modifies the linemap module of libcpp to add virtual locations support. A virtual location is a mapped location that can resolve to several different physical locations. It can always resolve to the spelling location of a token. For tokens resulting from macro expansion it can resolve to: - either the location of the expansion point of the macro. - or the location of the token in the definition of the macro - or, if the token is an argument of a function-like macro, the location of the use of the matching macro parameter in the definition of the macro The patch creates a new type of line map called a macro map. For every single macro expansion, there is a macro map that generates a virtual location for every single resulting token of the expansion. The good old type of line map we all know is now called an ordinary map. That one still encodes spelling locations as it has always had. As a result linemap_lookup as been extended to return a macro map when given a virtual location resulting from a macro expansion. The layout of structs line_map has changed to support this new type of map. So did the layout of struct line_maps. Accessor macros have been introduced to avoid messing with the implementation details of these datastructures directly. This helped already as we have been testing different ways of arranging these datastructure. Having to constantly adjust client code that is too tied with the internals of line_map and line_maps would have been even more painful. Of course, many new public functions have been added to the linemap module to handle the resolution of virtual locations. This patch introduces the infrastructure but no part of the compiler uses virtual locations yet. However the client code of the linemap data structures has been adjusted as per the changes. E.g, it's not anymore reliable for a client code to manipulate struct line_map directly if it just wants to deal with spelling locations, because struct line_map can now represent a macro map as well. In that case, it's better to use the convenient API to resolve the initial (possibly virtual) location to a spelling location (or to an ordinary map) and use that. This is the reason why the patch adjusts the Java, Ada and Fortran front ends. Also, note that virtual locations are not supposed to be ordered for relations '<' and '>' anymore. To test if a virtual location appears "before" another one, one has to use a new operator exposed by the line map interface. The patch updates the only spot (in the diagnostics module) I have found that was making the assumption that locations were ordered for these relations. This is the only change that introduces a use of the new line map API in this patch, so I am adding a regression test for it only. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180081 138bc75d-0d04-0410-961f-82ee72b054a4
-
paolo authored
2011-10-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/48489 * typeck.c (finish_class_member_access_expr): Fix error call for TREE_CODE (access_path) == TREE_BINFO. /testsuite 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/48489 * g++.dg/inherit/error5.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180080 138bc75d-0d04-0410-961f-82ee72b054a4
-
janus authored
PR fortran/47023 PR fortran/50752 * primary.c (match_kind_param): Avoid segfault. 2011-10-17 Janus Weil <janus@gcc.gnu.org> PR fortran/47023 PR fortran/50752 * gfortran.dg/kind_tests_4.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180079 138bc75d-0d04-0410-961f-82ee72b054a4
-
irar authored
* gcc.dg/vect/vect-21.c: Expect the loops to get vectorized on targets that support vector condition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180076 138bc75d-0d04-0410-961f-82ee72b054a4
-
gccadmin authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180071 138bc75d-0d04-0410-961f-82ee72b054a4
-
- 16 Oct, 2011 14 commits
-
-
ak authored
gcc/: 2011-10-08 Andi Kleen <ak@linux.intel.com> * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180066 138bc75d-0d04-0410-961f-82ee72b054a4
-
ak authored
gcc/lto/: 2011-10-09 Andi Kleen <ak@linux.intel.com> * lto.c (lto_section_read): Call fatal_error on IO or mmap errors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180065 138bc75d-0d04-0410-961f-82ee72b054a4
-
ak authored
gcc/: 2011-10-13 Andi Kleen <ak@linux.intel.com> * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180064 138bc75d-0d04-0410-961f-82ee72b054a4
-
tkoenig authored
* frontend-passes.c (current_ns): Make static. (create_var): Note parent of newly created namespace. (optimize_namespace): Don't wak sibling namespaces if they are EXEC_BLOCK because this is handled... (gfc_code_walker): ... here. Also walk ASSOCIATE lists. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180063 138bc75d-0d04-0410-961f-82ee72b054a4
-
janus authored
PR fortran/47023 * primary.c (match_kind_param): Detect ISO_C_BINDING kinds. (get_kind): Pass on 'is_iso_c' flag. (match_integer_constant,match_real_constant,match_logical_constant): Set 'ts.is_c_interop'. 2011-10-16 Janus Weil <janus@gcc.gnu.org> PR fortran/47023 * gfortran.dg/c_kind_tests_3.f03: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180062 138bc75d-0d04-0410-961f-82ee72b054a4
-
janus authored
PR fortran/50547 * resolve.c (resolve_formal_arglist): Remove unneeded error message. Some reshuffling. 2011-10-16 Janus Weil <janus@gcc.gnu.org> PR fortran/50547 * gfortran.dg/elemental_args_check_4.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180061 138bc75d-0d04-0410-961f-82ee72b054a4
-
irar authored
PR tree-optimization/50727 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add DEF_STMT to the list of statements to be replaced by the pattern statements. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180060 138bc75d-0d04-0410-961f-82ee72b054a4
-
ebotcazou authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180059 138bc75d-0d04-0410-961f-82ee72b054a4
-
ebotcazou authored
* combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180058 138bc75d-0d04-0410-961f-82ee72b054a4
-
jakub authored
* tree-vectorizer.h (NUM_PATTERNS): Increase to 7. * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add vect_recog_bool_pattern. (check_bool_pattern, adjust_bool_pattern_cast, adjust_bool_pattern, vect_recog_bool_pattern): New functions. * gcc.dg/vect/vect-cond-9.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180057 138bc75d-0d04-0410-961f-82ee72b054a4
-
charlet authored
* link.c (_AIX): Add support for GNU ld. 2011-10-16 Fedor Rybin <frybin@adacore.com> * gnat_ugn.texi: Fixing gnattest example names in the doc. Adding explanation to additional tests usage. 2011-10-16 Robert Dewar <dewar@adacore.com> * exp_ch6.adb, sem_ch6.adb: Minor reformatting. 2011-10-16 Eric Botcazou <ebotcazou@adacore.com> * a-convec.adb: Fix minor inconsistencies. 2011-10-16 Matthew Heaney <heaney@adacore.com> * a-cusyqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cbprqu.ads (package Implementation): Specify pragma Implementation_Defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180056 138bc75d-0d04-0410-961f-82ee72b054a4
-
irar authored
* tree-vect-stmts.c (vectorizable_load): For SLP without permutation treat the first load of the node as the first element in its interleaving chain. * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if necessary and possible. (vect_build_slp_tree): Add new argument. Allow load groups of any size in basic blocks. Keep all the loads for further permutation check. Use the new argument to determine if there is a permutation. Update the recursive calls. (vect_supported_load_permutation_p): Allow subchains of interleaving chains in basic block vectorization. (vect_analyze_slp_instance): Update the call to vect_build_slp_tree. Check load permutation based on the new parameter. (vect_schedule_slp_instance): Don't start from the first element in interleaving chain unless the loads are permuted. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180055 138bc75d-0d04-0410-961f-82ee72b054a4
-
hubicka authored
PR target/48668 PR target/50689 * cgraphunit.c (cgraph_expand_function): Expand thunks and alises after function body. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180053 138bc75d-0d04-0410-961f-82ee72b054a4
-
gccadmin authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180052 138bc75d-0d04-0410-961f-82ee72b054a4
-
- 15 Oct, 2011 14 commits
-
-
paolo authored
2011-10-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50732 * semantics.c (finish_trait_expr): Do not try to instantiate the the base type of an __is_base_of trait. (check_trait_type): Return a tree; use complete_type_or_else. /testsuite 2011-10-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50732 * g++.dg/ext/is_base_of_incomplete.C: New. * g++.dg/ext/is_base_of_diagnostic.C: Adjust dg-errors. * g++.dg/ext/unary_trait_incomplete.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180048 138bc75d-0d04-0410-961f-82ee72b054a4
-
rth authored
* tree-vect-slp.c: Include langhooks.h. (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin. (vect_transform_slp_perm_load): Use can_vec_perm_expr_p. Simplify mask creation for VEC_PERM_EXPR. * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask, not the builtin. (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin. * Makefile.in (tree-vect-slp.o): Update dependency. * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180047 138bc75d-0d04-0410-961f-82ee72b054a4
-
ebotcazou authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180040 138bc75d-0d04-0410-961f-82ee72b054a4
-
uros authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180039 138bc75d-0d04-0410-961f-82ee72b054a4
-
amodra authored
* ifcvt.c (dead_or_predicable): Revert accidental commit with HAVE_simple_return test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180038 138bc75d-0d04-0410-961f-82ee72b054a4
-
uros authored
(dg-options): Add -Wno-attributes. * gcc.target/i386/fma_double_?.c: Ditto. * gcc.target/i386/fma_run_float_?.c: Ditto. * gcc.target/i386/fma_run_double_?.c: Ditto. * gcc.target/i386/l_fma_float_?.c: Dtto. * gcc.target/i386/l_fma_double_?.c: Ditto. * gcc.target/i386/l_fma_run_float_?.c: Ditto. * gcc.target/i386/l_fma_run_double_?.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180029 138bc75d-0d04-0410-961f-82ee72b054a4
-
amodra authored
doing so is likely to kill a shrink-wrapping opportunity. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180028 138bc75d-0d04-0410-961f-82ee72b054a4
-
amodra authored
* jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps. * rtl.h (set_return_jump_label): Declare. * function.c (set_return_jump_label): New function, extracted.. (thread_prologue_and_epilogue_insns): ..from here. Use it in another instance to set return jump_label. * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label. * reorg.c (find_end_label): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180027 138bc75d-0d04-0410-961f-82ee72b054a4
-
charlet authored
* gcc-interface/lang-specs.h: Ensure -mrtp switch is passed when using either rtp-smp or ravenscar-cert-rtp runtimes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180026 138bc75d-0d04-0410-961f-82ee72b054a4
-
charlet authored
* exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call): Do not create a pool formal on unless RE_Root_Storage_Pool_Ptr is available. (Expand_N_Extended_Return_Statement): Do not create a renaming of the build-in-place pool parameter unless RE_Root_Storage_Pool_Ptr is available. (Make_Build_In_Place_Call_In_Allocator): Add the user-defined pool only if RE_Root_Storage_Pool_Ptr is available. (Make_Build_In_Place_Call_In_Object_Declaration): Do not add a pool actual unless RE_Root_Storage_Pool_Ptr is available. * sem_ch6.adb (Create_Extra_Formals): Add build-in-place pool formal only if RE_Root_Storage_Pool_Ptr is available. 2011-10-15 Matthew Heaney <heaney@adacore.com> * a-cusyqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cbprqu.ads (Queue type): Specify Priority aspect for protected type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180025 138bc75d-0d04-0410-961f-82ee72b054a4
-
burnus authored
* gfortran.texi (Fortran 2008 status, TS 29113 status, Further Interoperability of Fortran with C): Update implementation status, change references from TR 29113 to TS 29113. * intrinsic.texi (RANK): Change TR 29113 to TS 29113. * invoke.text (-std=): Ditto, change -std=f2008tr to * -std=f2008ts. * lang.opt (std=): Ditto. * options.c (gfc_handle_option, set_default_std_flags): Ditto * and change GFC_STD_F2008_TR to GFC_STD_F2008_TS. * libgfortran.h: Ditto. * intrinsic.c (add_functions, gfc_check_intrinsic_standard): * Ditto. * decl.c (verify_c_interop_param): Ditto. 2011-10-15 Tobias Burnus <burnus@net-b.de> * gfortran.dg/bind_c_usage_23.f90: Change TR 29113 to TS 29113 * in the comments. * gfortran.dg/bind_c_usage_24.f90: Ditto. * gfortran.dg/rank_3.f90: Ditto. * gfortran.dg/bind_c_usage_22.f90: Ditto, change -std=f2008tr to -std=f2008ts in dg-options. * gfortran.dg/rank_4.f90: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180024 138bc75d-0d04-0410-961f-82ee72b054a4
-
davem authored
* config/sparc/sol2.h: Protect -m{cpu,tune}=native handling with a more complete cpp test. * config/sparc/linux64.h: Likewise. * config/sparc/linux.h: Likewise. * config/sparc/sparc.opt (sparc_debug): New target variable. (mdebug): New target option. * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL, TARGET_DEBUG_OPTIONS): New defines. * config/sparc/sparc.c (debug_target_flag_bits, debug_target_flags): New functions. (sparc_option_override): Add name strings back to cpu_table[]. Parse -mdebug string. When TARGET_DEBUG_OPTIONS is true, print out the target flags before and after override processing as well as the selected cpu. If MASK_V8PLUS, make sure that the selected cpu is at least v9. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180021 138bc75d-0d04-0410-961f-82ee72b054a4
-
kkojima authored
* config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro. * config/sh/sh.c (sh_rtx_costs): Add test instruction case. * config/sh/sh.md (tstsi_t): Name existing insn. Make inner and instruction commutative. (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not, tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor, tstsi_t_zero_extract_subreg_xor_little, tstsi_t_zero_extract_subreg_xor_big): New insns. (*movsicc_t_false, *movsicc_t_true): Replace space with tab in asm output. (*andsi_compact): Reorder alternatives so that K08 is considered first. * gcc.target/sh/pr49263.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180020 138bc75d-0d04-0410-961f-82ee72b054a4
-
gccadmin authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180019 138bc75d-0d04-0410-961f-82ee72b054a4
-
- 14 Oct, 2011 2 commits
-
-
ebotcazou authored
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180015 138bc75d-0d04-0410-961f-82ee72b054a4
-
ebotcazou authored
* config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default processor is at least V9 and TARGET_64BIT_DEFAULT is defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180013 138bc75d-0d04-0410-961f-82ee72b054a4
-