---Problem Description---
HTM builtins aren't treated as compiler barriers on powerpc
Contact Information = <email address hidden>
---Steps to Reproduce---
This bug is a mirror of the (fixed) upstream FSF bugzilla https://gcc.gnu.org/PR67281
All relevant information regarding the bug and the fix can be found there. This bugzilla is to track backporting of the fix to the GCC 4.8, 4.9 and 5 based compilers.
Userspace tool common name: GCC
Userspace rpm: gcc-4.8, gcc-4.9 and gcc-5
== Comment: #1
The fix for the FSF GCC 5 branch was committed with:
---Problem Description---
HTM builtins aren't treated as compiler barriers on powerpc
Contact Information = <email address hidden>
---Steps to Reproduce---
This bug is a mirror of the (fixed) upstream FSF bugzilla https:/ /gcc.gnu. org/PR67281
All relevant information regarding the bug and the fix can be found there. This bugzilla is to track backporting of the fix to the GCC 4.8, 4.9 and 5 based compilers.
Userspace tool common name: GCC
Userspace rpm: gcc-4.8, gcc-4.9 and gcc-5
== Comment: #1
The fix for the FSF GCC 5 branch was committed with:
r228846 | bergner | 2015-10-15 11:38:47 -0500 (Thu, 15 Oct 2015) | 16 lines
Backport from mainline
Torvald Riegel <email address hidden>
2015-10-14 Peter Bergner <email address hidden>
PR target/67281 rs6000/ htm.md (UNSPEC_HTM_FENCE): New. rs6000/ rs6000- c.c (rs6000_ target_ modify_ macros) : Define
__TM_FENCE_ _ for htm.
* config/
(tabort, tabort<wd>c, tabort<wd>ci, tbegin, tcheck, tend,
trechkpt, treclaim, tsr, ttest): Rename define_insns from this...
(*tabort, *tabort<wd>c, *tabort<wd>ci, *tbegin, *tcheck, *tend,
*trechkpt, *treclaim, *tsr, *ttest): ...to this. Add memory barrier.
(tabort, tabort<wd>c, tabort<wd>ci, tbegin, tcheck, tend,
trechkpt, treclaim, tsr, ttest): New define_expands.
* config/
* doc/extend.texi: Update documentation for htm builtins.
== Comment: #2
The fix for the FSF GCC 4.9 branch was committed with:
r228847 | bergner | 2015-10-15 11:40:14 -0500 (Thu, 15 Oct 2015) | 16 lines
Backport from mainline
Torvald Riegel <email address hidden>
2015-10-14 Peter Bergner <email address hidden>
PR target/67281 rs6000/ htm.md (UNSPEC_HTM_FENCE): New. rs6000/ rs6000- c.c (rs6000_ target_ modify_ macros) : Define
__TM_FENCE_ _ for htm.
* config/
(tabort, tabort<wd>c, tabort<wd>ci, tbegin, tcheck, tend,
trechkpt, treclaim, tsr, ttest): Rename define_insns from this...
(*tabort, *tabort<wd>c, *tabort<wd>ci, *tbegin, *tcheck, *tend,
*trechkpt, *treclaim, *tsr, *ttest): ...to this. Add memory barrier.
(tabort, tabort<wd>c, tabort<wd>ci, tbegin, tcheck, tend,
trechkpt, treclaim, tsr, ttest): New define_expands.
* config/
* doc/extend.texi: Update documentation for htm builtins.
== Comment: #3
Since the FSF 4.8 branch is closed, here is a backport of the fix along with another
simple HTM wrong code bug to GCC 4.8.
Backport from mainline
Torvald Riegel <email address hidden>
2015-10-14 Peter Bergner <email address hidden>
PR target/67281 rs6000/ htm.md (UNSPEC_HTM_FENCE): New. rs6000/ rs6000- c.c (rs6000_ target_ modify_ macros) : Define
__TM_FENCE_ _ for htm.
* config/
(tabort, tabort<wd>c, tabort<wd>ci, tbegin, tcheck, tend,
trechkpt, treclaim, tsr, ttest): Rename define_insns from this...
(*tabort, *tabort<wd>c, *tabort<wd>ci, *tbegin, *tcheck, *tend,
*trechkpt, *treclaim, *tsr, *ttest): ...to this. Add memory barrier.
(tabort, tabort<wd>c, tabort<wd>ci, tbegin, tcheck, tend,
trechkpt, treclaim, tsr, ttest): New define_expands.
* config/
* doc/extend.texi: Update documentation for htm builtins.
Backport from mainline:
2015-08-03 Peter Bergner <email address hidden>
* config/ rs6000/ htm.md (tabort.): Restrict the source operand to
using a base register.