Discussion:
[activity] 6 - 10 july 2015
Prathamesh Kulkarni
2015-07-13 07:17:29 UTC
Permalink
== This Week ==

* TCWG-777 (4/10)
- Resolved ICE caused by pass during gcc build but hit another ICE:
http://pastebin.com/RUAY6scB
- Current pass state: http://pastebin.com/AGXnSkrZ
- For test-case:
void f(int flags)
{
void foo(void);
if (flags & 1)
foo();
}
- temporaries don't exist for -O1
- for -O2 temps introduced by peephole2 due to define_peephole2
pattern in thumb2.md:1540
http://pastebin.com/3rEF8Te4
So this intentionally transforms rtx from
zeroextractsi_compare0_scratch to rtx from shiftsi3_compare0_scratch.
Why is it beneficial to do this transform ?
- Looking into combine pass
- For above test-case works with -marm for -O2.

* TCWG-830 (3/10)
- trying to understand vect dump
- untested patch: http://pastebin.com/K4UX5iYz

* Misc (2/10)
- Started looking at TCWG-835, loop vectorized on x86 but not arm
- Committed fix to segfault on -dx
- Conference calls

== Next Week ==
- Continue with TCWG-777, TCWG-830, TCWG-835
- Travel to Mumbai on 14th July (Tuesday) for US Visa Interview with
US Consulate.
Jim Wilson
2015-07-13 15:46:49 UTC
Permalink
On Mon, Jul 13, 2015 at 12:17 AM, Prathamesh Kulkarni
Post by Prathamesh Kulkarni
- for -O2 temps introduced by peephole2 due to define_peephole2
pattern in thumb2.md:1540
http://pastebin.com/3rEF8Te4
So this intentionally transforms rtx from
zeroextractsi_compare0_scratch to rtx from shiftsi3_compare0_scratch.
Why is it beneficial to do this transform ?
I used svn blame to find the revision where the pattern was added,
then svn log to get the changelog entry and date from that revision,
and searching the gcc-patches mailing list on that date I found this
https://gcc.gnu.org/ml/gcc-patches/2010-06/msg02518.html
It doesn't explain much, but refers to an earlier change, so I did a
google search for thumb2_tlobits_cbranch to find when this pattern was
added, and that gives me
https://gcc.gnu.org/ml/gcc-patches/2010-05/msg00003.html
which refers to bug 42879 which has the explanation we want
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42879

tst is a 32-bit thumb2 instruction, but lsls is a 16-bit instruction,
so it is a minor size optimization.

Jim

Loading...