Viewing file: pr54236-6.c (1.21 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* In this snippet, there was a missed subc case: tst #1,r0 movt r0 neg r0,r0
which should be: tst #1,r0 subc r0,r0 */
/* { dg-do compile } */ /* { dg-options "-O2 -fno-tree-forwprop" } */
/* { dg-final { scan-assembler-times {tst #1,r0} 1 } } */ /* { dg-final { scan-assembler-times {subc r} 1 } } */
/* { dg-final { scan-assembler-not "movt|not\t|neg\t|movrt" } } */
struct inode { unsigned int i_gid; };
struct iattr { unsigned int ia_valid; unsigned int ia_gid; };
struct task_struct { unsigned long flags; unsigned int cap_effective; };
extern int in_group_p (unsigned int);
static inline struct task_struct* get_current (void) { struct task_struct *current; return current; }
static inline int capable (int cap) { if (((get_current()->cap_effective) & (1 << (cap)))) { get_current()->flags |= 0x00000100; return 1; } return 0; }
int inode_change_ok (struct inode *inode, struct iattr *attr) { int retval = -1; unsigned int ia_valid = attr->ia_valid;
if (ia_valid & 512) goto fine;
if ((ia_valid & 4) && (!in_group_p(attr->ia_gid) && attr->ia_gid != inode->i_gid) && !capable(0)) goto error;
fine: retval = 0; error: return retval; }
|