Assignee: dmalcolm at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
At the moment static analyzer warns about leaked malloc. It would be great if
C++ new expression were also supported.
Example:
void f()
{
char* p = new char;
}
Expected diagnostic
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
At the moment -ffloat-store significantly pessimizes the code generation
regardless of whether -mfpmath=sse -msse2 are used or not:
float f(float a, float b)
{
return a + b;
}
-O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94852
--- Comment #4 from Ivan Sorokin ---
(In reply to Richard Biener from comment #1)
> @item -ffloat-store
> @opindex ffloat-store
> Do not store floating-point variables in registers, and inhibit other
> options that might change whether a floating
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94852
--- Comment #6 from Ivan Sorokin ---
(In reply to Richard Biener from comment #1)
> @item -ffloat-store
> @opindex ffloat-store
> Do not store floating-point variables in registers, and inhibit other
> options that might change whether a floating
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC shows an error on this code:
template
using foo = decltype([] {});
template
using bar = foo;
extern foo a;
extern bar a
IRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider this code:
// https://gcc.godbolt.org/z/3U2TTd
#include
template
void g(T);
template
void f() {}
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91824
--- Comment #7 from Ivan Sorokin ---
(In reply to Jakub Jelinek from comment #6)
> Fixed.
Thank you!
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56936
Bug #: 56936
Summary: gcc don't show error when accessing to current
instantiation
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIR
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56936
--- Comment #4 from Ivan Sorokin 2013-04-13
11:06:35 UTC ---
(In reply to comment #3)
> [temp.res]/8 "If no valid specialization can be generated for a template, and
> that template is not instantiated, the template is ill-formed, no diagn
: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
gcc 4.7.2 crashes on the following code:
struct x
{
operator class {} ();
};
With error message:
13.cpp:3:21: internal compiler error: in
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
On the code below the behavior of clang and gcc differ. Clang accepts this
code, while gcc reject it:
13.cpp: In function 'int main()':
13.cpp:19:21: error: n
: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
[class.derived]p2 says:
"During the lookup for a base class name, non-type names are ignored."
So gcc should compile this program:
++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Created attachment 30763
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30763&action=edit
gcc-crash-on-boost-adaptors-transformed
I tried to use boost::adaptors::transformed and gcc
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44786
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #3
: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
According to [temp.res]p8 this code is invalid, but gcc don't show error on it:
struct x;
template
void f()
{
x x;
}
"If a type use
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Here is the code:
template
struct bool_constant {};
using true_type = bool_constant;
template
constexpr bool is_same_v = false;
template
constexpr bool is_same_v
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Clang 8 optimizes both f() and g() to the same code:
bool f()
{
return __builtin_cpu_supports("popcnt") && __builtin_cpu_supports
: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
gcc -O2 -mpopcnt leaves unnecessary cdqe:
#include
#include
void f(uint64_t& val, __m128i mask)
{
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider the following example (reduced from a real program):
#include
#include
struct big_integer
{
void push_back(uint32_t
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90345
--- Comment #4 from Ivan Sorokin ---
Making points-to analysis aware of SESE regions will definitely help here and
is a nice thing to have.
There is one more option. In my reduced test case the body of 'push_back' is
unavailable, but when it is
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider this code snippet:
struct X
{
X(void* p);
void* p;
};
X f(bool x, void* p)
{
if (x)
return X(p
IRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider the following piece of code:
#include
struct blob
{
void* data;
size_t size;
};
-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Created attachment 40254
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40254&action=edit
gcc-eggs-variant-missing-opt.cpp
I have a piece of co
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78655
--- Comment #3 from Ivan Sorokin ---
(In reply to Richard Biener from comment #1)
> Of course I wonder why the check is here in the first place... Is placement
> new valid for nullptr?
I believe this check here is to allow placement new (std::
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78655
--- Comment #4 from Ivan Sorokin ---
(In reply to Richard Biener from comment #1)
> + if (flag_delete_null_pointer_checks
> + && is_gimple_assign (stmt)
> + && is_gimple_assign (stmt)
Duplicate conjunct.
> + && gimple_assign_rh
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Demangling the name _Z3fooAv32pM causes null pointer dereferencing:
$ valgrind c++filt _Z3fooAv32pM
==11277== Memcheck, a memory error detector
==11277== Copyright (C) 2002-2015, and GNU
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78944
--- Comment #1 from Ivan Sorokin ---
In addition to the reported crash on _Z3fooAv32pM, there are two other seeming
unrelated crashes: _Z1f7729646840 and _Z1fDpDF02s4o.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78944
--- Comment #2 from Ivan Sorokin ---
Another very rare crash discovered by my fuzzer: _Z1fAqu4SmFG1n3_a.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78944
--- Comment #3 from Ivan Sorokin ---
I retested these cases on a more recent version of binutils 2.27. It turned out
that the first three cases are fixed.
The last one still causes a crash. Here is a more simple reprocase:
$ c++filt _Z1fAqu4
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider these two versions of dot_product:
#include
float dot_product(float const* a,
float const* b
++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Created attachment 40955
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40955&action=edit
expr-loc-bug.cpp
Compilation of the attached file expr-loc-bug.cpp gives the followin
y: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC compiles the following code:
int main()
{
int (*);
int (&)[-1];
auto const (&)[3];
}
I believe the code is incorrect as the local variables are unnamed.
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider the following code:
#include
union x
{
std::int64_t a;
std::uint64_t b;
};
void f(x& xx, bool flag, std::int64_t value)
{
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Recently I have discovered that empty arguments are passed differently by gcc
and by clang.
struct empty
{};
void f(empty, empty, empty);
int main()
{
f(empty{}, empty
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
--- Comment #2 from Ivan Sorokin ---
Created attachment 42451
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42451&action=edit
caller.cpp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
--- Comment #3 from Ivan Sorokin ---
Created attachment 42452
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42452&action=edit
empty.h
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
--- Comment #1 from Ivan Sorokin ---
Created attachment 42450
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42450&action=edit
callee.cpp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
--- Comment #4 from Ivan Sorokin ---
Created attachment 42453
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42453&action=edit
build.sh
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
Ivan Sorokin changed:
What|Removed |Added
Attachment #42451|0 |1
is obsolete|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
--- Comment #6 from Ivan Sorokin ---
I added files to reproduce the issue: caller.cpp and callee.cpp are the files
that need to be compiled with different compilers. empty.h is common header.
build.sh is a shell script that compiles and run all f
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82693
Ivan Sorokin changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider the following piece of code:
struct pair
{
private:
void* first;
unsigned second;
};
struct other
{
pair get() const
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC does not eliminate tailcalls in case when an address of any local variable
escapes the function. Consider the following
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77938
--- Comment #1 from Ivan Sorokin ---
The generated code for caller is the following:
caller():
sub rsp, 24
lea rdi, [rsp+12]
callescape(int&)
callcallee()
add rsp, 24
ret
As
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77938
--- Comment #5 from Ivan Sorokin ---
(In reply to Andrew Pinski from comment #4)
> Related (maybe a dup really) to PR 59813.
I agree. The linked bug is just another manifestation of the same issue.
Regarding my question about excessive stack fr
++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider the following code:
void and_1(uint64_t const* a, uint64_t* b, size_t n)
{
for (size_t i = 0; i != n; ++i)
b[i] = a[i] & b[i];
}
GCC 6.2 (-O2, -mtune=has
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78427
--- Comment #1 from Ivan Sorokin ---
I wonder if it is feasible to implement this optimization in GCC.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78427
--- Comment #2 from Ivan Sorokin ---
Created attachment 40086
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40086&action=edit
loop-bench.cpp
I uploaded my test program, so you can reproduce the issue.
: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
The following code leads to error "confused by earlier errors, bailing out":
namespace std
{
template
struct initia
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
GCC 4.8.2
template /* 1 */
struct X
{
};
template
struct X, X > /* 2 */
{
T i;
};
template
struct X...> /* 3 */
{
const int static value = sizeof...(T);
};
template
st
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61341
--- Comment #1 from Ivan Sorokin ---
Reduced case:
template
struct X
{};
template
void foo(X... a);
void test()
{
foo(X(), X());
}
ormal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
template
struct X {
};
int test() {
X x;
}
GCC rejects this code with a message:
3.cpp: In function ‘int test()’:
3.cpp:6:18: error: ‘int()’ is not a valid
: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
The following program takes ages to compile:
template
void demangle_type_rec(F out, FF prepend_suffix)
{
//int class_type = // uncomment to get infinite stream of error messages
: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
I've got internal compiler error on the following code:
template
struct x
{
template
struct y
{
typedef T re
++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
struct baz0
{
int baz1(void bar0, struct bar0 {} bar3);
};
++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
float foo4()
{}
namespace foo4
{
struct bar6
{
friend wchar_t bar1();
};
}
GCC 4.7.3
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
I believe that in the following example "template" keyword is not required as
expression "f()" is not type de
erity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
struct z;
z f() = delete; // should be an error here
As I understand, f is a function definition and return type of fun
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68114
Ivan Sorokin changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|---
: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
GCC shows error on this code:
template
struct x
{
template
struct y;
};
template <>
template
struct x::y
{
typedef U type;
};
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36961
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #7
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC shows error on this code. The code works correctly on clang and MSVC.
template
struct X {
int foo();
};
template
using foo2
normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC accepts this code:
template
struct vector
{};
template
struct z
{};
template <>
template <> // extra
str
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63809
--- Comment #2 from Ivan Sorokin ---
(In reply to Marc Glisse from comment #0)
> g++ fails to warn about the extra parameter list. clang does warn, see
> PR63750.
Why is it a warning? Isn't this code incorrect? I can not find anything in
[temp.e
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Currently GCC doesn't optimize tailcall in the following function:
struct token
{
char const* tok_start;
char const* tok_end;
int tok_type;
uns
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71761
--- Comment #2 from Ivan Sorokin ---
I compared this with clang.
1) typedef int token;
Both GCC and clang optimize this to a single jump.
2) struct token {int a};
clang optimizes this into a single jump. GCC generates:
subq$8, %rsp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68901
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68901
--- Comment #2 from Ivan Sorokin ---
Created attachment 39034
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39034&action=edit
bug-68901.cpp
at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC shows syntax error on this code. Looks like it disambiguates the expression
"(mytype())(args...)" as cstyle-cast although "(args...)" is not a valid
cast-expression.
struct mytype
{
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at
gcc dot
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99418
--- Comment #1 from Ivan Sorokin ---
Here is the reduced example. It doesn't SIGSEGV, but it doesn't report any
sanitizer errors either:
$ g++ -g -fsanitize=bounds 3.cpp
$ cat 3.cpp
#include
void escape(int& a)
{}
void test(size_t n, size_t m
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99418
--- Comment #2 from Ivan Sorokin ---
It looks like this is related to ignore_off_by_one parameter of
ubsan_instrument_bounds.
As can be seen in gimple the problematic .UBSAN_BOUNDS checks against array
size plus 1.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99418
--- Comment #6 from Ivan Sorokin ---
(In reply to Jakub Jelinek from comment #4)
> Asan can't by design detect neither #c0 nor #c1, only ubsan can.
> The reason why ubsan has that off by one stuff is that in C/C++,
> &mas[n - 1][m] is not undefin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99418
--- Comment #7 from Ivan Sorokin ---
(In reply to Martin Liška from comment #3)
> That said, can we close it as resolved?
I'm sorry for not being clear from the beginning. The original report was about
-fsanitize=bounds sanitizer which sometime
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99418
--- Comment #8 from Ivan Sorokin ---
If I understand #c5 correctly the minimal reproducer should be this:
void g(int&);
void f()
{
int a[10];
int& p = a[10]; // (1)
g(a[10]); // (2)
}
Both (1) and (2) are undefined and -fsani
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider this program:
typedef int& ref;
int main()
{
int a;
ref{a};
}
This is accepted by clang,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94355
--- Comment #6 from Ivan Sorokin ---
I played with -fanalyzer on godbolt (GCC trunk). I noticed that -fanalyzer
doesn't report double free in this (convoluted) case:
#include
int main()
{
int* p = new int;
delete p;
free(p);
}
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94355
--- Comment #7 from Ivan Sorokin ---
For me the support for operator new works well for trivially constructible
types. For a non-trivially constructible type I got a false positive:
struct foo { foo(); };
int main()
{
delete new foo();
}
I
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99797
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48877
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56719
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #8
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47579
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80016
Ivan Sorokin changed:
What|Removed |Added
Resolution|--- |FIXED
Status|ASSIGNED
normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Consider this code:
struct base1 { int a; };
struct base2 { int b; };
struct derived : base1, base2 {};
derived& to_derived_ba
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98501
--- Comment #2 from Ivan Sorokin ---
(In reply to Richard Biener from comment #1)
> I think there's a duplicate of this PR.
I searched the list of bugs and I found PR95663. Is it it?
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98555
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #4
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98660
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #1
ormal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
GCC 10.2 produces very good code for this function noticing that both sides of
conjuntion are the same:
unsigned foo_bi
ity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
On this function clang generates slightly shorter code
unsigned foo(unsigned x, unsigned y, unsigned c)
{
return (x | c
-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Created attachment 50014
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50014&action=edit
nbody-update-velocity.cpp
In the following sample GCC (-O3
-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
Created attachment 50015
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50015&action=edit
nbody.cpp
On the attached sample (208 LOC), clang 11.0 genera
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98775
--- Comment #1 from Ivan Sorokin ---
Created attachment 50016
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50016&action=edit
nbody-unrolled.cpp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98814
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98774
--- Comment #3 from Ivan Sorokin ---
(In reply to Hongtao.liu from comment #1)
> It's fixed in current trunk https://godbolt.org/z/63576n
I can confirm that now GCC does use packed multiplication mulpd. Although it is
used somewhat inefficiently
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82640
Ivan Sorokin changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91400
--- Comment #2 from Ivan Sorokin ---
I've sent a patch to gcc-patches mailing list:
https://gcc.gnu.org/pipermail/gcc-patches/2021-February/564663.html
: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: vanyacpp at gmail dot com
Target Milestone: ---
These two are functionally the same, but generate different code with g++ -O2:
unsigned long long foo(unsigned long long a)
{
return a / 3;
}
unsigned long long
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95014
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3507
Ivan Sorokin changed:
What|Removed |Added
CC||vanyacpp at gmail dot com
--- Comment #60
1 - 100 of 153 matches
Mail list logo