+2015-10-01 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/67788
+ PR target/67789
+ * config/rs6000/rs6000.c (TARGET_CANNOT_COPY_INSN_P): New.
+ (rs6000_cannot_copy_insn_p): New function.
+ * config/rs6000/rs6000.md (cannot_copy): New attribute.
+ (load_toc_v4_PIC_1_normal): Set cannot_copy.
+ (load_toc_v4_PIC_1_476): Ditto.
+
2015-10-01 Aditya Kumar <aditya.k7@samsung.com>
* graphite-scop-detection.c (struct sese_l): New conversion constructor
#define TARGET_REGISTER_MOVE_COST rs6000_register_move_cost
#undef TARGET_MEMORY_MOVE_COST
#define TARGET_MEMORY_MOVE_COST rs6000_memory_move_cost
+#undef TARGET_CANNOT_COPY_INSN_P
+#define TARGET_CANNOT_COPY_INSN_P rs6000_cannot_copy_insn_p
#undef TARGET_RTX_COSTS
#define TARGET_RTX_COSTS rs6000_rtx_costs
#undef TARGET_ADDRESS_COST
#endif /* HAVE_AS_TLS */
#endif /* TARGET_XCOFF */
+/* Return true if INSN should not be copied. */
+
+static bool
+rs6000_cannot_copy_insn_p (rtx_insn *insn)
+{
+ return recog_memoized (insn) >= 0
+ && get_attr_cannot_copy (insn);
+}
+
/* Compute a (partial) cost for rtx X. Return true if the complete
cost has been computed, and false if subexpressions should be
scanned. In either case, *TOTAL contains the cost result. */
(const_string "no"))
(const_string "no")))
+;; Is copying of this instruction disallowed?
+(define_attr "cannot_copy" "no,yes" (const_string "no"))
+
;; Define floating point instruction sub-types for use with Xfpu.md
(define_attr "fp_type" "fp_default,fp_addsub_s,fp_addsub_d,fp_mul_s,fp_mul_d,fp_div_s,fp_div_d,fp_maddsub_s,fp_maddsub_d,fp_sqrt_s,fp_sqrt_d" (const_string "fp_default"))
&& (flag_pic == 2 || (flag_pic && TARGET_SECURE_PLT))"
"bcl 20,31,%0\\n%0:"
[(set_attr "type" "branch")
- (set_attr "length" "4")])
+ (set_attr "length" "4")
+ (set_attr "cannot_copy" "yes")])
(define_insn "load_toc_v4_PIC_1_476"
[(set (reg:SI LR_REGNO)
return templ;
}"
[(set_attr "type" "branch")
- (set_attr "length" "4")])
+ (set_attr "length" "4")
+ (set_attr "cannot_copy" "yes")])
(define_expand "load_toc_v4_PIC_1b"
[(parallel [(set (reg:SI LR_REGNO)
+2015-10-01 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/67788
+ PR target/67789
+ * gcc.target/powerpc/pr67789.c: New testcase.
+
2015-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran.67802
--- /dev/null
+/* { dg-do assemble } */
+/* { dg-options "-O2 -msecure-plt -fPIC" } */
+
+#define FE_TONEAREST 0
+#define FE_UPWARD 1
+#define FE_DOWNWARD 2
+#define FE_TOWARDZERO 3
+
+extern int fesetround(int);
+
+void
+set_fpu_rounding_mode (int mode)
+{
+ int rnd_mode;
+
+ switch (mode)
+ {
+ case 2:
+ rnd_mode = FE_TONEAREST;
+ break;
+
+ case 4:
+ rnd_mode = FE_UPWARD;
+ break;
+
+ case 1:
+ rnd_mode = FE_DOWNWARD;
+ break;
+
+ case 3:
+ rnd_mode = FE_TOWARDZERO;
+ break;
+
+ default:
+ return;
+ }
+
+ fesetround (rnd_mode);
+}