Comment 0 for bug 1517093

Revision history for this message
bugproxy (bugproxy) wrote :

---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
        2015-10-14 Peter Bergner <email address hidden>
                            Torvald Riegel <email address hidden>

        PR target/67281
        * config/rs6000/htm.md (UNSPEC_HTM_FENCE): New.
        (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/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
        __TM_FENCE__ for htm.
        * 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
        2015-10-14 Peter Bergner <email address hidden>
                            Torvald Riegel <email address hidden>

        PR target/67281
        * config/rs6000/htm.md (UNSPEC_HTM_FENCE): New.
        (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/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
        __TM_FENCE__ for htm.
        * 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
        2015-10-14 Peter Bergner <email address hidden>
                            Torvald Riegel <email address hidden>

        PR target/67281
        * config/rs6000/htm.md (UNSPEC_HTM_FENCE): New.
        (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/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
        __TM_FENCE__ for htm.
        * 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.