Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
Target: x86_64-*-*
On a modern x86_64, multiplications are super fast and divisions are much
slower, so as soon as we have 2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86763
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57112
Marc Glisse changed:
What|Removed |Added
Status|NEW |RESOLVED
Known to work|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86732
--- Comment #4 from Marc Glisse ---
(In reply to Richard Biener from comment #3)
> note how it doesn't eliminate the actual load which probably causes the
> odd code-generation.
The code says:
/* We want the NULL pointer dereference to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86732
--- Comment #2 from Marc Glisse ---
While I would also like to see this optimized better, ISTR that this was done
on purpose, you may want to look at the old discussions. Some languages may
have things set up to catch null dereferences, but that
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86729
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|---
rmal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
Target: x86_64-*-*
(could be rtl-optimization or target)
void f(double*d,double*e){
for(;d
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86710
--- Comment #1 from Marc Glisse ---
This kind of transformation needs to be protected by some unsafe math flag, and
by a single_use (aka :s) check on the logs. No :c in the output. The third
transformation has nothing to do with logs, you are
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86701
--- Comment #1 from Marc Glisse ---
Aren't you allowed to have null characters in the middle of a std::string?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86628
--- Comment #5 from Marc Glisse ---
(In reply to Richard Biener from comment #4)
> Yeah, generally we can't associate because (x*y)*z may not overflow because
> x == 0 but x*(y*z) may because y*z overflows.
We can do it
- in the wrapping case
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86628
--- Comment #3 from Marc Glisse ---
We already simplify some simple cases like x*t/t -> x in match.pd. Larger cases
are for a pass like reassoc. In this particular case, we could also imagine
somehow noticing that (x*y)*z is better reassociated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86590
--- Comment #5 from Marc Glisse ---
-finline-limit=80 or higher (or more precisely --param
max-inline-insns-auto=40) lets it optimize.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86573
--- Comment #7 from Marc Glisse ---
The real difference in -std=c++17 is _GLIBCXX_EXTERN_TEMPLATE. With -std=c++14,
we have many extern templates which the compiler almost never inlines. This
leaves existing inline functions small enough to be
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86573
--- Comment #2 from Marc Glisse ---
When passing by copy, gcc seems to manage with default flags, but your
-std=c++2a -fno-exceptions hinder it somehow.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86573
--- Comment #1 from Marc Glisse ---
Try renaming 'main' to any other name and gcc does optimize...
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86557
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86471
--- Comment #9 from Marc Glisse ---
(In reply to Andrew Pinski from comment #7)
> This is incorrect for floating point types
Because of negative 0 I assume.
> And it introduces an extra check at runtime if value is not known to compile
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86471
--- Comment #4 from Marc Glisse ---
There have been questions before about enabling (parts of) ldist at -O2.
(In reply to Matt Bentley from comment #3)
> I thought I should note that there is also a missing optimization
> opportunity in the
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86477
--- Comment #2 from Marc Glisse ---
We don't have attribute ext_vector_type (we have vector_size). Gcc warns about
it.
We don't allow constructing a vector from a scalar (broadcasting).
What Andrew says.
If I fix everything, binding a reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86420
--- Comment #1 from Marc Glisse ---
(In reply to nsz from comment #0)
> gcc has no flag to say 'floating-point exceptions matter' (like
> -frounding-math for non-default rounding mode)
There is -ftrapping-math (on by default), although its
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86347
Marc Glisse changed:
What|Removed |Added
See Also||https://gcc.gnu.org/bugzill
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86259
--- Comment #15 from Marc Glisse ---
(In reply to Martin Sebor from comment #14)
> > You say that
> >
> > struct { int a; int b; } s, s2;
> > memcpy (, , sizeof (s));
> >
> > is invalid, aka not copying the whole structure since you pass in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86284
--- Comment #1 from Marc Glisse ---
-fsanitize=return ?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86270
--- Comment #2 from Marc Glisse ---
:-(
So many transforms seem to have this kind of drawback...
We could always add a pair of single_use checks, but we are going to miss some
optimizations if we do that. Maybe it is slightly relevant that one
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86173
--- Comment #4 from Marc Glisse ---
Recent related commits: r261758 r261735 (they don't fix the issue).
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86187
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85867
Marc Glisse changed:
What|Removed |Added
CC||zhonghao at pku dot org.cn
--- Comment #3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86173
--- Comment #1 from Marc Glisse ---
Note that constructing optional from std::nullopt does avoid the memset.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80335
Marc Glisse changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
Default construction of std::optional always starts with a memset of the
whole optional to 0, while it doesn't with clang using
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86122
--- Comment #5 from Marc Glisse ---
(In reply to Jakub Jelinek from comment #2)
> if we want unsigned_type_for to support complex integer types or not.
I think we do (seems super easy). Testing utype can't hurt indeed.
(In reply to Jakub
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
extern char*volatile i;
int f(){return i-i;}
gets simplified in C as 1 load and return 0. In C++ or if i has a non-pointer
type (say int), we do have 2 loads
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86092
--- Comment #4 from Marc Glisse ---
(In reply to Srinivas Achary from comment #2)
> Is there any possibility to make this code work,
Remove the 'const', or add 'volatile'.
> without changing the variable attribute.
-O0
> GCC-4 has no issue
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86024
--- Comment #2 from Marc Glisse ---
(In reply to Richard Biener from comment #1)
> Or we may want to un-"SRA" such patterns, generating aggregate copies.
I notice that store-merging does not merge these stores, I didn't check why.
SLP can do it
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86062
--- Comment #4 from Marc Glisse ---
Thanks!
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
#include
struct I { double i,s; I(double d):i(d),s(d){} };
typedef std::array P;
typedef std::array AP;
static AP c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86050
Marc Glisse changed:
What|Removed |Added
Keywords||missed-optimization
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
typedef struct A { int a, b; } A;
void*f(A*restrict p){
A*q=__builtin_malloc(1024*sizeof(A));
for(int i=0;i<1
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
While we cannot make std::pair or std::tuple trivial for now for ABI reasons,
it should still be safe to use memcpy-type
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86013
--- Comment #5 from Marc Glisse ---
(In reply to Jan Kratochvil from comment #0)
> Maybe it could even always call realloc() for size reduction of any type of
> objects and just assert the returned pointer did not change.
I can't find anywhere
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85992
--- Comment #3 from Marc Glisse ---
(In reply to Matt Peddie from comment #2)
> Is there a way to disable this behavior?
-fno-builtin (or a more specific -fno-builtin-atanf) tells gcc to handle atanf
as a regular function call, not as a
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85974
--- Comment #1 from Marc Glisse ---
In match.pd
(simplify
- (pointer_diff (convert?@2 @0) (convert?@3 ADDR_EXPR@1))
+ (pointer_diff (convert?@2 @0) (convert1?@3 ADDR_EXPR@1))
(that is, we can have only one cast, not just 0 or 2)
and
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85929
--- Comment #4 from Marc Glisse ---
(In reply to Richard Biener from comment #2)
> So somehow we need to enhance the code in VRP that registers additional
> asserts to also handle symbolic ranges and thus register not only
> i_4 < count_8 but
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85929
--- Comment #1 from Marc Glisse ---
With size_type = unsigned long, the bounds check turns out to be exactly the
same test as the loop exit check, and FRE3 gets rid of it.
With size_type = unsigned int, it is harder. We have roughly
long int
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85850
--- Comment #1 from Marc Glisse ---
In libcpp/system.h, is included too late, after messing with macros, it
should move earlier with the other includes. We could probably also avoid
#defining true/false in C++ (just a warning).
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
Marc Glisse changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #24 from Marc Glisse ---
Author: glisse
Date: Fri May 18 22:21:20 2018
New Revision: 260383
URL: https://gcc.gnu.org/viewcvs?rev=260383=gcc=rev
Log:
Aliasing 'this' in a C++ constructor
2018-05-18 Marc Glisse
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85827
--- Comment #2 from Marc Glisse ---
I think that's going to be hard. The same issue always existed with macros. The
whole point of "if constexpr" is not to look at the other branches, as they may
not even compile. Sure, some minimal "safe"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63185
--- Comment #12 from Marc Glisse ---
(In reply to Richard Biener from comment #11)
> I guess you meant (notice the bogus memset size above):
True. And while it shouldn't make a difference in checking if the stores to c
are dead, it could (but
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85822
--- Comment #1 from Marc Glisse ---
_2 = x.0_1 & -281474976710656;
if (_2 == -281474976710656)
goto ; [20.24%]
[...]
x.0_11 = ASSERT_EXPR ;
x.0_12 = ASSERT_EXPR
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63185
--- Comment #7 from Marc Glisse ---
This PR is messy. To sum up, comment #0 was recently fixed, comment #5 is not
(not noticing that the writes in the loop are dead), and comment #6 asks for
increasing the alignment of VLAs the same way we
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85811
--- Comment #6 from Marc Glisse ---
What does tree_expr_nonnegative_p call non-negative? A natural definition would
exclude NaN, but for REAL_CST we just return ! REAL_VALUE_NEGATIVE.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85811
--- Comment #1 from Marc Glisse ---
tree_binary_nonnegative_warnv_p for RDIV_EXPR does RECURSE (op0) && RECURSE
(op1), but that doesn't work so well when the denominator can be 0. I guess it
is still ok when finite-math-only (or no-nans and
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85791
--- Comment #4 from Marc Glisse ---
(In reply to Ruslan Nikolaev from comment #0)
> 2. unsigned long long func(unsigned long long a, unsigned long long b)
> {
> __uint128_t c = (__uint128_t) a * b;
> if (c > (unsigned long long)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #22 from Marc Glisse ---
(In reply to rguent...@suse.de from comment #21)
> Note that in the strict C semantic thing __restrict on
> this isn't valid as the following is valid C++:
>
> Foo() __restrict
> {
> Foo *x = this;
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85758
--- Comment #1 from Marc Glisse ---
Direct translation would be (from clang):
andl%ecx, %edx
addl%edx, %edi
xorl%ecx, %edx
addl%edx, %esi
With -mbmi, I get
andn%ecx, %edx, %eax
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #20 from Marc Glisse ---
Created attachment 44122
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44122=edit
untested middle-end patch
This works on the testcase, I need to add a comment and run it through the
testsuite.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #19 from Marc Glisse ---
(In reply to rguent...@suse.de from comment #18)
> I suppose this changes debug information?
Yes. Probably not so bad, but indeed better if we can avoid it.
> I think adjusting the only user in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85757
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
Marc Glisse changed:
What|Removed |Added
Attachment #44112|0 |1
is obsolete|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #16 from Marc Glisse ---
(patch should use 'fn && DECL_CONSTRUCTOR_P (fn)' since fn can be NULL)
As I was half expecting, messing with the types that directly doesn't work. It
means 'this' has type T*restrict, and if I try for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85746
--- Comment #3 from Marc Glisse ---
(In reply to Jakub Jelinek from comment #2)
> For different versions there is the
> http://gcc.gnu.org/ml/gcc-patches/2018-03/msg00355.html
> patch.
Time to ping that one? ;-)
(I don't have a particular
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85747
--- Comment #5 from Marc Glisse ---
(In reply to Antony Polukhin from comment #4)
> Does providing some kind of -Oon-the-fly switch solves the issue with JIT
> compile times while still allows more optimizations for the traditional non
> JIT
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85747
--- Comment #2 from Marc Glisse ---
(In reply to Antony Polukhin from comment #0)
> Could the compiler detect that `a[7]` holds values known at compile time and
> force the constexpr on `sort(a + 0, a + 7);`?
There has to be a limit. If I write
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80617
--- Comment #12 from Marc Glisse ---
(In reply to Richard Biener from comment #11)
> Dup of PR23094 (and fixed).
Richard, comment #9 shows that the original testcase is only half-fixed (though
the other half seems hard to fix). Does this mean
++
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
int f(int a,int b){
int c = __builtin_constant_p(a < b);
return c;
}
In C or C++98, __builtin_constant_p is passed to the middle-end for further
optimization. In C+
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #15 from Marc Glisse ---
Created attachment 44112
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44112=edit
Untested patch
Something like this, but I haven't tested, and other calls to build_this_parm
need auditing to check if
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80617
--- Comment #9 from Marc Glisse ---
The testcases from comment #6 and comment #7 are now (gcc-8) properly
optimized. The original has lost one of the 2 calls to free, one remains:
__old_val_4 = MEM[(void * &)a_2(D)];
MEM[(void * &)a_2(D)] =
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #14 from Marc Glisse ---
(In reply to Marc Glisse from comment #13)
> I have no idea what was changed in gcc-8 that
> helped the original testcase,
(optimization happens in FRE1)
It could be an optimization that says that either the
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #13 from Marc Glisse ---
Explicitly marking the constructor with __restrict lets it optimize also the
testcase in comment #12. I have no idea what was changed in gcc-8 that helped
the original testcase, but it wasn't equivalent to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82899
--- Comment #10 from Marc Glisse ---
This seems fixed in 8.1 (at least we don't generate the extra mov anymore), can
you check?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85730
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85720
--- Comment #3 from Marc Glisse ---
(In reply to Mathias Stearn from comment #2)
> Hmm. Taking the example from the -ftree-loop-distribute-patterns
> documentation, it still seems to generate poor code, this time at both -O2
> and -O3:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85672
--- Comment #11 from Marc Glisse ---
(In reply to Jonathan Wakely from comment #8)
> My autotools-fu is too weak to come up with anything better but I'd be very
> happy if you can suggest something cleaner.
For the general case, the autoconf
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85680
--- Comment #4 from Marc Glisse ---
All memset come from ldist, so already quite late in the pipeline. Maybe
clang/intel, who avoid a comparison between new and the first memset, generate
memset directly from the front-end? (clang generates the
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85680
--- Comment #1 from Marc Glisse ---
Quite impressive how we do the test in multiple ways, which are not quite
equivalent because of the wrapping semantics of unsigned. Maybe if we asserted
that the argument of operator new must be less than the
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85672
--- Comment #7 from Marc Glisse ---
(In reply to Jonathan Wakely from comment #5)
> > - -Wsystem-headers -Wundef will warn
>
> That's the status quo. It would take a ton of effort to avoid -Wundef
> warnings in libstdc++ and that's not
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85672
--- Comment #4 from Marc Glisse ---
(In reply to Jonathan Wakely from comment #3)
> Yes it woud have been broken by r259813 and this should fix it:
I don't think that's sufficient:
- the same code is present in several files
- -Wsystem-headers
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85672
--- Comment #1 from Marc Glisse ---
I think there is an inconsistency where we #define _GLIBCXX_USE_FLOAT128 0 (can
you check your c++config.h?) to say that it shouldn't be supported, but then
test with #ifdef and not #if.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85143
--- Comment #7 from Marc Glisse ---
Note that the patch still doesn't handle
_1 = n_15(D) <= i_46;
_2 = i_46 > 1336;
_3 = _1 | _2;
because of the mix between strict and large inequalities.
(if I write int m = 1337; and replace i < 1337
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85143
--- Comment #6 from Marc Glisse ---
Author: glisse
Date: Tue May 1 21:41:05 2018
New Revision: 259812
URL: https://gcc.gnu.org/viewcvs?rev=259812=gcc=rev
Log:
Generalize a
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81420
--- Comment #3 from Marc Glisse ---
Created attachment 44050
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44050=edit
untested hackish patch
This seems to help a bit, but it doesn't feel like the right approach.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81420
Marc Glisse changed:
What|Removed |Added
Last reconfirmed|2018-01-08 00:00:00 |2018-5-1
--- Comment #2 from Marc Glisse
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85582
Marc Glisse changed:
What|Removed |Added
Target||x86-*-*
Status|UNCONFIRMED
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84362
Marc Glisse changed:
What|Removed |Added
Status|UNCONFIRMED |NEW
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
Bug 53947 depends on bug 78151, which changed state.
Bug 78151 Summary: Fail to vectorize *min_element
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78151
What|Removed |Added
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78151
Marc Glisse changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85466
--- Comment #21 from Marc Glisse ---
(In reply to Daniel Elliott from comment #20)
> still clang is 1.64x faster. had a look at the assembly. My limited
> understanding makes me think that the ucomiss is not fully vectorized and
> the clang one
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85466
--- Comment #19 from Marc Glisse ---
For the "ifno" case, llvm turns
(item>.5f)?1.:0.
into (cheating on the syntax, we can't do bit_and on float in C)
((item>.5f)?mask:0.) & 1.
where mask is all one bits, and this uses the SSE comparison
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85466
--- Comment #18 from Marc Glisse ---
For the "if" case, llvm turns:
if (myVector[n] > 0.5){
result[n] = 0.8f;
}
else {
result[n] = 0.1f;
}
into
const float tab[2] = { .8f, .1f };
result[n] = tab[item > .5f];
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85466
--- Comment #12 from Marc Glisse ---
Constant folding for nextafter seems like a useful thing to add, whatever we
say about the rest of the testcase.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85466
--- Comment #1 from Marc Glisse ---
Please always include your code in the bug report (this external website
doesn't even seem to have a "download the code" option).
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85459
Marc Glisse changed:
What|Removed |Added
Attachment #43982|0 |1
is obsolete|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85459
--- Comment #2 from Marc Glisse ---
(In reply to Jakub Jelinek from comment #1)
> I think this is a result of many changes.
> E.g. r249885 bumps .s size from 3709 to 4599 bytes, r254724 from 4599 to
> 5768, r255510 from 5772 to 7713. You are
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: glisse at gcc dot gnu.org
Target Milestone: ---
Created attachment 43982
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43982=edit
preprocessed testc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63579
--- Comment #4 from Marc Glisse ---
The following was adopted for C++20
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0840r2.html
ABI description (not merged yet)
https://github.com/itanium-cxx-abi/cxx-abi/pull/50
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85236
--- Comment #5 from Marc Glisse ---
(In reply to bking from comment #4)
> I understand that is a part of SVML, but doesn't that mean using the Intel
> Compiler? Which means not using GCC. Is there not a plan to add it? Or is
> that the intent
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83860
--- Comment #6 from Marc Glisse ---
GMP's expression templates, which are based on libstdc++ valarray, have the
same issue. I tried using values in GMP (
https://gmplib.org/list-archives/gmp-bugs/2014-January/003319.html ). I never
committed it
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85236
--- Comment #2 from Marc Glisse ---
This is part of SVML, not a basic intrinsic.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85162
--- Comment #1 from Marc Glisse ---
If you believe this is incorrect, you should be able to extend the testcase
with an assert somewhere showing that the result is wrong.
For vectors, as documented, comparisons return a vector of 0 (false) and
601 - 700 of 2560 matches
Mail list logo