This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFC - Next refactoring steps

On Sep 6, 2013, at 8:21 AM, Andrew MacLeod <> wrote:
> these would be really good to identify and fix, if possible.

> Do you know of any of the top of your head?

Sure, they are easy to find.  See below.  I'll note one more use of fixing these.  clang is adding modules to get compilation speed.  Modules require that the inclusion of a header be the same in every instance that it is used.  The usages below would prevent these headers from participating in being a module (and transitive closure of all they include them), thus dooming the software to slow compiles.  C++ features exponential compile time, where/as C features logarithmic compile time.  modules return things back to being linear and are worthwhile to control compilation speed issues.  To be competitive, I think gcc will have to add modules eventually as well, and as the gcc source base grows, making use of modules to keep compilation time down is also worthwhile. 

#ifdef TREE_CODE
bool decimal_real_arithmetic (REAL_VALUE_TYPE *, enum tree_code, const REAL_VALUE_TYPE *,
                              const REAL_VALUE_TYPE *);

/* Conversion to and from GMP integer representations.  */

void mpz_set_double_int (mpz_t, double_int, bool);
double_int mpz_get_double_int (const_tree, mpz_t, bool);

#ifdef TREE_CODE
extern rtx expand_variable_shift (enum tree_code, enum machine_mode,
                                  rtx, tree, rtx, int);
extern rtx expand_shift (enum tree_code, enum machine_mode, rtx, int, rtx,
extern rtx expand_divmod (int, enum tree_code, enum machine_mode, rtx, rtx,
                          rtx, int);

#ifdef RTX_CODE
extern void diddle_return_value (void (*)(rtx, void*), void*);
extern void clobber_return_register (void);

#ifdef GCC_TM_H

#define CUMULATIVE_ARGS_MAGIC ((void *) &targetm.calls)

static inline CUMULATIVE_ARGS *
get_cumulative_args (cumulative_args_t arg)
  gcc_assert (arg.magic == CUMULATIVE_ARGS_MAGIC);
#endif /* ENABLE_CHECKING */
  return (CUMULATIVE_ARGS *) arg.p;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]