]> git.pld-linux.org Git - packages/cross-gcc.git/blob - gcc49-pr38757.patch
- unconditional noarch subpackages
[packages/cross-gcc.git] / gcc49-pr38757.patch
1 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
2
3         PR debug/38757
4         * langhooks.h (struct lang_hooks): Add source_language langhook.
5         * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL.
6         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE.
7         * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype
8         also for DW_LANG_{C,C99,ObjC}.
9         (gen_compile_unit_die): Use lang_hooks.source_language () to
10         determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
11 c/
12         * c-lang.c (c_source_language): New function.
13         (LANG_HOOKS_SOURCE_LANGUAGE): Define.
14
15 --- gcc/langhooks.h.jj  2011-01-03 12:53:05.125745450 +0100
16 +++ gcc/langhooks.h     2011-01-04 17:59:43.166744926 +0100
17 @@ -467,6 +467,10 @@ struct lang_hooks
18       gimplification.  */
19    bool deep_unsharing;
20  
21 +  /* Return year of the source language standard version if the FE supports
22 +     multiple versions of the standard.  */
23 +  int (*source_language) (void);
24 +
25    /* Whenever you add entries here, make sure you adjust langhooks-def.h
26       and langhooks.c accordingly.  */
27  };
28 --- gcc/langhooks-def.h.jj      2011-01-03 12:53:05.000000000 +0100
29 +++ gcc/langhooks-def.h 2011-01-04 18:00:44.858851030 +0100
30 @@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_
31  #define LANG_HOOKS_BLOCK_MAY_FALLTHRU  hook_bool_const_tree_true
32  #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP      false
33  #define LANG_HOOKS_DEEP_UNSHARING      false
34 +#define LANG_HOOKS_SOURCE_LANGUAGE     NULL
35  
36  /* Attribute hooks.  */
37  #define LANG_HOOKS_ATTRIBUTE_TABLE             NULL
38 @@ -303,7 +304,8 @@ extern void lhd_end_section (void);
39    LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \
40    LANG_HOOKS_BLOCK_MAY_FALLTHRU, \
41    LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
42 -  LANG_HOOKS_DEEP_UNSHARING \
43 +  LANG_HOOKS_DEEP_UNSHARING, \
44 +  LANG_HOOKS_SOURCE_LANGUAGE \
45  }
46  
47  #endif /* GCC_LANG_HOOKS_DEF_H */
48 --- gcc/c/c-lang.c.jj   2011-01-03 12:53:05.376056936 +0100
49 +++ gcc/c/c-lang.c      2011-01-04 17:59:43.167743798 +0100
50 @@ -36,6 +36,12 @@ along with GCC; see the file COPYING3.
51  
52  enum c_language_kind c_language = clk_c;
53  
54 +static int
55 +c_source_language (void)
56 +{
57 +  return flag_isoc99 ? 1999 : 1989;
58 +}
59 +
60  /* Lang hooks common to C and ObjC are declared in c-objc-common.h;
61     consequently, there should be very few hooks below.  */
62  
63 @@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c;
64  #define LANG_HOOKS_INIT c_objc_common_init
65  #undef LANG_HOOKS_INIT_TS
66  #define LANG_HOOKS_INIT_TS c_common_init_ts
67 +#undef LANG_HOOKS_SOURCE_LANGUAGE
68 +#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
69  
70  /* Each front end provides its own lang hook initializer.  */
71  struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
72 --- gcc/dwarf2out.c.jj  2011-01-03 12:53:05.102056475 +0100
73 +++ gcc/dwarf2out.c     2011-01-04 18:03:14.534151763 +0100
74 @@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die,
75  static inline void
76  add_prototyped_attribute (dw_die_ref die, tree func_type)
77  {
78 -  if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89
79 -      && prototype_p (func_type))
80 -    add_AT_flag (die, DW_AT_prototyped, 1);
81 +  switch (get_AT_unsigned (comp_unit_die (), DW_AT_language))
82 +    {
83 +    case DW_LANG_C:
84 +    case DW_LANG_C89:
85 +    case DW_LANG_C99:
86 +    case DW_LANG_ObjC:
87 +      if (prototype_p (func_type))
88 +       add_AT_flag (die, DW_AT_prototyped, 1);
89 +      break;
90 +    default:
91 +      break;
92 +    }
93  }
94  
95  /* Add an 'abstract_origin' attribute below a given DIE.  The DIE is found
96 @@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena
97           if (strcmp (language_string, "GNU Go") == 0)
98             language = DW_LANG_Go;
99         }
100 +      else if (strcmp (language_string, "GNU C") == 0
101 +              && lang_hooks.source_language
102 +              && lang_hooks.source_language () >= 1999)
103 +       language = DW_LANG_C99;
104      }
105    /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works.  */
106    else if (strcmp (language_string, "GNU Fortran") == 0)
This page took 0.103244 seconds and 3 git commands to generate.