blob: d63eb0cf9a3f805f99eb00edab9d853b4027d9b4 [file] [log] [blame]
/* { dg-additional-options "-fanalyzer-call-summaries --param analyzer-min-snodes-for-call-summary=0 -fno-analyzer-state-merge" } */
/* There need to be at least two calls to a function for the
call-summarization code to be used.
TODO: add some kind of test that summarization *was* used. */
#include "analyzer-decls.h"
/* With state merging disabled, we get two summaries here. */
int two_outcomes (int flag, int x, int y)
{
if (flag)
return x;
else
return y;
}
void test_two_outcomes (int outer_flag, int a, int b)
{
int r;
__analyzer_eval (two_outcomes (1, a, b) == a); /* { dg-warning "TRUE" } */
__analyzer_eval (two_outcomes (0, a, b) == b); /* { dg-warning "TRUE" } */
r = two_outcomes (outer_flag, a, b);
if (outer_flag)
__analyzer_eval (r == a); /* { dg-warning "TRUE" } */
else
__analyzer_eval (r == b); /* { dg-warning "TRUE" } */
}