/* Emit RTL for the GCC expander.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
#include "hashtab.h"
#include "insn-config.h"
#include "recog.h"
+#include "real.h"
+#include "fixed-value.h"
#include "bitmap.h"
#include "basic-block.h"
#include "ggc.h"
return lookup_const_fixed (fixed);
}
-/* Constructs double_int from rtx CST. */
-
-double_int
-rtx_to_double_int (const_rtx cst)
-{
- double_int r;
-
- if (CONST_INT_P (cst))
- r = shwi_to_double_int (INTVAL (cst));
- else if (CONST_DOUBLE_P (cst) && GET_MODE (cst) == VOIDmode)
- {
- r.low = CONST_DOUBLE_LOW (cst);
- r.high = CONST_DOUBLE_HIGH (cst);
- }
- else
- gcc_unreachable ();
-
- return r;
-}
-
-
-/* Return a CONST_DOUBLE or CONST_INT for a value specified as
- a double_int. */
-
-rtx
-immed_double_int_const (double_int i, enum machine_mode mode)
-{
- return immed_double_const (i.low, i.high, mode);
-}
-
/* Return a CONST_DOUBLE or CONST_INT for a value specified as a pair
of ints: I0 is the low-order word and I1 is the high-order word.
Do not use this routine for non-integer modes; convert to
the size we got from the type? */
}
+ else if (flag_argument_noalias > 1
+ && (INDIRECT_REF_P (t2))
+ && TREE_CODE (TREE_OPERAND (t2, 0)) == PARM_DECL)
+ {
+ expr = t2;
+ offset = NULL;
+ }
+
/* If this is an indirect reference, record it. */
else if (TREE_CODE (t) == INDIRECT_REF
|| TREE_CODE (t) == MISALIGNED_INDIRECT_REF)
}
}
+ /* If this is a Fortran indirect argument reference, record the
+ parameter decl. */
+ else if (flag_argument_noalias > 1
+ && (INDIRECT_REF_P (t))
+ && TREE_CODE (TREE_OPERAND (t, 0)) == PARM_DECL)
+ {
+ expr = t;
+ offset = NULL;
+ }
+
/* If this is an indirect reference, record it. */
else if (TREE_CODE (t) == INDIRECT_REF
|| TREE_CODE (t) == MISALIGNED_INDIRECT_REF)