Commit 1a998fa0 by Martin Sebor Committed by Martin Sebor

builtin-sprintf.c: Add test cases.

gcc/testsuite/ChangeLog:
	* gcc.dg/tree-ssa/builtin-sprintf.c: Add test cases.

From-SVN: r244848
parent 02f1ef40
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> 2017-01-23 Richard Biener <rguenther@suse.de>
PR tree-optimization/79088 PR tree-optimization/79088
......
...@@ -773,6 +773,34 @@ test_s (int i) ...@@ -773,6 +773,34 @@ test_s (int i)
RNG ( 3, 6, 7, "%-s", i ? "123" : "123456"); 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) int main (void)
{ {
test_c ('?'); test_c ('?');
...@@ -791,6 +819,10 @@ int main (void) ...@@ -791,6 +819,10 @@ int main (void)
test_s (0); test_s (0);
test_n ();
test_percent ();
if (nfails) if (nfails)
{ {
__builtin_printf ("%u out of %u tests failed\n", nfails, ntests); __builtin_printf ("%u out of %u tests failed\n", nfails, ntests);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment