Viewing file: pr70105.C (1.41 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-options "-Wsequence-point -fdiagnostics-show-caret" } // { dg-require-effective-target alloca }
void *libiberty_concat_ptr; extern unsigned long concat_length (const char *, ...); extern char *concat_copy2 (const char *, ...);
#define ACONCAT(ACONCAT_PARAMS) \ (libiberty_concat_ptr = (char *) ALLOCA (concat_length ACONCAT_PARAMS + 1), /* { dg-warning "may be undefined" } */ \ concat_copy2 ACONCAT_PARAMS)
/* Arbitrary content here. In PR c++/70105, this was >500 lines of source. This should not be printed. */
# define ALLOCA(x) __builtin_alloca(x)
int strlen (const char *); void *get_identifier (const char *); void *get_identifier_with_length (const char *, int);
#define GET_IDENTIFIER(STR) \ (__builtin_constant_p (STR) \ ? get_identifier_with_length ((STR), strlen (STR)) \ : get_identifier (STR))
void *test(void) { int *i; return GET_IDENTIFIER (ACONCAT (("foo"))); }
/* { dg-begin-multiline-output "" } (libiberty_concat_ptr = (char *) ALLOCA (concat_length ACONCAT_PARAMS + 1), ^ { dg-end-multiline-output "" } */ /* { dg-begin-multiline-output "" } ? get_identifier_with_length ((STR), strlen (STR)) \ ^~~ { dg-end-multiline-output "" } */ /* { dg-begin-multiline-output "" } return GET_IDENTIFIER (ACONCAT (("foo"))); ^~~~~~~ { dg-end-multiline-output "" } */
|