[Bug tree-optimization/47815] Tail call regression with GCC snapshot

2018-04-04 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47815 Adam Warner changed: What|Removed |Added Status|NEW |RESOLVED Resolution|---

[Bug tree-optimization/69504] New: XMM register variable ICE with vector extensions

2016-01-26 Thread adam at consulting dot net.nz
: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: adam at consulting dot net.nz Target Milestone: --- xmm_register_variable_ICE.c: #include #include typedef uint8_t u8x16_t __attribute__ ((vector_size (16))); int main(void) { register u8x16_t u8x16 asm

[Bug inline-asm/65436] Max number of extended asm +output operands currently limited to 15

2015-03-17 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65436 --- Comment #6 from Adam Warner adam at consulting dot net.nz --- Sorry, I did not mean to send my previous comment. I updated the title and a hasty comment I was about to edit got added. It is unfair to dismiss my enhancement request as invalid

[Bug inline-asm/65436] Max number of extended asm +output operands currently limited to 15

2015-03-17 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65436 Adam Warner adam at consulting dot net.nz changed: What|Removed |Added Summary|Max number of extended asm |Max number

[Bug c/65436] New: Max number of extended asm +input operands currently limited to 15

2015-03-16 Thread adam at consulting dot net.nz
: enhancement Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: adam at consulting dot net.nz https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html states: The total number of input + output + goto operands is limited to 30. It appears a + input

[Bug rtl-optimization/65247] New: [missed optimisation] Reading a callee-saved register writes to the stack

2015-02-27 Thread adam at consulting dot net.nz
: enhancement Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: adam at consulting dot net.nz There is no way to inform the compiler one is reading a callee-saved register without the compiler also writing the register

[Bug rtl-optimization/65247] [missed optimisation] Reading a callee-saved register writes to the stack

2015-02-27 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65247 --- Comment #1 from Adam Warner adam at consulting dot net.nz --- CLANG bug report: http://llvm.org/bugs/show_bug.cgi?id=22735

[Bug inline-asm/64119] asm triggers local register variable data corruption

2014-11-30 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64119 Adam Warner adam at consulting dot net.nz changed: What|Removed |Added Status|RESOLVED|UNCONFIRMED

[Bug inline-asm/64119] asm triggers local register variable data corruption

2014-11-30 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64119 Adam Warner adam at consulting dot net.nz changed: What|Removed |Added Resolution|INVALID |FIXED

[Bug inline-asm/64119] New: asm triggers local register variable data corruption

2014-11-29 Thread adam at consulting dot net.nz
Component: inline-asm Assignee: unassigned at gcc dot gnu.org Reporter: adam at consulting dot net.nz //asm triggers local register variable data corruption #include stdio.h __attribute__((noinline)) void fn(int inputa, int inputb, int inputc) { register int a asm (rax

[Bug inline-asm/63282] New: [4.7 regression] ICE in redirect_jump_1

2014-09-16 Thread adam at consulting dot net.nz
Assignee: unassigned at gcc dot gnu.org Reporter: adam at consulting dot net.nz Created attachment 33502 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33502action=edit ice.c:9:1: internal compiler error: in redirect_jump_1, at jump.c:1515 This may be related to Bug

[Bug c/38354] Spurious error: initializer element is not computable at load time

2014-09-09 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38354 --- Comment #11 from Adam Warner adam at consulting dot net.nz --- Thank you Joseph for clarifying in Comment 10 why this should be considered an enhancement request. It would be non-trivial to change the model of what GNU C considers a constant

[Bug c/38354] Spurious error: initializer element is not computable at load time

2014-09-08 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38354 --- Comment #8 from Adam Warner adam at consulting dot net.nz --- Joseph, you're correct: 4005fa: b8 c6 05 40 00 moveax,0x4005c6 4005ff: 89 05 cf 04 20 00 movDWORD PTR [rip+0x2004cf],eax # 600ad4

[Bug c/38354] Spurious error: initializer element is not computable at load time

2014-09-07 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38354 --- Comment #6 from Adam Warner adam at consulting dot net.nz --- Just to make sure I understand this correctly: 1. You won't confirm this bug because it violates the C standard. 2. GNU provides extensions to C when the C standard is too

[Bug c/38354] Spurious error: initializer element is not computable at load time

2014-09-05 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38354 --- Comment #4 from Adam Warner adam at consulting dot net.nz --- Why can a compile-time array of 32-bit function pointers (compatible with the non-large code model) be compiled using g++ but not gcc? $ g++ -fpermissive

[Bug target/46219] Generate indirect jump instruction on x86-64

2014-09-04 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46219 Adam Warner adam at consulting dot net.nz changed: What|Removed |Added Status|RESOLVED|REOPENED

[Bug target/62166] New: Poor code generation (x86-64)

2014-08-17 Thread adam at consulting dot net.nz
Assignee: unassigned at gcc dot gnu.org Reporter: adam at consulting dot net.nz $ gcc-snapshot.sh --version gcc (Debian 20140814-1) 4.10.0 20140814 (experimental) [trunk revision 213954] weird_code_gen.c: #include stdint.h typedef void (*f_t)(uint64_t rdi, uint64_t rsi, uint64_t rdx

[Bug c/51840] asm goto enhancement request

2014-07-17 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51840 --- Comment #11 from Adam Warner adam at consulting dot net.nz --- Thank you for the fixed example! Just for the record only toy VM examples can be implemented using this technique. GCC documentation used to say that that the extended asm 30

[Bug target/54445] TLS array lookup with negative constant is not combined into a single instruction

2012-09-13 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54445 --- Comment #8 from Adam Warner adam at consulting dot net.nz 2012-09-13 09:01:44 UTC --- Awesome! Thanks Uros Bizjak and H.J. Lu for locating and fixing the bug.

