[Bug rtl-optimization/46235] inefficient bittest code generation

2014-06-03 Thread chris.a.ferguson at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46235

--- Comment #5 from chris.a.ferguson at gmail dot com ---
This optimization opportunity is still being missed as of GCC 4.9.

Test cases:

bool IsBitSet1(unsigned char byte, int index)
{
return (byte & (1<> index) & 1;
}

>From GCC 4.9:

IsBitSet1(unsigned char, int):
movecx, esi
moveax, 1
movzx  edi, dil
saleax, cl
test   eax, edi
setne  al
ret

IsBitSet2(unsigned char, int):
movzx  eax, dil
movecx, esi
sareax, cl
andeax, 1
ret


>From Clang 3.3:

IsBitSet1(unsigned char, int):
btl%esi, %edi
setb   %al
ret

IsBitSet2(unsigned char, int):
btl%esi, %edi
setb   %al
ret


[Bug c++/100766] New: Template type deduction fails with vector extensions

2021-05-26 Thread chris.a.ferguson at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100766

Bug ID: 100766
   Summary: Template type deduction fails with vector extensions
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: chris.a.ferguson at gmail dot com
  Target Milestone: ---

The following is a minimum example that fails to compile with GCC, but succeeds
with Clang and Intel compilers.

template 
using vec __attribute__((__vector_size__(32))) = T;

template 
vec increment(vec x)
{
return x + 1;
}

vec test_works(vec x)
{
return increment(x);
}

vec test_fails(vec x)
{
return increment(x);
}

[Bug c++/100766] Template type deduction fails with vector extensions

2021-05-26 Thread chris.a.ferguson at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100766

--- Comment #2 from chris.a.ferguson at gmail dot com ---
(In reply to Jonathan Wakely from comment #1)
> Is this a duplicate of PR 100765 ?

Yes, this seems to be the same exact issue.