+2017-06-14 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa.c (xtensa_option_override): Append
+ MASK_CONST16 to target_flags in the absence of TARGET_L32R.
+ (hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
+ xtensa_doloop_hooks): Define unconditionally.
+ (xtensa_reorg_loops): Only call reorg_loops in the presence of
+ TARGET_LOOPS.
+ * config/xtensa/xtensa.h (TARGET_L32R): New definition.
+ (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
+ for it in xtensa_option_override.
+ (HARD_FRAME_POINTER_IS_FRAME_POINTER,
+ HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
+
2017-06-14 Boris Kolpackov <boris@codesynthesis.com>
* doc/cppopts.texi: Document '-' special value to -MF.
int regno;
machine_mode mode;
+ /* Use CONST16 in the absence of L32R.
+ Set it in the TARGET_OPTION_OVERRIDE to avoid dependency on xtensa
+ configuration in the xtensa-common.c */
+
+ if (!TARGET_L32R)
+ target_flags |= MASK_CONST16;
+
if (!TARGET_BOOLEANS && TARGET_HARD_FLOAT)
error ("boolean registers required for the floating-point option");
/* Optimize LOOP. */
-#if TARGET_LOOPS
-
static bool
hwloop_optimize (hwloop_info loop)
{
static void
xtensa_reorg_loops (void)
{
- reorg_loops (false, &xtensa_doloop_hooks);
-}
-#else
-static inline void
-xtensa_reorg_loops (void)
-{
+ if (TARGET_LOOPS)
+ reorg_loops (false, &xtensa_doloop_hooks);
}
-#endif
/* Implement the TARGET_MACHINE_DEPENDENT_REORG pass. */
#define TARGET_LOOPS XCHAL_HAVE_LOOPS
#define TARGET_WINDOWED_ABI (XSHAL_ABI == XTHAL_ABI_WINDOWED)
#define TARGET_DEBUG XCHAL_HAVE_DEBUG
+#define TARGET_L32R XCHAL_HAVE_L32R
-#define TARGET_DEFAULT \
- ((XCHAL_HAVE_L32R ? 0 : MASK_CONST16) | \
- MASK_SERIALIZE_VOLATILE)
+#define TARGET_DEFAULT (MASK_SERIALIZE_VOLATILE)
#ifndef HAVE_AS_TLS
#define HAVE_AS_TLS 0
/* Base register for access to arguments of the function. */
#define ARG_POINTER_REGNUM (GP_REG_FIRST + 17)
+/* Hard frame pointer is neither frame nor arg pointer.
+ The definitions are here because actual hard frame pointer register
+ definition is not a preprocessor constant. */
+#define HARD_FRAME_POINTER_IS_FRAME_POINTER 0
+#define HARD_FRAME_POINTER_IS_ARG_POINTER 0
+
/* For now we don't try to use the full set of boolean registers. Without
software pipelining of FP operations, there's not much to gain and it's
a real pain to get them reloaded. */