35 lines
834 B
C
35 lines
834 B
C
/* PR tree-optimization/83671 - fix for false positive reported by
|
|
-Wstringop-overflow does not work with inlining
|
|
Verify that the length the empty string is folded to zero even at -O1
|
|
regardless of offset into it.
|
|
Also verify that the length of a non-empty string isn't folded given
|
|
a variable offset.
|
|
{ dg-do compile }
|
|
{ dg-options "-O1 -fdump-tree-optimized" } */
|
|
|
|
#include "strlenopt.h"
|
|
|
|
inline unsigned length (const char *s)
|
|
{
|
|
return __builtin_strlen (s);
|
|
}
|
|
|
|
void check_length_cst (int i)
|
|
{
|
|
unsigned len = length (&""[i]);
|
|
|
|
if (len)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
void check_length_var (int i)
|
|
{
|
|
unsigned len = length (&"1"[i]);
|
|
|
|
if (len != 1)
|
|
__builtin_abort ();
|
|
}
|
|
|
|
/* { dg-final { scan-tree-dump-times "abort" 1 "optimized" } }
|
|
{ dg-final { scan-tree-dump-times "strlen" 1 "optimized" } } */
|