[Bug c++/39115] New: [4.3 Regression] Value of variable is not read again
[The bug has been reported to the Debian BTS before: http://bugs.debian.org/491137] On s390, when using -O2, the attached code fails to throw an exception, apparently because it does not re-evaluate the value of a variable. If the variable is marked volatile, the code works as expected. Best, Michael -- Summary: [4.3 Regression] Value of variable is not read again Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mt at debian dot org GCC build triplet: s390-unknown-linux-gnu GCC host triplet: s390-unknown-linux-gnu GCC target triplet: s390-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39115
[Bug target/39115] [4.3 Regression] Value of variable is not read again
--- Comment #1 from mt at debian dot org 2009-02-05 23:01 --- Created an attachment (id=17255) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17255&action=view) Not fully preprocessed source (includes ), compile with -DVOLATILE to see the correct behaviour -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39115
[Bug target/39115] [4.3 Regression] Value of variable is not read again
--- Comment #2 from mt at debian dot org 2009-02-05 23:02 --- Created an attachment (id=17256) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17256&action=view) Fully preprocessed source, compile with -O2 to see wrong behaviour -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39115
[Bug target/39115] [4.3 Regression] Value of variable is not read again
--- Comment #3 from mt at debian dot org 2009-02-05 23:04 --- I should have added that this worked fine on 4.2 and was broken as of 4.3.1 at least, earlier versions (> 4.2) untested. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39115
[Bug c++/8966] [Alpha OSF5.1] Lost exceptions across library boundaries
--- Comment #8 from mt at debian dot org 2009-02-24 19:59 --- It seems that this bug still applies as of g++-4.3, at least with optimizations turned on. We're seeing this as we run the test suite of PPL (see, e.g., https://buildd.debian.org/fetch.cgi?pkg=ppl&arch=alpha&ver=0.10-4&stamp=1235334555&file=log&as=raw). The code even has catch (...), but exceptions still propagate to the top. Reproducible at any time, but I'm afraid we don't have small examples here either. Best, Michael -- mt at debian dot org changed: What|Removed |Added CC| |mt at debian dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8966
[Bug target/39115] [4.3 Regression] Value of variable is not read again
--- Comment #5 from mt at debian dot org 2009-03-16 08:27 --- Indeed, seems to be fixed in 4.4.0 (tested using Debian's gcc-snapshot, g++ (Debian 20090224-1) 4.4.0 20090224 (experimental)). Sorry for not testing using a fresh build from 4.4 sources, but I hope that is helpful nevertheless. Best, Michael -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39115
[Bug target/61249] New: _mm_frcz_ss, _mm_frcz_sd: __builtin_ia32_vfrczss, __builtin_ia32_vfrczsd require 2 arguments
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61249 Bug ID: 61249 Summary: _mm_frcz_ss, _mm_frcz_sd: __builtin_ia32_vfrczss, __builtin_ia32_vfrczsd require 2 arguments Product: gcc Version: 4.8.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: mt at debian dot org Looking at https://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html on the one hand and AMD's "AMD64 Architecture Programmer’s Manual Volume 6: 128-Bit and 256-Bit XOP and FMA4 Instructions" on the other hand, vfrczss/vfrczsd require a second argument to specify the destination. Yet r205495 changed _mm_frcz_ss/_mm_frcz_sd so that only a single argument is passed to the __builtin_ia32_vfrczss/vfrczsd calls. This was detected at language level (inconsistent types), I can only speculate that this may cause invalid code to be generated (or null operands). Best, Michael PS.: The problem persists in the 4.9 branch as xopintrin.h hasn't been touched since 4.8.
[Bug target/61249] _mm_frcz_ss, _mm_frcz_sd: __builtin_ia32_vfrczss, __builtin_ia32_vfrczsd require 2 arguments
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61249 --- Comment #2 from Michael Tautschnig --- Thanks a lot for your quick reply. > > Yet r205495 changed _mm_frcz_ss/_mm_frcz_sd so that only a single argument > > is passed to the __builtin_ia32_vfrczss/vfrczsd calls. > You should not use __builtin_* function directly. They are internal > implementation details, published interface is in relevant *.h files. Yes, sure. It would still be nice if they were well typed. > > This was detected at language level (inconsistent types), I can only > > speculate that this may cause invalid code to be generated (or null > > operands). > Did you see the runtime tests in the referred commit? Just re-ran those tests and looking at the generated assembly (should have done that before, my apologies) it seems that two operands are generated: vfrczsd %xmm1, %xmm0 and vfrczss %xmm1, %xmm1 So shall I read this as an imprecision in documentation? Best, Michael
[Bug target/61249] _mm_frcz_ss, _mm_frcz_sd: __builtin_ia32_vfrczss, __builtin_ia32_vfrczsd require 2 arguments
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61249 --- Comment #5 from Michael Tautschnig --- Created attachment 32843 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32843&action=edit Update documentation
[Bug target/61249] _mm_frcz_ss, _mm_frcz_sd: __builtin_ia32_vfrczss, __builtin_ia32_vfrczsd require 2 arguments
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61249 Michael Tautschnig changed: What|Removed |Added Attachment #32843|0 |1 is obsolete|| --- Comment #7 from Michael Tautschnig --- Created attachment 32853 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32853&action=edit Update documentation, incl mpsadbw256
[Bug target/61249] _mm_frcz_ss, _mm_frcz_sd: __builtin_ia32_vfrczss, __builtin_ia32_vfrczsd require 2 arguments
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61249 --- Comment #8 from Michael Tautschnig --- I've just updated the patch to include a similar amendment for the __builtin_ia32_mpsadbw256 function. I'll do as suggested and will post to gcc-patches. Best, Michael
[Bug c++/8966] [Alpha OSF5.1] Lost exceptions across library boundaries
--- Comment #10 from mt at debian dot org 2010-09-09 06:23 --- I have tried to reproduce the problem with g++ 4.5 and couldn't make it fail anymore. The problem, however, is that I couldn't make it fail with g++ 4.4 either. Whatever the essential change might have been, the PPL instance of this problem seems to be fixed. Best, Michael -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8966