builtin-sprintf.c: Add test cases.
authorMartin Sebor <msebor@redhat.com>
Tue, 24 Jan 2017 01:12:41 +0000 (01:12 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Tue, 24 Jan 2017 01:12:41 +0000 (18:12 -0700)
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/builtin-sprintf.c: Add test cases.

From-SVN: r244848

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf.c

index c05ea54fe748ed6a8833e18910e8bf4b3adc151a..8798d948e1fcf4329c4ec2c9389e71c2b1bad41c 100644 (file)
@@ -1,3 +1,7 @@
+2017-01-23  Martin Sebor  <msebor@redhat.com>
+
+       * gcc.dg/tree-ssa/builtin-sprintf.c: Add test cases.
+
 2017-01-23  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/79088
index a3a467cb039cba5c70ac506f0dedcfa6a346b4c7..fd0f28f9dc1b1a354c59761cf8788be361dc2b84 100644 (file)
@@ -773,6 +773,34 @@ test_s (int i)
   RNG (  3,   6,   7, "%-s", i ? "123" : "123456");
 }
 
+static void __attribute__ ((noinline, noclone))
+test_n (void)
+{
+  int n;
+  EQL (  0,   1, "%n", &n);
+  EQL (  1,   2, "1%n", &n);
+  EQL (  2,   3, "12%n", &n);
+  EQL (  3,   4, "12%n3", &n);
+  EQL (  4,   5, "12%n34", &n);
+  EQL (  4,   5, "12%n34%n", &n, &n);
+  EQL (  5,   6, "12%n34%n5", &n, &n);
+  EQL (  6,   7, "12%n34%n56", &n, &n);
+  EQL (  6,   7, "%s%n%s%n%s", "12", &n, "34", &n, "56");
+}
+
+static void __attribute__ ((noinline, noclone))
+test_percent (void)
+{
+  /* Provide extra arguments siunce the EQL macro needs at least one.  */
+  EQL (  1,   2, "%%", 0);         /* { dg-warning "too many arguments" } */
+  EQL (  2,   3, "%%%%", 0);       /* { dg-warning "too many arguments" } */
+  EQL (  3,   4, "%%%%%%", 0);     /* { dg-warning "too many arguments" } */
+  EQL (  3,   4, "%%%%%%%s", "");
+  EQL (  3,   4, "%%%%%s%%", "");
+  EQL (  3,   4, "%%%s%%%%", "");
+  EQL (  3,   4, "%s%%%%%%", "");
+}
+
 int main (void)
 {
   test_c ('?');
@@ -791,6 +819,10 @@ int main (void)
 
   test_s (0);
 
+  test_n ();
+
+  test_percent ();
+
   if (nfails)
     {
       __builtin_printf ("%u out of %u tests failed\n", nfails, ntests);