On Mon, Aug 18, 2014 at 4:37 PM, Richard Biener
<richard.guent...@gmail.com> wrote:
> On Sun, Aug 17, 2014 at 9:50 PM, Prathamesh Kulkarni
> <bilbotheelffri...@gmail.com> wrote:
>> Hi,
>>    Apparently this pattern is not getting fired (even in isolation).
>>
>> /* x % 1 -> 0 */
>> (simplify
>>   (trunc_mod @0 integer_onep)
>>   { build_zero_cst (type); })
>>
>> I tried with this test-case:
>> int f(int x)
>> {
>>   int t1 = 1;
>>   int t2 = x % t1;
>>   return t2;
>> }
>>
>> I get the following output in ccp1 dump file:
>> http://pastebin.com/B6HjptkC
>
> It shows (and I also see that):
>
> Visiting statement:
> t2_3 = x_2(D) % t1_1;
> which is likely CONSTANT
> Match-and-simplified x_2(D) % t1_1 to 0
> Lattice value changed to CONSTANT 0.  Adding SSA edges to worklist.
>
> so it works as expected?  Or what do you miss?
>
> Note that the function is simplified all the way to return 0; and
> intermediate statemens are removed.
oops, I got mixed up -:)
sorry for the noise.

This patch adds the test-case for that pattern.
testsuite/
  * match-constant-folding.c: Add new test-case.

Thanks,
Prathamesh

>
> Thanks,
> Richard.
>
>> and the following output is generated in gimple-match.c:
>> http://pastebin.com/tmi0cpxv
>>
>> I guess the generated code appears to be correct for the above pattern,
>> so we are not doing anything wrong in genmatch ?
>>
>> Thanks,
>> Prathamesh
Index: match-constant-folding.c
===================================================================
--- match-constant-folding.c	(revision 214095)
+++ match-constant-folding.c	(working copy)
@@ -118,5 +118,13 @@ int c13(int x)
 }
 /* { dg-final { scan-tree-dump "Match-and-simplified x_\\d\+\\(D\\) \\^ t1_\\d\+ to x_\\d\+\\(D\\)" "ccp1" } } */
 
+/* x % 1 -> 0 */
+int c14(int x)
+{
+  int t1 = 1;
+  int c14_val = x % t1;
+  return c14_val;
+}
+/* { dg-final { scan-tree-dump "Match-and-simplified x_\\d\+\\(D\\) % t1_\\d\+ to 0" "ccp1" } } */
 
 /* { dg-final { cleanup-tree-dump "forwprop2" } } */

Reply via email to