tagoh pushed to gfs-didot-display-fonts (f36). "20160225-10 (..more)"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 11:05:18 UTC
From 97363f11a0034a9755ad53c1b0249681a78aee52 Mon Sep 17 00:00:00 2001
From: Akira TAGOH <akira(a)tagoh.org>
Date: Feb 22 2022 10:53:40 +0000
Subject: 20160225-10
Fix FTBFS
---
diff --git a/gfs-didot-display-fonts.spec b/gfs-didot-display-fonts.spec
index 41b58e8..aa3b89d 100644
--- a/gfs-didot-display-fonts.spec
+++ b/gfs-didot-display-fonts.spec
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: MIT
Version: 20160225
-Release: 9%{?dist}
+Release: 10%{?dist}
URL: http://www.greekfontsociety-gfs.gr/typefaces/20th_21st_century
%global foundry GFS
@@ -25,21 +25,17 @@ from the ’50s and from the Specimens Catalogue of Linotype Co.}
%global archivename %{lua:t=string.gsub(rpm.expand("%{foundry} %{fontfamily}"), "[%p%s]+", "_");print(t)}
-%fontmeta
-
-%global source_files %{expand:
Source0: http://www.greekfontsociety-gfs.gr/_assets/fonts/%{archivename}.zip
Source10: 65-%{fontpkgname}.xml
-}
%fontpkg
-%new_package doc
-Summary: Optional documentation files of %{source_name}
+%package doc
+Summary: Optional documentation files of %{name}
BuildArch: noarch
%description doc
This package provides optional documentation files shipped with
-%{source_name}.
+%{name}.
%prep
%setup -q -c -T
@@ -63,6 +59,10 @@ unzip -j -q %{SOURCE0}
%doc *.pdf
%changelog
+* Tue Feb 22 2022 Akira TAGOH <tagoh(a)redhat.com>
+- 20160225-10
+- Fix FTBFS
+
* Thu Jan 20 2022 Fedora Release Engineering <releng(a)fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
https://src.fedoraproject.org/rpms/gfs-didot-display-fonts/c/97363f11a003...
2Â years, 3Â months
pagure pushed to nmap (main). "Adding simple-functionality-test to
fedora"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 11:00:36 UTC
From 2a3e30e5ac8df950af48283414f525c531ba3e15 Mon Sep 17 00:00:00 2001
From: Frantisek Hrdina <fhrdina(a)redhat.com>
Date: Feb 22 2022 10:47:51 +0000
Subject: Adding simple-functionality-test to fedora
---
diff --git a/Sanity/simple-functionality-test/main.fmf b/Sanity/simple-functionality-test/main.fmf
new file mode 100644
index 0000000..cb83ed2
--- /dev/null
+++ b/Sanity/simple-functionality-test/main.fmf
@@ -0,0 +1,24 @@
+summary: Simple functionality test, local port scanning.
+description: |
+ sanity testing local port scanning
+contact: fhrdina(a)redhat.com
+component:
+- nmap
+test: ./runtest.sh
+framework: beakerlib
+recommend:
+- nmap
+- lsof
+duration: 20m
+enabled: true
+tag:
+- TIP_fedora_pass
+- TIPpass
+- TIPpass_Security
+- Tier1
+tier: '1'
+link:
+- relates: https://bugzilla.redhat.com/show_bug.cgi?id=662962
+extra-nitrate: TC#0059829
+extra-summary: /CoreOS/nmap/Sanity/simple-functionality-test
+extra-task: /CoreOS/nmap/Sanity/simple-functionality-test
diff --git a/Sanity/simple-functionality-test/runtest.sh b/Sanity/simple-functionality-test/runtest.sh
new file mode 100755
index 0000000..9e8d174
--- /dev/null
+++ b/Sanity/simple-functionality-test/runtest.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/nmap/Sanity/simple-functionality-test
+# Description: Simple functionality test, local port scanning.
+# Author: Karel Srot <ksrot(a)redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include rhts environment
+. /usr/share/beakerlib/beakerlib.sh
+
+PACKAGE="nmap"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm $PACKAGE
+ rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
+ rlIsRHEL 4 5 && rlRun "chcon -t tmpfs_t $TmpDir" 0 "Changing SELinux context to allow nmap to write to $TmpDir"
+ rlRun "pushd $TmpDir"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "nmap localhost -p- 2>&1 > myscan.nmap" 0 "Perform nmap scan"
+ rlAssertExists "myscan.nmap"
+ rlRun "lsof -i4 -P | grep '(LISTEN)' > lsof.out" 0 "Checking open ports with lsof -i4"
+
+ grep -q ':22 (LISTEN)' lsof.out &&
+ rlRun "egrep '22/tcp\\W+open\\W+ssh' myscan.nmap" 0 "Checking if ssh has been found"
+
+ grep -q ':25 (LISTEN)' lsof.out &&
+ rlRun "egrep '25/tcp\\W+open\\W+smtp' myscan.nmap" 0 "Checking if smtp daemon has been found"
+
+ grep -q ':631 (LISTEN)' lsof.out &&
+ rlRun "egrep '631/tcp\\W+open\\W+ipp' myscan.nmap" 0 "Checking if cups/ipp has been found"
+
+ grep -q ':111 (LISTEN)' lsof.out &&
+ rlRun "egrep '111/tcp\\W+open\\W+rpcbind' myscan.nmap" 0 "Checking if portmap/rpcbind has been found"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "popd"
+ rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
https://src.fedoraproject.org/tests/nmap/c/2a3e30e5ac8df950af48283414f525...
2Â years, 3Â months
pagure pushed to nmap (main). "Initializing repo"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 11:00:36 UTC
From bd48518520612a9e168fcb41c4079808e9f6e401 Mon Sep 17 00:00:00 2001
From: Frantisek Hrdina <fhrdina(a)redhat.com>
Date: Feb 22 2022 10:31:27 +0000
Subject: Initializing repo
---
diff --git a/.fmf/version b/.fmf/version
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/.fmf/version
@@ -0,0 +1 @@
+1
diff --git a/COMMITMENT b/COMMITMENT
new file mode 100644
index 0000000..a687e0d
--- /dev/null
+++ b/COMMITMENT
@@ -0,0 +1,46 @@
+GPL Cooperation Commitment
+Version 1.0
+
+Before filing or continuing to prosecute any legal proceeding or claim
+(other than a Defensive Action) arising from termination of a Covered
+License, we commit to extend to the person or entity ('you') accused
+of violating the Covered License the following provisions regarding
+cure and reinstatement, taken from GPL version 3. As used here, the
+term 'this License' refers to the specific Covered License being
+enforced.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly
+ and finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you
+ have received notice of violation of this License (for any work)
+ from that copyright holder, and you cure the violation prior to 30
+ days after your receipt of the notice.
+
+We intend this Commitment to be irrevocable, and binding and
+enforceable against us and assignees of or successors to our
+copyrights.
+
+Definitions
+
+'Covered License' means the GNU General Public License, version 2
+(GPLv2), the GNU Lesser General Public License, version 2.1
+(LGPLv2.1), or the GNU Library General Public License, version 2
+(LGPLv2), all as published by the Free Software Foundation.
+
+'Defensive Action' means a legal proceeding or claim that We bring
+against you in response to a prior proceeding or claim initiated by
+you or your affiliate.
+
+'We' means each contributor to this repository as of the date of
+inclusion of this file, including subsidiaries of a corporate
+contributor.
+
+This work is available under a Creative Commons Attribution-ShareAlike
+4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/).
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
https://src.fedoraproject.org/tests/nmap/c/bd48518520612a9e168fcb41c40798...
2Â years, 3Â months
jskarvad pushed to gnuradio (rawhide). "New version (..more)"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 11:00:35 UTC
From d2e3abc5e867e40b8755a6e5ca6b6b02d9c66633 Mon Sep 17 00:00:00 2001
From: Jaroslav Å karvada <jskarvad(a)redhat.com>
Date: Feb 22 2022 11:00:28 +0000
Subject: New version
Resolves: rhbz#2049503
---
diff --git a/gnuradio.spec b/gnuradio.spec
index 6182b44..e8b1647 100644
--- a/gnuradio.spec
+++ b/gnuradio.spec
@@ -21,7 +21,7 @@
#%%global alphatag rc1
Name: gnuradio
-Version: 3.10.1.0
+Version: 3.10.1.1
Release: 1%{?alphatag:.%{alphatag}}%{?dist}
Summary: Software defined radio framework
@@ -192,6 +192,10 @@ rm -r %{buildroot}%{_datadir}/%{name}/grc/freedesktop
%{_datadir}/gnuradio/examples
%changelog
+* Tue Feb 22 2022 Jaroslav Å karvada <jskarvad(a)redhat.com> - 3.10.1.1-1
+- New version
+ Resolves: rhbz#2049503
+
* Sun Jan 30 2022 Jaroslav Å karvada <jskarvad(a)redhat.com> - 3.10.1.0-1
- New version
Resolves: rhbz#2048110
diff --git a/sources b/sources
index 9793dce..9803b05 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (gnuradio-3.10.1.0.tar.gz) = 52cc6ecef8985dafd38d94307be926caf08825e3d97905a276c49a3c7bf97dbf8d2c29cdd02e7f152d0800d1cf05331ccd94f1b0cb6f4b51dc11303230feac83
+SHA512 (gnuradio-3.10.1.1.tar.gz) = 9c763f3716df87a69f6569467142ea6f9a207d645f0a036d6735b42bc79a10e40db735c261a446fa7c86cd58c99d39f928e4660751f0a303c29883cfcb40ccb5
https://src.fedoraproject.org/rpms/gnuradio/c/d2e3abc5e867e40b8755a6e5ca6...
2Â years, 3Â months
fab pushed to python-adafruit-platformdetect (rawhide). "Update to
latest upstream release 3.20.0 (closes rhbz#2051686)"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 10:58:36 UTC
From af8358687c53ce48d8d35066396c75d5fbdf3db7 Mon Sep 17 00:00:00 2001
From: Fabian Affolter <mail(a)fabian-affolter.ch>
Date: Feb 22 2022 10:58:06 +0000
Subject: Update to latest upstream release 3.20.0 (closes rhbz#2051686)
---
diff --git a/.gitignore b/.gitignore
index 579f199..6ba67e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,4 @@
/Adafruit-PlatformDetect-3.19.1.tar.gz
/Adafruit-PlatformDetect-3.19.3.tar.gz
/Adafruit-PlatformDetect-3.19.4.tar.gz
+/Adafruit-PlatformDetect-3.20.0.tar.gz
diff --git a/python-adafruit-platformdetect.spec b/python-adafruit-platformdetect.spec
index 79d8876..15199e9 100644
--- a/python-adafruit-platformdetect.spec
+++ b/python-adafruit-platformdetect.spec
@@ -1,7 +1,7 @@
%global pypi_name adafruit-platformdetect
Name: python-%{pypi_name}
-Version: 3.19.4
+Version: 3.20.0
Release: %autorelease
Summary: Platform detection module
diff --git a/sources b/sources
index 112d203..c0b3467 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (Adafruit-PlatformDetect-3.19.4.tar.gz) = e9862ed7c8718161720d3f83ccbf19455083d4ad6ba435f23726956ff3ceb944f7cb82f6b86509a2e7126ae2e73095f4976da4c5518252bc6b8171d5bc3d3771
+SHA512 (Adafruit-PlatformDetect-3.20.0.tar.gz) = 08974a1aafbf244901e590dfce8e1cced0a0424a6d9873e0f802f1efc9253a0a7e16316ae0f4926bf8d41a43e4ab8ab32c853ed1fec3ac720db07de4e326c624
https://src.fedoraproject.org/rpms/python-adafruit-platformdetect/c/af835...
2Â years, 3Â months
tagoh pushed to typesetit-great-vibes-fonts (rawhide).
"1.101-10.20200215gita82e16d (..more)"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 10:58:01 UTC
From c65f9a075bbcabe97fd082fd0b0166c3099d3b61 Mon Sep 17 00:00:00 2001
From: Akira TAGOH <akira(a)tagoh.org>
Date: Feb 22 2022 10:57:55 +0000
Subject: 1.101-10.20200215gita82e16d
Fix FTBFS
---
diff --git a/typesetit-great-vibes-fonts.spec b/typesetit-great-vibes-fonts.spec
index 183a192..48c639d 100644
--- a/typesetit-great-vibes-fonts.spec
+++ b/typesetit-great-vibes-fonts.spec
@@ -4,7 +4,7 @@
%forgemeta
Version: 1.101
-Release: 9%{?dist}
+Release: 10%{?dist}
URL: %{forgeurl}
%global foundry TypeSETit
@@ -21,12 +21,8 @@ URL: %{forgeurl}
Great Vibes is a beautifully flowing connecting cursive font family. It has
cleanly looping ascenders and descenders as well as elegant uppercase forms.}
-%fontmeta
-
-%global source_files %{expand:
Source0: %{forgesource}
Source10: 57-%{fontpkgname}.xml
-}
%fontpkg
@@ -45,6 +41,10 @@ Source10: 57-%{fontpkgname}.xml
%fontfiles
%changelog
+* Tue Feb 22 2022 Akira TAGOH <tagoh(a)redhat.com>
+- 1.101-10.20200215gita82e16d
+- Fix FTBFS
+
* Sat Jan 22 2022 Fedora Release Engineering <releng(a)fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
https://src.fedoraproject.org/rpms/typesetit-great-vibes-fonts/c/c65f9a07...
2Â years, 3Â months
jakub pushed to gcc (f36). "12.0.1-0.9"
by notificationsï¼ fedoraproject.org
Notification time stamped 2022-02-22 10:57:35 UTC
From b0dddd2d05f29e68631c9155f3eee6a9536c0cf1 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub(a)redhat.com>
Date: Feb 22 2022 10:56:00 +0000
Subject: 12.0.1-0.9
---
diff --git a/.gitignore b/.gitignore
index 03460fe..c50297c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -64,3 +64,4 @@
/gcc-12.0.1-20220205.tar.xz
/gcc-12.0.1-20220212.tar.xz
/gcc-12.0.1-20220214.tar.xz
+/gcc-12.0.1-20220222.tar.xz
diff --git a/gcc.spec b/gcc.spec
index 374c15e..45e45f7 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,5 +1,5 @@
-%global DATE 20220214
-%global gitrev 7222fb983d798306a83666324a92fce5e5881eb7
+%global DATE 20220222
+%global gitrev 9780ea50d2a0fb2b07bc9a0f71e28e9c1ef5e235
%global gcc_version 12.0.1
%global gcc_major 12
# Note, gcc_release must be integer, if you want to add suffixes to
@@ -120,7 +120,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
-Release: %{gcc_release}.8%{?dist}
+Release: %{gcc_release}.9%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@@ -270,8 +270,6 @@ Patch8: gcc12-no-add-needed.patch
Patch9: gcc12-Wno-format-security.patch
Patch10: gcc12-rh1574936.patch
Patch11: gcc12-d-shared-libphobos.patch
-Patch12: gcc12-ifcvt-revert.patch
-Patch13: gcc12-pr104253.patch
Patch100: gcc12-fortran-fdec-duplicates.patch
Patch101: gcc12-fortran-flogical-as-integer.patch
@@ -793,8 +791,6 @@ to NVidia PTX capable devices if available.
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
-%patch12 -p0 -b .ifcvt-revert~
-%patch13 -p0 -b .pr104253~
%if 0%{?rhel} >= 9
%patch100 -p1 -b .fortran-fdec-duplicates~
@@ -824,6 +820,7 @@ cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
+sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc
%ifarch ppc
if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
@@ -3167,6 +3164,23 @@ end
%endif
%changelog
+* Tue Feb 22 2022 Jakub Jelinek <jakub(a)redhat.com> 12.0.1-0.9
+- update from trunk
+ - PRs analyzer/104524, analyzer/104560, analyzer/104576, c++/85493,
+ c++/90451, c++/94944, c++/95036, c++/104107, c++/104507, c++/104539,
+ c++/104565, c/104506, c/104510, c/104531, c/104532, debug/104517,
+ debug/104557, fortran/77693, fortran/104211, libstdc++/104542,
+ libstdc++/104559, lto/104617, middle-end/104355, middle-end/104522,
+ rtl-optimization/104447, rtl-optimization/104498,
+ rtl-optimization/104544, sanitizer/102656, target/99708, target/99881,
+ target/100056, target/100874, target/103069, target/104253,
+ target/104257, target/104335, target/104440, target/104448,
+ target/104536, target/104581, target/104598, target/104612,
+ testsuite/104146, tree-optimization/96881, tree-optimization/103771,
+ tree-optimization/104519, tree-optimization/104526,
+ tree-optimization/104543, tree-optimization/104551,
+ tree-optimization/104582, tree-optimization/104604
+
* Mon Feb 14 2022 Jakub Jelinek <jakub(a)redhat.com> 12.0.1-0.8
- update from trunk
- PRs ada/97504, ada/98724, c/104505, fortran/104228, libstdc++/100912,
diff --git a/gcc12-ifcvt-revert.patch b/gcc12-ifcvt-revert.patch
deleted file mode 100644
index dd13271..0000000
--- a/gcc12-ifcvt-revert.patch
+++ /dev/null
@@ -1,1141 +0,0 @@
-Revert r12-674{3,4,5,6,7,8,9} and r12-7114, as there are several PRs reported
-against those changes still unresolved.
-
---- gcc/ifcvt.cc
-+++ gcc/ifcvt.cc
-@@ -3391,11 +3391,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- rtx cond = noce_get_condition (jump, &cond_earliest, false);
-
- rtx cc_cmp = cond_exec_get_condition (jump);
-- if (cc_cmp)
-- cc_cmp = copy_rtx (cc_cmp);
- rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true);
-- if (rev_cc_cmp)
-- rev_cc_cmp = copy_rtx (rev_cc_cmp);
-
- rtx_insn *insn;
- int count = 0;
-@@ -3519,7 +3515,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- unsigned cost1 = 0, cost2 = 0;
- rtx_insn *seq, *seq1, *seq2;
- rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX;
-- bool read_comparison = false;
-
- seq1 = try_emit_cmove_seq (if_info, temp, cond,
- new_val, old_val, need_cmov,
-@@ -3529,41 +3524,10 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- as well. This allows the backend to emit a cmov directly without
- creating an additional compare for each. If successful, costing
- is easier and this sequence is usually preferred. */
-- seq2 = try_emit_cmove_seq (if_info, temp, cond,
-+ seq2 = try_emit_cmove_seq (if_info, target, cond,
- new_val, old_val, need_cmov,
- &cost2, &temp_dest2, cc_cmp, rev_cc_cmp);
-
-- /* The backend might have created a sequence that uses the
-- condition. Check this. */
-- rtx_insn *walk = seq2;
-- while (walk)
-- {
-- rtx set = single_set (walk);
--
-- if (!set || !SET_SRC (set))
-- {
-- walk = NEXT_INSN (walk);
-- continue;
-- }
--
-- rtx src = SET_SRC (set);
--
-- if (XEXP (set, 1) && GET_CODE (XEXP (set, 1)) == IF_THEN_ELSE)
-- ; /* We assume that this is the cmove created by the backend that
-- naturally uses the condition. Therefore we ignore it. */
-- else
-- {
-- if (reg_mentioned_p (XEXP (cond, 0), src)
-- || reg_mentioned_p (XEXP (cond, 1), src))
-- {
-- read_comparison = true;
-- break;
-- }
-- }
--
-- walk = NEXT_INSN (walk);
-- }
--
- /* Check which version is less expensive. */
- if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX))
- {
-@@ -3576,8 +3540,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- {
- seq = seq2;
- temp_dest = temp_dest2;
-- if (!second_try && read_comparison)
-- *last_needs_comparison = count;
- }
- else
- {
-@@ -3596,12 +3558,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- unmodified_insns->safe_push (insn);
- }
-
-- /* Even if we did not actually need the comparison, we want to make sure
-- to try a second time in order to get rid of the temporaries. */
-- if (*last_needs_comparison == -1)
-- *last_needs_comparison = 0;
--
--
- return true;
- }
-
---- gcc/config/rs6000/rs6000.cc
-+++ gcc/config/rs6000/rs6000.cc
-@@ -16373,10 +16373,10 @@ rs6000_emit_minmax (rtx dest, enum rtx_code code, rtx op0, rtx op1)
- c = GEU;
-
- if (code == SMAX || code == UMAX)
-- target = emit_conditional_move (dest, { c, op0, op1, mode },
-+ target = emit_conditional_move (dest, c, op0, op1, mode,
- op0, op1, mode, 0);
- else
-- target = emit_conditional_move (dest, { c, op0, op1, mode },
-+ target = emit_conditional_move (dest, c, op0, op1, mode,
- op1, op0, mode, 0);
- gcc_assert (target);
- if (target != dest)
-@@ -22769,7 +22769,7 @@ rs6000_emit_swsqrt (rtx dst, rtx src, bool recip)
-
- if (mode == SFmode)
- {
-- rtx target = emit_conditional_move (e, { GT, src, zero, mode },
-+ rtx target = emit_conditional_move (e, GT, src, zero, mode,
- e, zero, mode, 0);
- if (target != e)
- emit_move_insn (e, target);
---- gcc/expmed.cc
-+++ gcc/expmed.cc
-@@ -4124,8 +4124,8 @@ expand_sdiv_pow2 (scalar_int_mode mode, rtx op0, HOST_WIDE_INT d)
- temp = force_reg (mode, temp);
-
- /* Construct "temp2 = (temp2 < 0) ? temp : temp2". */
-- temp2 = emit_conditional_move (temp2, { LT, temp2, const0_rtx, mode },
-- temp, temp2, mode, 0);
-+ temp2 = emit_conditional_move (temp2, LT, temp2, const0_rtx,
-+ mode, temp, temp2, mode, 0);
- if (temp2)
- {
- rtx_insn *seq = get_insns ();
-@@ -6127,10 +6127,10 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
- return 0;
-
- if (and_them)
-- tem = emit_conditional_move (target, { code, op0, op1, mode },
-+ tem = emit_conditional_move (target, code, op0, op1, mode,
- tem, const0_rtx, GET_MODE (tem), 0);
- else
-- tem = emit_conditional_move (target, { code, op0, op1, mode },
-+ tem = emit_conditional_move (target, code, op0, op1, mode,
- trueval, tem, GET_MODE (tem), 0);
-
- if (tem == 0)
---- gcc/expr.cc
-+++ gcc/expr.cc
-@@ -8824,9 +8824,8 @@ expand_cond_expr_using_cmove (tree treeop0 ATTRIBUTE_UNUSED,
- op2 = gen_lowpart (mode, op2);
-
- /* Try to emit the conditional move. */
-- insn = emit_conditional_move (temp,
-- { comparison_code, op00, op01,
-- comparison_mode },
-+ insn = emit_conditional_move (temp, comparison_code,
-+ op00, op01, comparison_mode,
- op1, op2, mode,
- unsignedp);
-
-@@ -9717,9 +9716,8 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode,
- start_sequence ();
-
- /* Try to emit the conditional move. */
-- insn = emit_conditional_move (target,
-- { comparison_code,
-- op0, cmpop1, mode },
-+ insn = emit_conditional_move (target, comparison_code,
-+ op0, cmpop1, mode,
- op0, op1, mode,
- unsignedp);
-
---- gcc/ifcvt.cc
-+++ gcc/ifcvt.cc
-@@ -83,7 +83,7 @@ static rtx_insn *last_active_insn (basic_block, int);
- static rtx_insn *find_active_insn_before (basic_block, rtx_insn *);
- static rtx_insn *find_active_insn_after (basic_block, rtx_insn *);
- static basic_block block_fallthru (basic_block);
--static rtx cond_exec_get_condition (rtx_insn *, bool);
-+static rtx cond_exec_get_condition (rtx_insn *);
- static rtx noce_get_condition (rtx_insn *, rtx_insn **, bool);
- static int noce_operand_ok (const_rtx);
- static void merge_if_block (ce_if_block *);
-@@ -98,14 +98,6 @@ static int dead_or_predicable (basic_block, basic_block, basic_block,
- edge, int);
- static void noce_emit_move_insn (rtx, rtx);
- static rtx_insn *block_has_only_trap (basic_block);
--static void need_cmov_or_rewire (basic_block, hash_set<rtx_insn *> *,
-- hash_map<rtx_insn *, int> *);
--static bool noce_convert_multiple_sets_1 (struct noce_if_info *,
-- hash_set<rtx_insn *> *,
-- hash_map<rtx_insn *, int> *,
-- auto_vec<rtx> *,
-- auto_vec<rtx> *,
-- auto_vec<rtx_insn *> *, int *);
-
- /* Count the number of non-jump active insns in BB. */
-
-@@ -433,7 +425,7 @@ cond_exec_process_insns (ce_if_block *ce_info ATTRIBUTE_UNUSED,
- /* Return the condition for a jump. Do not do any special processing. */
-
- static rtx
--cond_exec_get_condition (rtx_insn *jump, bool get_reversed = false)
-+cond_exec_get_condition (rtx_insn *jump)
- {
- rtx test_if, cond;
-
-@@ -445,10 +437,8 @@ cond_exec_get_condition (rtx_insn *jump, bool get_reversed = false)
-
- /* If this branches to JUMP_LABEL when the condition is false,
- reverse the condition. */
-- if (get_reversed
-- || (GET_CODE (XEXP (test_if, 2)) == LABEL_REF
-- && label_ref_label (XEXP (test_if, 2))
-- == JUMP_LABEL (jump)))
-+ if (GET_CODE (XEXP (test_if, 2)) == LABEL_REF
-+ && label_ref_label (XEXP (test_if, 2)) == JUMP_LABEL (jump))
- {
- enum rtx_code rev = reversed_comparison_code (cond, jump);
- if (rev == UNKNOWN)
-@@ -780,7 +770,7 @@ static int noce_try_addcc (struct noce_if_info *);
- static int noce_try_store_flag_constants (struct noce_if_info *);
- static int noce_try_store_flag_mask (struct noce_if_info *);
- static rtx noce_emit_cmove (struct noce_if_info *, rtx, enum rtx_code, rtx,
-- rtx, rtx, rtx, rtx = NULL, rtx = NULL);
-+ rtx, rtx, rtx);
- static int noce_try_cmove (struct noce_if_info *);
- static int noce_try_cmove_arith (struct noce_if_info *);
- static rtx noce_get_alt_condition (struct noce_if_info *, rtx, rtx_insn **);
-@@ -1719,8 +1709,7 @@ noce_try_store_flag_mask (struct noce_if_info *if_info)
-
- static rtx
- noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code,
-- rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue, rtx cc_cmp,
-- rtx rev_cc_cmp)
-+ rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue)
- {
- rtx target ATTRIBUTE_UNUSED;
- int unsignedp ATTRIBUTE_UNUSED;
-@@ -1752,30 +1741,23 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code,
- end_sequence ();
- }
-
-- unsignedp = (code == LTU || code == GEU
-- || code == LEU || code == GTU);
--
-- if (cc_cmp != NULL_RTX && rev_cc_cmp != NULL_RTX)
-- target = emit_conditional_move (x, cc_cmp, rev_cc_cmp,
-- vtrue, vfalse, GET_MODE (x));
-- else
-+ /* Don't even try if the comparison operands are weird
-+ except that the target supports cbranchcc4. */
-+ if (! general_operand (cmp_a, GET_MODE (cmp_a))
-+ || ! general_operand (cmp_b, GET_MODE (cmp_b)))
- {
-- /* Don't even try if the comparison operands are weird
-- except that the target supports cbranchcc4. */
-- if (! general_operand (cmp_a, GET_MODE (cmp_a))
-- || ! general_operand (cmp_b, GET_MODE (cmp_b)))
-- {
-- if (!have_cbranchcc4
-- || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC
-- || cmp_b != const0_rtx)
-- return NULL_RTX;
-- }
--
-- target = emit_conditional_move (x, { code, cmp_a, cmp_b, VOIDmode },
-- vtrue, vfalse, GET_MODE (x),
-- unsignedp);
-+ if (!have_cbranchcc4
-+ || GET_MODE_CLASS (GET_MODE (cmp_a)) != MODE_CC
-+ || cmp_b != const0_rtx)
-+ return NULL_RTX;
- }
-
-+ unsignedp = (code == LTU || code == GEU
-+ || code == LEU || code == GTU);
-+
-+ target = emit_conditional_move (x, code, cmp_a, cmp_b, VOIDmode,
-+ vtrue, vfalse, GET_MODE (x),
-+ unsignedp);
- if (target)
- return target;
-
-@@ -1811,9 +1793,8 @@ noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code,
-
- promoted_target = gen_reg_rtx (GET_MODE (reg_vtrue));
-
-- target = emit_conditional_move (promoted_target,
-- { code, cmp_a, cmp_b, VOIDmode },
-- reg_vtrue, reg_vfalse,
-+ target = emit_conditional_move (promoted_target, code, cmp_a, cmp_b,
-+ VOIDmode, reg_vtrue, reg_vfalse,
- GET_MODE (reg_vtrue), unsignedp);
- /* Nope, couldn't do it in that mode either. */
- if (!target)
-@@ -3160,50 +3141,6 @@ bb_valid_for_noce_process_p (basic_block test_bb, rtx cond,
- return false;
- }
-
--/* Helper function to emit a cmov sequence encapsulated in
-- start_sequence () and end_sequence (). If NEED_CMOV is true
-- we call noce_emit_cmove to create a cmove sequence. Otherwise emit
-- a simple move. If successful, store the first instruction of the
-- sequence in TEMP_DEST and the sequence costs in SEQ_COST. */
--
--static rtx_insn*
--try_emit_cmove_seq (struct noce_if_info *if_info, rtx temp,
-- rtx cond, rtx new_val, rtx old_val, bool need_cmov,
-- unsigned *cost, rtx *temp_dest,
-- rtx cc_cmp = NULL, rtx rev_cc_cmp = NULL)
--{
-- rtx_insn *seq = NULL;
-- *cost = 0;
--
-- rtx x = XEXP (cond, 0);
-- rtx y = XEXP (cond, 1);
-- rtx_code cond_code = GET_CODE (cond);
--
-- start_sequence ();
--
-- if (need_cmov)
-- *temp_dest = noce_emit_cmove (if_info, temp, cond_code,
-- x, y, new_val, old_val, cc_cmp, rev_cc_cmp);
-- else
-- {
-- *temp_dest = temp;
-- if (if_info->then_else_reversed)
-- noce_emit_move_insn (temp, old_val);
-- else
-- noce_emit_move_insn (temp, new_val);
-- }
--
-- if (*temp_dest != NULL_RTX)
-- {
-- seq = get_insns ();
-- *cost = seq_cost (seq, if_info->speed_p);
-- }
--
-- end_sequence ();
--
-- return seq;
--}
--
- /* We have something like:
-
- if (x > y)
-@@ -3261,6 +3198,7 @@ noce_convert_multiple_sets (struct noce_if_info *if_info)
- rtx cond = noce_get_condition (jump, &cond_earliest, false);
- rtx x = XEXP (cond, 0);
- rtx y = XEXP (cond, 1);
-+ rtx_code cond_code = GET_CODE (cond);
-
- /* The true targets for a conditional move. */
- auto_vec<rtx> targets;
-@@ -3269,139 +3207,8 @@ noce_convert_multiple_sets (struct noce_if_info *if_info)
- auto_vec<rtx> temporaries;
- /* The insns we've emitted. */
- auto_vec<rtx_insn *> unmodified_insns;
--
-- hash_set<rtx_insn *> need_no_cmov;
-- hash_map<rtx_insn *, int> rewired_src;
--
-- need_cmov_or_rewire (then_bb, &need_no_cmov, &rewired_src);
--
-- int last_needs_comparison = -1;
--
-- bool ok = noce_convert_multiple_sets_1
-- (if_info, &need_no_cmov, &rewired_src, &targets, &temporaries,
-- &unmodified_insns, &last_needs_comparison);
-- if (!ok)
-- return false;
--
-- /* If there are insns that overwrite part of the initial
-- comparison, we can still omit creating temporaries for
-- the last of them.
-- As the second try will always create a less expensive,
-- valid sequence, we do not need to compare and can discard
-- the first one. */
-- if (last_needs_comparison != -1)
-- {
-- end_sequence ();
-- start_sequence ();
-- ok = noce_convert_multiple_sets_1
-- (if_info, &need_no_cmov, &rewired_src, &targets, &temporaries,
-- &unmodified_insns, &last_needs_comparison);
-- /* Actually we should not fail anymore if we reached here,
-- but better still check. */
-- if (!ok)
-- return false;
-- }
--
-- /* We must have seen some sort of insn to insert, otherwise we were
-- given an empty BB to convert, and we can't handle that. */
-- gcc_assert (!unmodified_insns.is_empty ());
--
-- /* Now fixup the assignments. */
-- for (unsigned i = 0; i < targets.length (); i++)
-- if (targets[i] != temporaries[i])
-- noce_emit_move_insn (targets[i], temporaries[i]);
--
-- /* Actually emit the sequence if it isn't too expensive. */
-- rtx_insn *seq = get_insns ();
--
-- if (!targetm.noce_conversion_profitable_p (seq, if_info))
-- {
-- end_sequence ();
-- return FALSE;
-- }
--
-- for (insn = seq; insn; insn = NEXT_INSN (insn))
-- set_used_flags (insn);
--
-- /* Mark all our temporaries and targets as used. */
-- for (unsigned i = 0; i < targets.length (); i++)
-- {
-- set_used_flags (temporaries[i]);
-- set_used_flags (targets[i]);
-- }
--
-- set_used_flags (cond);
-- set_used_flags (x);
-- set_used_flags (y);
--
-- unshare_all_rtl_in_chain (seq);
-- end_sequence ();
--
-- if (!seq)
-- return FALSE;
--
-- for (insn = seq; insn; insn = NEXT_INSN (insn))
-- if (JUMP_P (insn)
-- || recog_memoized (insn) == -1)
-- return FALSE;
--
-- emit_insn_before_setloc (seq, if_info->jump,
-- INSN_LOCATION (unmodified_insns.last ()));
--
-- /* Clean up THEN_BB and the edges in and out of it. */
-- remove_edge (find_edge (test_bb, join_bb));
-- remove_edge (find_edge (then_bb, join_bb));
-- redirect_edge_and_branch_force (single_succ_edge (test_bb), join_bb);
-- delete_basic_block (then_bb);
-- num_true_changes++;
--
-- /* Maybe merge blocks now the jump is simple enough. */
-- if (can_merge_blocks_p (test_bb, join_bb))
-- {
-- merge_blocks (test_bb, join_bb);
-- num_true_changes++;
-- }
--
-- num_updated_if_blocks++;
-- if_info->transform_name = "noce_convert_multiple_sets";
-- return TRUE;
--}
--
--/* This goes through all relevant insns of IF_INFO->then_bb and tries to
-- create conditional moves. In case a simple move sufficis the insn
-- should be listed in NEED_NO_CMOV. The rewired-src cases should be
-- specified via REWIRED_SRC. TARGETS, TEMPORARIES and UNMODIFIED_INSNS
-- are specified and used in noce_convert_multiple_sets and should be passed
-- to this function.. */
--
--static bool
--noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
-- hash_set<rtx_insn *> *need_no_cmov,
-- hash_map<rtx_insn *, int> *rewired_src,
-- auto_vec<rtx> *targets,
-- auto_vec<rtx> *temporaries,
-- auto_vec<rtx_insn *> *unmodified_insns,
-- int *last_needs_comparison)
--{
-- basic_block then_bb = if_info->then_bb;
-- rtx_insn *jump = if_info->jump;
-- rtx_insn *cond_earliest;
--
-- /* Decompose the condition attached to the jump. */
-- rtx cond = noce_get_condition (jump, &cond_earliest, false);
--
-- rtx cc_cmp = cond_exec_get_condition (jump);
-- rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true);
--
-- rtx_insn *insn;
- int count = 0;
-
-- targets->truncate (0);
-- temporaries->truncate (0);
-- unmodified_insns->truncate (0);
--
-- bool second_try = *last_needs_comparison != -1;
--
- FOR_BB_INSNS (then_bb, insn)
- {
- /* Skip over non-insns. */
-@@ -3412,53 +3219,26 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- gcc_checking_assert (set);
-
- rtx target = SET_DEST (set);
-- rtx temp;
--
-+ rtx temp = gen_reg_rtx (GET_MODE (target));
- rtx new_val = SET_SRC (set);
-- if (int *ii = rewired_src->get (insn))
-- new_val = simplify_replace_rtx (new_val, (*targets)[*ii],
-- (*temporaries)[*ii]);
- rtx old_val = target;
-
-- /* As we are transforming
-- if (x > y)
-- {
-- a = b;
-- c = d;
-- }
-- into
-- a = (x > y) ...
-- c = (x > y) ...
--
-- we potentially check x > y before every set.
-- Even though the check might be removed by subsequent passes, this means
-- that we cannot transform
-- if (x > y)
-- {
-- x = y;
-- ...
-- }
-- into
-- x = (x > y) ...
-- ...
-- since this would invalidate x and the following to-be-removed checks.
-- Therefore we introduce a temporary every time we are about to
-- overwrite a variable used in the check. Costing of a sequence with
-- these is going to be inaccurate so only use temporaries when
-- needed.
--
-- If performing a second try, we know how many insns require a
-- temporary. For the last of these, we can omit creating one. */
-- if (reg_overlap_mentioned_p (target, cond)
-- && (!second_try || count < *last_needs_comparison))
-- temp = gen_reg_rtx (GET_MODE (target));
-- else
-- temp = target;
--
-- /* We have identified swap-style idioms before. A normal
-- set will need to be a cmov while the first instruction of a swap-style
-- idiom can be a regular move. This helps with costing. */
-- bool need_cmov = !need_no_cmov->contains (insn);
-+ /* If we were supposed to read from an earlier write in this block,
-+ we've changed the register allocation. Rewire the read. While
-+ we are looking, also try to catch a swap idiom. */
-+ for (int i = count - 1; i >= 0; --i)
-+ if (reg_overlap_mentioned_p (new_val, targets[i]))
-+ {
-+ /* Catch a "swap" style idiom. */
-+ if (find_reg_note (insn, REG_DEAD, new_val) != NULL_RTX)
-+ /* The write to targets[i] is only live until the read
-+ here. As the condition codes match, we can propagate
-+ the set to here. */
-+ new_val = SET_SRC (single_set (unmodified_insns[i]));
-+ else
-+ new_val = temporaries[i];
-+ break;
-+ }
-
- /* If we had a non-canonical conditional jump (i.e. one where
- the fallthrough is to the "else" case) we need to reverse
-@@ -3478,9 +3258,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- we'll end up trying to emit r4:HI = cond ? (r1:SI) : (r3:HI).
- Wrap the two cmove operands into subregs if appropriate to prevent
- that. */
--
-- if (!CONSTANT_P (new_val)
-- && GET_MODE (new_val) != GET_MODE (temp))
-+ if (GET_MODE (new_val) != GET_MODE (temp))
- {
- machine_mode src_mode = GET_MODE (new_val);
- machine_mode dst_mode = GET_MODE (temp);
-@@ -3491,8 +3269,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- }
- new_val = lowpart_subreg (dst_mode, new_val, src_mode);
- }
-- if (!CONSTANT_P (old_val)
-- && GET_MODE (old_val) != GET_MODE (temp))
-+ if (GET_MODE (old_val) != GET_MODE (temp))
- {
- machine_mode src_mode = GET_MODE (old_val);
- machine_mode dst_mode = GET_MODE (temp);
-@@ -3504,80 +3281,101 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
- old_val = lowpart_subreg (dst_mode, old_val, src_mode);
- }
-
-- /* Try emitting a conditional move passing the backend the
-- canonicalized comparison. The backend is then able to
-- recognize expressions like
--
-- if (x > y)
-- y = x;
--
-- as min/max and emit an insn, accordingly. */
-- unsigned cost1 = 0, cost2 = 0;
-- rtx_insn *seq, *seq1, *seq2;
-- rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX;
-+ /* Actually emit the conditional move. */
-+ rtx temp_dest = noce_emit_cmove (if_info, temp, cond_code,
-+ x, y, new_val, old_val);
-
-- seq1 = try_emit_cmove_seq (if_info, temp, cond,
-- new_val, old_val, need_cmov,
-- &cost1, &temp_dest1);
--
-- /* Here, we try to pass the backend a non-canonicalized cc comparison
-- as well. This allows the backend to emit a cmov directly without
-- creating an additional compare for each. If successful, costing
-- is easier and this sequence is usually preferred. */
-- seq2 = try_emit_cmove_seq (if_info, target, cond,
-- new_val, old_val, need_cmov,
-- &cost2, &temp_dest2, cc_cmp, rev_cc_cmp);
--
-- /* Check which version is less expensive. */
-- if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX))
-- {
-- seq = seq1;
-- temp_dest = temp_dest1;
-- if (!second_try)
-- *last_needs_comparison = count;
-- }
-- else if (seq2 != NULL_RTX)
-- {
-- seq = seq2;
-- temp_dest = temp_dest2;
-- }
-- else
-+ /* If we failed to expand the conditional move, drop out and don't
-+ try to continue. */
-+ if (temp_dest == NULL_RTX)
- {
-- /* Nothing worked, bail out. */
- end_sequence ();
- return FALSE;
- }
-
-- /* End the sub sequence and emit to the main sequence. */
-- emit_insn (seq);
--
- /* Bookkeeping. */
- count++;
-- targets->safe_push (target);
-- temporaries->safe_push (temp_dest);
-- unmodified_insns->safe_push (insn);
-+ targets.safe_push (target);
-+ temporaries.safe_push (temp_dest);
-+ unmodified_insns.safe_push (insn);
- }
-
-- return true;
--}
-+ /* We must have seen some sort of insn to insert, otherwise we were
-+ given an empty BB to convert, and we can't handle that. */
-+ gcc_assert (!unmodified_insns.is_empty ());
-+
-+ /* Now fixup the assignments. */
-+ for (int i = 0; i < count; i++)
-+ noce_emit_move_insn (targets[i], temporaries[i]);
-+
-+ /* Actually emit the sequence if it isn't too expensive. */
-+ rtx_insn *seq = get_insns ();
-+
-+ if (!targetm.noce_conversion_profitable_p (seq, if_info))
-+ {
-+ end_sequence ();
-+ return FALSE;
-+ }
-+
-+ for (insn = seq; insn; insn = NEXT_INSN (insn))
-+ set_used_flags (insn);
-+
-+ /* Mark all our temporaries and targets as used. */
-+ for (int i = 0; i < count; i++)
-+ {
-+ set_used_flags (temporaries[i]);
-+ set_used_flags (targets[i]);
-+ }
-
-+ set_used_flags (cond);
-+ set_used_flags (x);
-+ set_used_flags (y);
-
-+ unshare_all_rtl_in_chain (seq);
-+ end_sequence ();
-+
-+ if (!seq)
-+ return FALSE;
-+
-+ for (insn = seq; insn; insn = NEXT_INSN (insn))
-+ if (JUMP_P (insn)
-+ || recog_memoized (insn) == -1)
-+ return FALSE;
-+
-+ emit_insn_before_setloc (seq, if_info->jump,
-+ INSN_LOCATION (unmodified_insns.last ()));
-+
-+ /* Clean up THEN_BB and the edges in and out of it. */
-+ remove_edge (find_edge (test_bb, join_bb));
-+ remove_edge (find_edge (then_bb, join_bb));
-+ redirect_edge_and_branch_force (single_succ_edge (test_bb), join_bb);
-+ delete_basic_block (then_bb);
-+ num_true_changes++;
-+
-+ /* Maybe merge blocks now the jump is simple enough. */
-+ if (can_merge_blocks_p (test_bb, join_bb))
-+ {
-+ merge_blocks (test_bb, join_bb);
-+ num_true_changes++;
-+ }
-+
-+ num_updated_if_blocks++;
-+ if_info->transform_name = "noce_convert_multiple_sets";
-+ return TRUE;
-+}
-
- /* Return true iff basic block TEST_BB is comprised of only
- (SET (REG) (REG)) insns suitable for conversion to a series
- of conditional moves. Also check that we have more than one set
- (other routines can handle a single set better than we would), and
-- fewer than PARAM_MAX_RTL_IF_CONVERSION_INSNS sets. While going
-- through the insns store the sum of their potential costs in COST. */
-+ fewer than PARAM_MAX_RTL_IF_CONVERSION_INSNS sets. */
-
- static bool
--bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost)
-+bb_ok_for_noce_convert_multiple_sets (basic_block test_bb)
- {
- rtx_insn *insn;
- unsigned count = 0;
- unsigned param = param_max_rtl_if_conversion_insns;
-- bool speed_p = optimize_bb_for_speed_p (test_bb);
-- unsigned potential_cost = 0;
-
- FOR_BB_INSNS (test_bb, insn)
- {
-@@ -3600,9 +3398,9 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost)
- if (!REG_P (dest))
- return false;
-
-- if (!((REG_P (src) || CONSTANT_P (src))
-- || (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src))
-- && subreg_lowpart_p (src))))
-+ if (!(REG_P (src)
-+ || (GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src))
-+ && subreg_lowpart_p (src))))
- return false;
-
- /* Destination must be appropriate for a conditional write. */
-@@ -3613,13 +3411,9 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, unsigned *cost)
- if (!can_conditionally_move_p (GET_MODE (dest)))
- return false;
-
-- potential_cost += insn_cost (insn, speed_p);
--
- count++;
- }
-
-- *cost += potential_cost;
--
- /* If we would only put out one conditional move, the other strategies
- this pass tries are better optimized and will be more appropriate.
- Some targets want to strictly limit the number of conditional moves
-@@ -3667,24 +3461,11 @@ noce_process_if_block (struct noce_if_info *if_info)
- to calculate a value for x.
- ??? For future expansion, further expand the "multiple X" rules. */
-
-- /* First look for multiple SETS. The original costs already include
-- a base cost of COSTS_N_INSNS (2): one instruction for the compare
-- (which we will be needing either way) and one instruction for the
-- branch. When comparing costs we want to use the branch instruction
-- cost and the sets vs. the cmovs generated here. Therefore subtract
-- the costs of the compare before checking.
-- ??? Actually, instead of the branch instruction costs we might want
-- to use COSTS_N_INSNS (BRANCH_COST ()) as in other places. */
--
-- unsigned potential_cost = if_info->original_cost - COSTS_N_INSNS (1);
-- unsigned old_cost = if_info->original_cost;
-+ /* First look for multiple SETS. */
- if (!else_bb
- && HAVE_conditional_move
-- && bb_ok_for_noce_convert_multiple_sets (then_bb, &potential_cost))
-+ && bb_ok_for_noce_convert_multiple_sets (then_bb))
- {
-- /* Temporarily set the original costs to what we estimated so
-- we can determine if the transformation is worth it. */
-- if_info->original_cost = potential_cost;
- if (noce_convert_multiple_sets (if_info))
- {
- if (dump_file && if_info->transform_name)
-@@ -3692,9 +3473,6 @@ noce_process_if_block (struct noce_if_info *if_info)
- if_info->transform_name);
- return TRUE;
- }
--
-- /* Restore the original costs. */
-- if_info->original_cost = old_cost;
- }
-
- bool speed_p = optimize_bb_for_speed_p (test_bb);
-@@ -4036,89 +3814,6 @@ check_cond_move_block (basic_block bb,
- return TRUE;
- }
-
--/* Find local swap-style idioms in BB and mark the first insn (1)
-- that is only a temporary as not needing a conditional move as
-- it is going to be dead afterwards anyway.
--
-- (1) int tmp = a;
-- a = b;
-- b = tmp;
--
-- ifcvt
-- -->
--
-- tmp = a;
-- a = cond ? b : a_old;
-- b = cond ? tmp : b_old;
--
-- Additionally, store the index of insns like (2) when a subsequent
-- SET reads from their destination.
--
-- (2) int c = a;
-- int d = c;
--
-- ifcvt
-- -->
--
-- c = cond ? a : c_old;
-- d = cond ? d : c; // Need to use c rather than c_old here.
--*/
--
--static void
--need_cmov_or_rewire (basic_block bb,
-- hash_set<rtx_insn *> *need_no_cmov,
-- hash_map<rtx_insn *, int> *rewired_src)
--{
-- rtx_insn *insn;
-- int count = 0;
-- auto_vec<rtx_insn *> insns;
-- auto_vec<rtx> dests;
--
-- /* Iterate over all SETs, storing the destinations
-- in DEST.
-- - If we hit a SET that reads from a destination
-- that we have seen before and the corresponding register
-- is dead afterwards, the register does not need to be
-- moved conditionally.
-- - If we encounter a previously changed register,
-- rewire the read to the original source. */
-- FOR_BB_INSNS (bb, insn)
-- {
-- rtx set, src, dest;
--
-- if (!active_insn_p (insn))
-- continue;
--
-- set = single_set (insn);
-- if (set == NULL_RTX)
-- continue;
--
-- src = SET_SRC (set);
-- if (SUBREG_P (src))
-- src = SUBREG_REG (src);
-- dest = SET_DEST (set);
--
-- /* Check if the current SET's source is the same
-- as any previously seen destination.
-- This is quadratic but the number of insns in BB
-- is bounded by PARAM_MAX_RTL_IF_CONVERSION_INSNS. */
-- if (REG_P (src))
-- for (int i = count - 1; i >= 0; --i)
-- if (reg_overlap_mentioned_p (src, dests[i]))
-- {
-- if (find_reg_note (insn, REG_DEAD, src) != NULL_RTX)
-- need_no_cmov->add (insns[i]);
-- else
-- rewired_src->put (insn, i);
-- }
--
-- insns.safe_push (insn);
-- dests.safe_push (dest);
--
-- count++;
-- }
--}
--
- /* Given a basic block BB suitable for conditional move conversion,
- a condition COND, and pointer maps THEN_VALS and ELSE_VALS containing
- the register values depending on COND, emit the insns in the block as
---- gcc/optabs.cc
-+++ gcc/optabs.cc
-@@ -52,8 +52,6 @@ static void prepare_float_lib_cmp (rtx, rtx, enum rtx_code, rtx *,
- static rtx expand_unop_direct (machine_mode, optab, rtx, rtx, int);
- static void emit_libcall_block_1 (rtx_insn *, rtx, rtx, rtx, bool);
-
--static rtx emit_conditional_move_1 (rtx, rtx, rtx, rtx, machine_mode);
--
- /* Debug facility for use in GDB. */
- void debug_optab_libfuncs (void);
-
-@@ -626,13 +624,12 @@ expand_doubleword_shift_condmove (scalar_int_mode op1_mode, optab binoptab,
-
- /* Select between them. Do the INTO half first because INTO_SUPERWORD
- might be the current value of OUTOF_TARGET. */
-- if (!emit_conditional_move (into_target, { cmp_code, cmp1, cmp2, op1_mode },
-+ if (!emit_conditional_move (into_target, cmp_code, cmp1, cmp2, op1_mode,
- into_target, into_superword, word_mode, false))
- return false;
-
- if (outof_target != 0)
-- if (!emit_conditional_move (outof_target,
-- { cmp_code, cmp1, cmp2, op1_mode },
-+ if (!emit_conditional_move (outof_target, cmp_code, cmp1, cmp2, op1_mode,
- outof_target, outof_superword,
- word_mode, false))
- return false;
-@@ -4854,8 +4851,8 @@ emit_indirect_jump (rtx loc)
- is not supported. */
-
- rtx
--emit_conditional_move (rtx target, struct rtx_comparison comp,
-- rtx op2, rtx op3,
-+emit_conditional_move (rtx target, enum rtx_code code, rtx op0, rtx op1,
-+ machine_mode cmode, rtx op2, rtx op3,
- machine_mode mode, int unsignedp)
- {
- rtx comparison;
-@@ -4877,33 +4874,31 @@ emit_conditional_move (rtx target, struct rtx_comparison comp,
- /* If one operand is constant, make it the second one. Only do this
- if the other operand is not constant as well. */
-
-- if (swap_commutative_operands_p (comp.op0, comp.op1))
-+ if (swap_commutative_operands_p (op0, op1))
- {
-- std::swap (comp.op0, comp.op1);
-- comp.code = swap_condition (comp.code);
-+ std::swap (op0, op1);
-+ code = swap_condition (code);
- }
-
- /* get_condition will prefer to generate LT and GT even if the old
- comparison was against zero, so undo that canonicalization here since
- comparisons against zero are cheaper. */
-+ if (code == LT && op1 == const1_rtx)
-+ code = LE, op1 = const0_rtx;
-+ else if (code == GT && op1 == constm1_rtx)
-+ code = GE, op1 = const0_rtx;
-
-- if (comp.code == LT && comp.op1 == const1_rtx)
-- comp.code = LE, comp.op1 = const0_rtx;
-- else if (comp.code == GT && comp.op1 == constm1_rtx)
-- comp.code = GE, comp.op1 = const0_rtx;
--
-- if (comp.mode == VOIDmode)
-- comp.mode = GET_MODE (comp.op0);
-+ if (cmode == VOIDmode)
-+ cmode = GET_MODE (op0);
-
-- enum rtx_code orig_code = comp.code;
-+ enum rtx_code orig_code = code;
- bool swapped = false;
- if (swap_commutative_operands_p (op2, op3)
-- && ((reversed =
-- reversed_comparison_code_parts (comp.code, comp.op0, comp.op1, NULL))
-- != UNKNOWN))
-+ && ((reversed = reversed_comparison_code_parts (code, op0, op1, NULL))
-+ != UNKNOWN))
- {
- std::swap (op2, op3);
-- comp.code = reversed;
-+ code = reversed;
- swapped = true;
- }
-
-@@ -4920,10 +4915,8 @@ emit_conditional_move (rtx target, struct rtx_comparison comp,
-
- for (int pass = 0; ; pass++)
- {
-- comp.code = unsignedp ? unsigned_condition (comp.code) : comp.code;
-- comparison =
-- simplify_gen_relational (comp.code, VOIDmode,
-- comp.mode, comp.op0, comp.op1);
-+ code = unsignedp ? unsigned_condition (code) : code;
-+ comparison = simplify_gen_relational (code, VOIDmode, cmode, op0, op1);
-
- /* We can get const0_rtx or const_true_rtx in some circumstances. Just
- punt and let the caller figure out how best to deal with this
-@@ -4934,16 +4927,24 @@ emit_conditional_move (rtx target, struct rtx_comparison comp,
- save_pending_stack_adjust (&save);
- last = get_last_insn ();
- do_pending_stack_adjust ();
-- machine_mode cmpmode = comp.mode;
-+ machine_mode cmpmode = cmode;
- prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1),
- GET_CODE (comparison), NULL_RTX, unsignedp,
- OPTAB_WIDEN, &comparison, &cmpmode);
- if (comparison)
- {
-- rtx res = emit_conditional_move_1 (target, comparison,
-- op2, op3, mode);
-- if (res != NULL_RTX)
-- return res;
-+ class expand_operand ops[4];
-+
-+ create_output_operand (&ops[0], target, mode);
-+ create_fixed_operand (&ops[1], comparison);
-+ create_input_operand (&ops[2], op2, mode);
-+ create_input_operand (&ops[3], op3, mode);
-+ if (maybe_expand_insn (icode, 4, ops))
-+ {
-+ if (ops[0].value != target)
-+ convert_move (target, ops[0].value, false);
-+ return target;
-+ }
- }
- delete_insns_since (last);
- restore_pending_stack_adjust (&save);
-@@ -4955,88 +4956,17 @@ emit_conditional_move (rtx target, struct rtx_comparison comp,
- /* If the preferred op2/op3 order is not usable, retry with other
- operand order, perhaps it will expand successfully. */
- if (swapped)
-- comp.code = orig_code;
-- else if ((reversed =
-- reversed_comparison_code_parts (orig_code, comp.op0, comp.op1,
-+ code = orig_code;
-+ else if ((reversed = reversed_comparison_code_parts (orig_code, op0, op1,
- NULL))
- != UNKNOWN)
-- comp.code = reversed;
-+ code = reversed;
- else
- return NULL_RTX;
- std::swap (op2, op3);
- }
- }
-
--/* Helper function that, in addition to COMPARISON, also tries
-- the reversed REV_COMPARISON with swapped OP2 and OP3. As opposed
-- to when we pass the specific constituents of a comparison, no
-- additional insns are emitted for it. It might still be necessary
-- to emit more than one insn for the final conditional move, though. */
--
--rtx
--emit_conditional_move (rtx target, rtx comparison, rtx rev_comparison,
-- rtx op2, rtx op3, machine_mode mode)
--{
-- rtx res = emit_conditional_move_1 (target, comparison, op2, op3, mode);
--
-- if (res != NULL_RTX)
-- return res;
--
-- return emit_conditional_move_1 (target, rev_comparison, op3, op2, mode);
--}
--
--/* Helper for emitting a conditional move. */
--
--static rtx
--emit_conditional_move_1 (rtx target, rtx comparison,
-- rtx op2, rtx op3, machine_mode mode)
--{
-- enum insn_code icode;
--
-- if (comparison == NULL_RTX || !COMPARISON_P (comparison))
-- return NULL_RTX;
--
-- /* If the two source operands are identical, that's just a move.
-- As the comparison comes in non-canonicalized, we must make
-- sure not to discard any possible side effects. If there are
-- side effects, just let the target handle it. */
-- if (!side_effects_p (comparison) && rtx_equal_p (op2, op3))
-- {
-- if (!target)
-- target = gen_reg_rtx (mode);
--
-- emit_move_insn (target, op3);
-- return target;
-- }
--
-- if (mode == VOIDmode)
-- mode = GET_MODE (op2);
--
-- icode = direct_optab_handler (movcc_optab, mode);
--
-- if (icode == CODE_FOR_nothing)
-- return NULL_RTX;
--
-- if (!target)
-- target = gen_reg_rtx (mode);
--
-- class expand_operand ops[4];
--
-- create_output_operand (&ops[0], target, mode);
-- create_fixed_operand (&ops[1], comparison);
-- create_input_operand (&ops[2], op2, mode);
-- create_input_operand (&ops[3], op3, mode);
--
-- if (maybe_expand_insn (icode, 4, ops))
-- {
-- if (ops[0].value != target)
-- convert_move (target, ops[0].value, false);
-- return target;
-- }
--
-- return NULL_RTX;
--}
--
-
- /* Emit a conditional negate or bitwise complement using the
- negcc or notcc optabs if available. Return NULL_RTX if such operations
---- gcc/optabs.h
-+++ gcc/optabs.h
-@@ -279,8 +279,8 @@ extern void emit_indirect_jump (rtx);
- #endif
-
- /* Emit a conditional move operation. */
--rtx emit_conditional_move (rtx, rtx_comparison, rtx, rtx, machine_mode, int);
--rtx emit_conditional_move (rtx, rtx, rtx, rtx, rtx, machine_mode);
-+rtx emit_conditional_move (rtx, enum rtx_code, rtx, rtx, machine_mode,
-+ rtx, rtx, machine_mode, int);
-
- /* Emit a conditional negate or bitwise complement operation. */
- rtx emit_conditional_neg_or_complement (rtx, rtx_code, machine_mode, rtx,
---- gcc/rtl.h
-+++ gcc/rtl.h
-@@ -4604,16 +4604,7 @@ word_register_operation_p (const_rtx x)
- return true;
- }
- }
--
--/* Holds an rtx comparison to simplify passing many parameters pertaining to a
-- single comparison. */
--
--struct rtx_comparison {
-- rtx_code code;
-- rtx op0, op1;
-- machine_mode mode;
--};
--
-+
- /* gtype-desc.cc. */
- extern void gt_ggc_mx (rtx &);
- extern void gt_pch_nx (rtx &);
diff --git a/gcc12-pr104253.patch b/gcc12-pr104253.patch
deleted file mode 100644
index 5560524..0000000
--- a/gcc12-pr104253.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-If you are on a PowerPC system where the default long double is IEEE
-128-bit, GCC will use the wrong names for some of the conversion functions
-for the __ibm128 type.
-
-What is happening is when the defult long double is IEEE 128-bit, the
-various convert, truncation, and extend functions did not specify a
-default name for the conversion. The machine indepentent portions of the
-compiler would construct a call with an 'if' name (IFmode being the mode
-for IBM 128-bit floating point). This patch specifies to use the
-tradiational 'tf' name for these conversion functions.
-
-2022-01-28 Michael Meissner <meissner(a)the-meissners.org>
-
-gcc/
- PR target/104253
- * config/rs6000/rs6000.cc (init_float128_ibm): Use the TF names
- for builtin conversions between __ibm128 and DImode when long
- double uses the IEEE 128-bit format.
-
-gcc/testsuite/
- PR target/104253
- * gcc.target/powerpc/pr104253.c: New test.
----
- gcc/config/rs6000/rs6000.cc | 6 +
- gcc/testsuite/gcc.target/powerpc/pr104253.c | 154 ++++++++++++++++++++
- 2 files changed, 160 insertions(+)
- create mode 100644 gcc/testsuite/gcc.target/powerpc/pr104253.c
-
---- gcc/config/rs6000/rs6000.cc
-+++ gcc/config/rs6000/rs6000.cc
-@@ -11113,6 +11113,12 @@ init_float128_ibm (machine_mode mode)
- set_conv_libfunc (trunc_optab, DDmode, mode, "__dpd_trunctfdd");
- set_conv_libfunc (sext_optab, TDmode, mode, "__dpd_extendtftd");
-
-+ set_conv_libfunc (sfix_optab, DImode, mode, "__fixtfdi");
-+ set_conv_libfunc (ufix_optab, DImode, mode, "__fixunstfdi");
-+
-+ set_conv_libfunc (sfloat_optab, mode, DImode, "__floatditf");
-+ set_conv_libfunc (ufloat_optab, mode, DImode, "__floatunditf");
-+
- if (TARGET_POWERPC64)
- {
- set_conv_libfunc (sfix_optab, TImode, mode, "__fixtfti");
---- gcc/testsuite/gcc.target/powerpc/pr104253.c
-+++ gcc/testsuite/gcc.target/powerpc/pr104253.c
-@@ -0,0 +1,154 @@
-+/*
-+ * Require float128 support because __ibm128 currently is not enabled unless we
-+ * also have __float128 support.
-+ */
-+
-+/* { dg-do run } */
-+/* { require-effective-target ppc_float128_sw } */
-+/* { dg-options "-O2 -mvsx -mfloat128" } */
-+
-+/*
-+ * PR target/104253
-+ *
-+ * Verify that the various conversions to and from __ibm128 work. When the
-+ * default for long double is changed to IEEE 128-bit, originally GCC would
-+ * call the functions using an 'if' name instead of 'tf.
-+ */
-+
-+#include <stdlib.h>
-+
-+extern float ibm128_to_sf (__ibm128) __attribute__((noinline));
-+extern double ibm128_to_df (__ibm128) __attribute__((noinline));
-+extern int ibm128_to_si (__ibm128) __attribute__((noinline));
-+extern long long ibm128_to_di (__ibm128) __attribute__((noinline));
-+extern unsigned int ibm128_to_usi (__ibm128) __attribute__((noinline));
-+extern unsigned long long ibm128_to_udi (__ibm128) __attribute__((noinline));
-+
-+extern __ibm128 sf_to_ibm128 (float) __attribute__((noinline));
-+extern __ibm128 df_to_ibm128 (double) __attribute__((noinline));
-+extern __ibm128 si_to_ibm128 (int) __attribute__((noinline));
-+extern __ibm128 di_to_ibm128 (long long) __attribute__((noinline));
-+extern __ibm128 usi_to_ibm128 (unsigned int) __attribute__((noinline));
-+extern __ibm128 udi_to_ibm128 (unsigned long long) __attribute__((noinline));
-+
-+float
-+ibm128_to_sf (__ibm128 x)
-+{
-+ return x;
-+}
-+
-+double
-+ibm128_to_df (__ibm128 x)
-+{
-+ return x;
-+}
-+
-+int
-+ibm128_to_si (__ibm128 x)
-+{
-+ return x;
-+}
-+
-+long long
-+ibm128_to_di (__ibm128 x)
-+{
-+ return x;
-+}
-+
-+unsigned int
-+ibm128_to_usi (__ibm128 x)
-+{
-+ return x;
-+}
-+
-+unsigned long long
-+ibm128_to_udi (__ibm128 x)
-+{
-+ return x;
-+}
-+
-+__ibm128
-+sf_to_ibm128 (float x)
-+{
-+ return x;
-+}
-+
-+__ibm128
-+df_to_ibm128 (double x)
-+{
-+ return x;
-+}
-+
-+__ibm128
-+si_to_ibm128 (int x)
-+{
-+ return x;
-+}
-+
-+__ibm128
-+di_to_ibm128 (long long x)
-+{
-+ return x;
-+}
-+
-+__ibm128
-+usi_to_ibm128 (unsigned int x)
-+{
-+ return x;
-+}
-+
-+__ibm128
-+udi_to_ibm128 (unsigned long long x)
-+{
-+ return x;
-+}
-+
-+volatile float seven_sf = 7.0f;
-+volatile double seven_df = 7.0;
-+volatile int seven_si = 7;
-+volatile long long seven_di = 7LL;
-+volatile unsigned int seven_usi = 7U;
-+volatile unsigned long long seven_udi = 7ULL;
-+volatile __ibm128 seven_ibm128 = 7.0;
-+
-+int
-+main (void)
-+{
-+ if (seven_ibm128 != sf_to_ibm128 (seven_sf))
-+ abort ();
-+
-+ if (seven_ibm128 != df_to_ibm128 (seven_df))
-+ abort ();
-+
-+ if (seven_ibm128 != si_to_ibm128 (seven_si))
-+ abort ();
-+
-+ if (seven_ibm128 != di_to_ibm128 (seven_di))
-+ abort ();
-+
-+ if (seven_ibm128 != usi_to_ibm128 (seven_usi))
-+ abort ();
-+
-+ if (seven_ibm128 != udi_to_ibm128 (seven_udi))
-+ abort ();
-+
-+ if (seven_sf != ibm128_to_sf (seven_ibm128))
-+ abort ();
-+
-+ if (seven_df != ibm128_to_df (seven_ibm128))
-+ abort ();
-+
-+ if (seven_si != ibm128_to_si (seven_ibm128))
-+ abort ();
-+
-+ if (seven_di != ibm128_to_di (seven_ibm128))
-+ abort ();
-+
-+ if (seven_usi != ibm128_to_usi (seven_ibm128))
-+ abort ();
-+
-+ if (seven_udi != ibm128_to_udi (seven_ibm128))
-+ abort ();
-+
-+ return 0;
-+}
diff --git a/sources b/sources
index 1819cf3..87303d0 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-SHA512 (gcc-12.0.1-20220214.tar.xz) = a6f590b9facf2c80ec73d41ccd5bcd404722b76f7ff06d82f30b8b956349df4efa049b72285be1a76da52e851ef327b8fe42d05ea7e62149b2a4236611a8355f
+SHA512 (gcc-12.0.1-20220222.tar.xz) = 70426bab483df8ddcc58f80f709c087cb3c9e4992ddb910dc55986fbf8a0aa4067f401e3c2fad1e7a5d7832e18d3f24316ccd7a18db6601059a4b46325c6a899
SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7
https://src.fedoraproject.org/rpms/gcc/c/b0dddd2d05f29e68631c9155f3eee6a9...
2Â years, 3Â months