[Bug target/54445] New: TLS array lookup with negative constant is not combined into a single instruction

2012-08-31 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54445 Bug #: 54445 Summary: TLS array lookup with negative constant is not combined into a single instruction Classification: Unclassified Product: gcc Version: 4.7.1

[Bug target/54445] TLS array lookup with negative constant is not combined into a single instruction

2012-08-31 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54445 --- Comment #1 from Adam Warner adam at consulting dot net.nz 2012-09-01 03:00:39 UTC --- Another example: $ cat negative_constant_not_combined_into_a_single_instruction_example_2.c #include stdint.h __thread uint8_t byte_array[100]; uint64_t

[Bug middle-end/53623] [4.7/4.8 Regression] sign extension is effectively split into two x86-64 instructions

2012-06-10 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623 --- Comment #3 from Adam Warner adam at consulting dot net.nz 2012-06-10 23:32:19 UTC --- (Off topic Note correction) In my previous note I suggested the instruction movsbq dh - rdx. There is no such instruction! One cannot encode register ah/bh

[Bug target/53623] New: [4.7 Regression] sign extension is effectively split into two x86-64 instructions

2012-06-09 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623 Bug #: 53623 Summary: [4.7 Regression] sign extension is effectively split into two x86-64 instructions Classification: Unclassified Product: gcc Version: 4.7.0

[Bug tree-optimization/53133] New: XOR AL,AL to zero lower 8 bits of EAX/RAX causes partial register stall (Intel Core 2)

2012-04-26 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53133 Bug #: 53133 Summary: XOR AL,AL to zero lower 8 bits of EAX/RAX causes partial register stall (Intel Core 2) Classification: Unclassified Product: gcc Version: 4.7.0

[Bug rtl-optimization/45434] x86 missed optimization: use high register (ah, bh, ch, dh) when available to make comparisons

2012-01-17 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45434 --- Comment #7 from Adam Warner adam at consulting dot net.nz 2012-01-18 03:35:24 UTC --- It does not appear to be possible to generate inline asm that leaves GCC to choose the {ah, bh, ch, dh} register: #include stdint.h uint64_t u8l(uint64_t

[Bug rtl-optimization/45434] x86 missed optimization: use high register (ah, bh, ch, dh) when available to make comparisons

2012-01-17 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45434 --- Comment #8 from Adam Warner adam at consulting dot net.nz 2012-01-18 07:00:44 UTC --- Apologies for the noise. I had my machine constraints around the wrong way. Here is the fixed version of the code: #include stdint.h uint64_t u8l(uint64_t

[Bug tree-optimization/51840] New: asm goto incorrect code generation at -O2 and -O3

2012-01-12 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51840 Bug #: 51840 Summary: asm goto incorrect code generation at -O2 and -O3 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal

[Bug tree-optimization/51840] asm goto incorrect code generation at -O2 and -O3

2012-01-12 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51840 --- Comment #2 from Adam Warner adam at consulting dot net.nz 2012-01-13 02:08:34 UTC --- (In reply to comment #1) I think the problem here is the label references are being moved which is correct as GCC thinks the labels where the address

[Bug rtl-optimization/44281] [4.3/4.4/4.5/4.6 Regression] Global Register variable pessimisation

2011-03-04 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44281 --- Comment #8 from Adam Warner adam at consulting dot net.nz 2011-03-04 10:51:01 UTC --- Jakub, I fail to see how your conclusion not to do this is supported by the facts. There are: (a) six global register variables (though the same effect can

[Bug rtl-optimization/44281] [4.3/4.4/4.5/4.6 Regression] Global Register variable pessimisation

2011-03-04 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44281 --- Comment #10 from Adam Warner adam at consulting dot net.nz 2011-03-05 02:01:04 UTC --- Jakub, Thanks for the explanation [The weird saving/restoring of %rdi into/from %r10 is because the RA chose to use %rdi for a temporary used

[Bug rtl-optimization/44281] [4.3/4.4/4.5/4.6 Regression] Global Register variable pessimisation

2011-03-03 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44281 --- Comment #6 from Adam Warner adam at consulting dot net.nz 2011-03-04 07:22:47 UTC --- Below is a very simple test case of an ordinary input argument to a function being: (a) copied to a spare register (b) copied back from a spare register

[Bug tree-optimization/47815] New: Tail call regression with GCC snapshot

2011-02-19 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47815 Summary: Tail call regression with GCC snapshot Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization

[Bug tree-optimization/47815] Tail call regression with GCC snapshot

2011-02-19 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47815 --- Comment #3 from Adam Warner adam at consulting dot net.nz 2011-02-19 13:55:43 UTC --- OK I finally understand. Tail call optimisation also disappears when the noreturn attribute is added to the leaf functions when compiled with gcc-4.5. From

[Bug tree-optimization/46551] New: Generate complex addressing mode CMP instruction in x86-64

2010-11-18 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46551 Summary: Generate complex addressing mode CMP instruction in x86-64 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: minor Priority: P3

[Bug tree-optimization/46551] Generate complex addressing mode CMP instruction in x86-64

2010-11-18 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46551 --- Comment #1 from Adam Warner adam at consulting dot net.nz 2010-11-19 02:55:18 UTC --- $ gcc-snapshot.sh --version gcc (Debian 20101116-1) 4.6.0 20101116 (experimental) [trunk revision 166792] $ gcc-snapshot.sh -std=gnu99 -O3

[Bug rtl-optimization/46219] New: Generate indirect jump instruction on x86-64

2010-10-28 Thread adam at consulting dot net.nz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46219 Summary: Generate indirect jump instruction on x86-64 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization