* tree.h (FALLTHROUGH_LABEL_P): Use private_flag
instead of public_flag.
* varasm.c (default_binds_local_p_3): Formatting fix.
* c-c++-common/Wimplicit-fallthrough-34.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241094
138bc75d-0d04-0410-961f-
82ee72b054a4
git-id:
c0f4422f26a07270ec6027df89b731e7b9977e14
Change-Id: Ied47aa4857f185e104b3ff29daf46ff11aee8f7d
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
--- /dev/null
+/* PR c/77946 */
+/* { dg-do compile } */
+/* { dg-options "-Wimplicit-fallthrough" } */
+
+void
+foo (void)
+{
+ static void *p = &&lab;
+ goto *p;
+ /*FALLTHRU*/
+ lab:;
+}
/* Whether a case or a user-defined label is allowed to fall through to.
This is used to implement -Wimplicit-fallthrough. */
#define FALLTHROUGH_LABEL_P(NODE) \
- (LABEL_DECL_CHECK (NODE)->base.public_flag)
+ (LABEL_DECL_CHECK (NODE)->base.private_flag)
/* Nonzero means this expression is volatile in the C sense:
its address should be of type `volatile WHATEVER *'.
FIXME: We can resolve the weakref case more curefuly by looking at the
weakref alias. */
if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp))
- || (TREE_CODE (exp) == FUNCTION_DECL
- && lookup_attribute ("ifunc", DECL_ATTRIBUTES (exp))))
+ || (TREE_CODE (exp) == FUNCTION_DECL
+ && lookup_attribute ("ifunc", DECL_ATTRIBUTES (exp))))
return false;
/* Static variables are always local. */