[Bug rtl-optimization/46235] inefficient bittest code generation
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
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
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.