ty: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
When GCC vectorizes the loop below, it will firstly do loop versioning with
aliasing check on a and b. Since a and b have different stride
RMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
First look at the code below:
int op (const int& x, const int& y) { return x + y; }
void foo(int* a)
{
for (
: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
Look at the following loop:
unsigned int t = ...;
do {
...
t -= 4;
} while (t >= 5);
When I tried to get the iterat
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58686
--- Comment #2 from Cong Hou ---
I think this issue is more like a missed optimization.
If the iteration number can be calculated as a constant value at compile time,
then the function assert_loop_rolls_lt() won't be called due to an early exit
: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
Created attachment 31002
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31002&action=edit
Patch
Look at the following code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58728
--- Comment #1 from Cong Hou ---
Any comment on this?
thanks,
Cong
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58508
--- Comment #5 from Cong Hou ---
I guess I should add
/* { dg-require-effective-target vect_int } */
to the test case. It is right?
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58508
--- Comment #7 from Cong Hou ---
OK. I made a new patch to fix this problem. Waiting to be approved.
thanks,
Cong
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9d0f4a5..3d9916d 100644
--- a/gcc/testsuite/ChangeLog
+++ b
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
Getting the correct loop upper bound is important for some optimizations. GCC
tries to get this bound by calling bound_difference() in
tree-ssa
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58915
--- Comment #2 from Cong Hou ---
I am afraid that get_range_info () has little use here. The value range we care
about may only exist under specific conditions and is hence flow sensitive. For
example, we may need the value range of n in the if bo
++
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
In the patch http://gcc.gnu.org/ml/gcc-patches/2005-02/msg00560.html, the
builtin function is used to perform complex multiplication and division. This
is to comply with C99 standard, but I am wondering if C
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56764
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #2 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58963
--- Comment #1 from Cong Hou ---
Any comment on this topic?
thanks,
Cong
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56717
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #1 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56717
--- Comment #2 from Cong Hou ---
I examined the GCC generated code, and found the main problem is that the load
of 'scale' (rhs operand of >>) to an xmm register is in the loop body, which
could be moved outside.
This happened during rtl-reload p
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #1 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
Bug 53947 depends on bug 58508, which changed state.
Bug 58508 Summary: [Missed-Optimization] Redundant vector load of "actual" loop
invariant in loop body.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58508
What|Removed
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58508
Cong Hou changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59050
Cong Hou changed:
What|Removed |Added
Status|ASSIGNED|RESOLVED
Resolution|---
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58963
--- Comment #3 from Cong Hou ---
Suppose there is a third-party complex library, which is written in the same
way as . Then GCC could not recognize that as complex type, and will
not use builtin calls to calculate multiplication and division.
So
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902
--- Comment #3 from Cong Hou ---
How do you generate the final operations in vectorized code?
I just submitted a patch on this issue. The patch supports non-isomorphic
operations with the restriction that all operations on even/odd elements still
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59006
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #5 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57512
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #2 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60656
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #2 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60656
--- Comment #4 from Cong Hou ---
Yes, there is a quick fix: we can check if the def with vect_used_by_reduction
is immediately used by a reduction stmt. After all, it seems that
supportable_widening_operation() is the only place that takes advanta
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60656
--- Comment #7 from Cong Hou ---
Yes, will do it. Thank you a lot!
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60773
Cong Hou changed:
What|Removed |Added
CC||congh at google dot com
--- Comment #2 from
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60773
--- Comment #5 from Cong Hou ---
Hi Jakub
Thank you very much for the commit!
thanks,
Cong
On Wed, Apr 9, 2014 at 4:39 AM, jakub at gcc dot gnu.org
wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60773
>
> Jakub Jelinek changed:
>
>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60896
--- Comment #3 from Cong Hou ---
Created attachment 32668
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32668&action=edit
The patch to fix PR60896
The reason of this issue is that those statements in PATTERN_DEF_SEQ in
pre-recognized widen-
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
GCC fails to compile the following code:
struct A {
void foo(const int &);
void foo(float);
};
template
void bar(void (A::*memfun)(Args...), Args... args);
void go(const int& i)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58762
Cong Hou changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|---
-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
The compilation on the code below fails with options "-Wall -Werror -O2
-ftree-loop-vectorize". The reason is that the epilogue generated by the
vectorizer tries to access the memory outside
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60505
--- Comment #1 from Cong Hou ---
Google ref: b/13403465
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64365
--- Comment #1 from Cong Hou ---
Ping on this bug.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64365
--- Comment #9 from Cong Hou ---
Thanks for the fix, Richard!
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
Created attachment 33710
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33710&action=edit
assembly
When compile the code show
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63530
--- Comment #2 from Cong Hou ---
This issue can also be reproduced on x86_64. Compile the following code with
options (assume the file name is t.c): -O2 -ftree-vectorize t.c
-fdump-tree-all-alias
#include
typedef struct {
unsigned char map[
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: congh at google dot com
Compiling the following loop with -O3 on x86-64 produces incorrect code:
void foo(int *in) {
for (int i = 14; i >= 10; i--) {
in[i
38 matches
Mail list logo