[Bug sanitizer/95137] Sanitizers seem to be missing support for coroutines

2021-09-28 Thread rafael at espindo dot la via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95137

--- Comment #45 from Rafael Avila de Espindola  ---
(In reply to niek from comment #43)
> Does this mean (and could you please reconfirm) that bug 95317 has
> disappeared in trunk (which will become GCC 12)?

Hi,

I am not working on a project using coroutines right now, so I can't easily do
any test other than trying the reduced testcase as you did.

[Bug target/97734] GCC using branches when a conditional move would be better

2020-11-06 Thread rafael at espindo dot la via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97734

--- Comment #3 from Rafael Avila de Espindola  ---
I just realized I made a mistake when producing the reduced testcase. The
argument x should have been an uint32_t. Unfortunately, with that fix gcc
always produces a branch.

ICC still produces a cmov:

https://gcc.godbolt.org/z/zszrPK

I would be very happy with a __builtin_branchless_select.

[Bug target/97734] New: GCC using branches when a conditional move would be better

2020-11-05 Thread rafael at espindo dot la via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97734

Bug ID: 97734
   Summary: GCC using branches when a conditional move would be
better
   Product: gcc
   Version: 11.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rafael at espindo dot la
  Target Milestone: ---

Created attachment 49511
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49511=edit
graph

Playing with the code in https://github.com/patmorin/arraylayout I noticed that
I could not reproduce the results for the eytzinger layout. It turns out the
issue was with current gcc selecting moves instead of conditional moves for
that particular code.

A reduced testcase is

#include 
uint64_t branchfree_search(uint64_t x, uint64_t n, uint32_t *a) {
uint64_t i = 0;
while (i < n) {
i = (x <= a[i]) ? (2*i + 1) : (2*i + 2);
}
uint64_t j = (i+1) >> __builtin_ffsl(~(i+1));
return (j == 0) ? n : j-1;
}

I have placed it in

https://gcc.godbolt.org/z/Krqrz7

Results
* ICC: conditional move
* Clang: branches
* GCC 6.4: conditional move
* Newer GCCs with -O2:  branches
* GCC with -Os: conditional move

The attached graph shows how the conditional move is better for "small" array
sizes.

[Bug libstdc++/90295] Please define ~exception_ptr inline

2020-10-06 Thread rafael at espindo dot la via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90295

--- Comment #5 from Rafael Avila de Espindola  ---
> Fixed for GCC 11, and not plausible to backport.

Thank you so much! Looking forward to GCC 11.