new_rtx = instantiate_new_reg (SUBREG_REG (x), &offset);
if (new_rtx == NULL)
continue;
+ start_sequence ();
if (maybe_ne (offset, 0))
- {
- start_sequence ();
- new_rtx = expand_simple_binop
- (GET_MODE (new_rtx), PLUS, new_rtx,
- gen_int_mode (offset, GET_MODE (new_rtx)),
- NULL_RTX, 1, OPTAB_LIB_WIDEN);
- seq = end_sequence ();
- emit_insn_before (seq, insn);
- }
- x = simplify_gen_subreg (recog_data.operand_mode[i], new_rtx,
- GET_MODE (new_rtx), SUBREG_BYTE (x));
+ new_rtx = expand_simple_binop
+ (GET_MODE (new_rtx), PLUS, new_rtx,
+ gen_int_mode (offset, GET_MODE (new_rtx)),
+ NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ x = force_subreg (recog_data.operand_mode[i], new_rtx,
+ GET_MODE (new_rtx), SUBREG_BYTE (x));
gcc_assert (x);
+ seq = end_sequence ();
+ emit_insn_before (seq, insn);
break;
default:
--- /dev/null
+// { dg-additional-options "-w -fno-vect-cost-model" }
+
+template <int __v> struct integral_constant {
+ static constexpr int value = __v;
+};
+template <bool __v> using __bool_constant = integral_constant<__v>;
+template <bool> using enable_if_t = int;
+struct function_ref {
+ template <typename Callable>
+ function_ref(
+ Callable,
+ enable_if_t<__bool_constant<__is_same(int, int)>::value> * = nullptr);
+};
+struct ArrayRef {
+ int Data;
+ long Length;
+ int *begin();
+ int *end();
+};
+struct StringRef {
+ char Data;
+ long Length;
+};
+void attributeObject(function_ref);
+struct ScopedPrinter {
+ virtual void printBinaryImpl(StringRef, StringRef, ArrayRef, bool, unsigned);
+};
+struct JSONScopedPrinter : ScopedPrinter {
+ JSONScopedPrinter();
+ void printBinaryImpl(StringRef, StringRef, ArrayRef Value, bool,
+ unsigned StartOffset) {
+ attributeObject([&] {
+ StartOffset;
+ for (char Val : Value)
+ ;
+ });
+ }
+};
+JSONScopedPrinter::JSONScopedPrinter() {}