Code slowdown depending on where scalar comes from
Bugzilla Link | 522 |
Created on | Jul 08, 2009 16:53 |
Version | 1.00beta |
OS | Linux |
Architecture | PC |
Attachments | slow2.breaks.sac, iotaonly4.sac, crud.breaks.sac, iotaonly4.fast.O3.c, iotaonly4.slow.O3.c, iotaonly8.sac, iotaonly8.slow.b11, iotaonly8.fast.b11, iotaonly9.sac |
Extended Description
Created an attachment (id=550) Shorter source code to reproduce fault The attached code presents, I think, two problems: The code performs +/⍳n; i.e., sum the first n integers. 1. If n comes from an id() function, both codes perform alike when compiled with: -O3 and -O3 -nowlf -doswlf -extrema 2. If n comes from reading the command line, the code compiled with -O3 performs about 15% faster than the SWLF code. Eyeballing the -b11 output did not give me any hints as to a difference in generated code, EXCEPT that the WLF code contains TWO WLs, but the SWLF code contains only one WL, it having folded the two WLs together. Also, the second WL in the WLF-generated code has an RC(xxx) in its WITHOP genarray clause. What does this RC field mean? Could that be relevant? I saw this problem before, but don't see any bugzilla entry for it.