On Thu, Dec 20, 2018 at 1:28 PM Jason Merrill wrote:
>
> On 12/20/18 2:52 PM, H.J. Lu wrote:
> > On Thu, Dec 20, 2018 at 11:28 AM Jason Merrill wrote:
> >>
> >> On 12/19/18 12:35 PM, H.J. Lu wrote:
> >>> + while (handled_component_p (rhs))
> >>> +{
> >>> + if (TREE_CODE (rhs) == COMPONE
On 12/20/18 2:52 PM, H.J. Lu wrote:
On Thu, Dec 20, 2018 at 11:28 AM Jason Merrill wrote:
On 12/19/18 12:35 PM, H.J. Lu wrote:
+ while (handled_component_p (rhs))
+{
+ if (TREE_CODE (rhs) == COMPONENT_REF)
+ break;
+ rhs = TREE_OPERAND (rhs, 0);
+}
+
+ if (TREE_CODE (r
return context;
}
Here is the updated patch. OK for trunk?
Thanks.
--
H.J.
From f2982a694a2fab4dd1ce2a6819006b451fa0c9a7 Mon Sep 17 00:00:00 2001
From: "H.J. Lu"
Date: Fri, 12 Jan 2018 21:12:05 -0800
Subject: [PATCH] C/C++: Add -Waddress-of-packed-member
MIME-Version: 1.0
Conten
On 12/19/18 12:35 PM, H.J. Lu wrote:
+ while (handled_component_p (rhs))
+{
+ if (TREE_CODE (rhs) == COMPONENT_REF)
+ break;
+ rhs = TREE_OPERAND (rhs, 0);
+}
+
+ if (TREE_CODE (rhs) != COMPONENT_REF)
+return NULL_TREE;
+
+ object = TREE_OPERAND (rhs, 0);
+ field =
ux/gcc/ -O2
> -S c.i
> c.i: In function \u2018foo3\u2019:
> c.i:8:20: warning: assignment to \u2018int *\u2019 from
> \u2018int\u2019 makes pointer from integer without a cast
> [-Wint-conversion]
> 8 | return q1 ? (*q1 = 1, &p1->i) : (q2 ? (*q1 = &p1->i, *q
On Tue, Dec 18, 2018 at 7:19 PM Sandra Loosemore
wrote:
>
> On 12/18/18 2:12 PM, H.J. Lu wrote:
> >
> > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> > index ac2ee59d92c..47f2fc3f518 100644
> > --- a/gcc/doc/invoke.texi
> > +++ b/gcc/doc/invoke.texi
> > @@ -358,6 +358,7 @@ Objective-C a
On Tue, Dec 18, 2018 at 2:14 PM Jason Merrill wrote:
>
> On 12/18/18 4:12 PM, H.J. Lu wrote:
> > On Tue, Dec 18, 2018 at 12:36 PM Jason Merrill wrote:
> >>
> >> On 12/18/18 9:10 AM, H.J. Lu wrote:
> >>> + switch (TREE_CODE (rhs))
> >>> +{
> >>> +case ADDR_EXPR:
> >>> + base = TREE_O
On 12/18/18 2:12 PM, H.J. Lu wrote:
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index ac2ee59d92c..47f2fc3f518 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -358,6 +358,7 @@ Objective-C and Objective-C++ Dialects}.
-Wuseless-cast -Wvariadic-macros -Wvector-operation
On 12/18/18 4:12 PM, H.J. Lu wrote:
On Tue, Dec 18, 2018 at 12:36 PM Jason Merrill wrote:
On 12/18/18 9:10 AM, H.J. Lu wrote:
+ switch (TREE_CODE (rhs))
+{
+case ADDR_EXPR:
+ base = TREE_OPERAND (rhs, 0);
+ while (handled_component_p (base))
+ {
+ if (TREE_CODE (b
-member]
8 | return q1 ? (*q1 = 1, &p1->i) : (q2 ? (*q2 = 2, &p2->i): q2);
| ^~
c.i:8:51: warning: taking address of packed member of ‘struct A’ may
result in an unaligned pointer value [-Waddress-of-packed-member]
8 | return q1 ? (*q1 = 1,
On 12/18/18 9:10 AM, H.J. Lu wrote:
+ switch (TREE_CODE (rhs))
+{
+case ADDR_EXPR:
+ base = TREE_OPERAND (rhs, 0);
+ while (handled_component_p (base))
+ {
+ if (TREE_CODE (base) == COMPONENT_REF)
+ break;
+ base = TREE_OPERAND (base, 0);
+
On Mon, Dec 17, 2018 at 08:53:32AM -0500, Jason Merrill wrote:
> On 12/17/18 7:42 AM, H.J. Lu wrote:
> > On Mon, Dec 17, 2018 at 1:39 AM Richard Biener
> > wrote:
> > >
> > > On Fri, Dec 14, 2018 at 11:48 PM H.J. Lu wrote:
> > > >
> > > > On Fri, Dec 14, 2018 at 2:10 PM Jason Merrill wrote:
>
On 12/17/18 7:42 AM, H.J. Lu wrote:
On Mon, Dec 17, 2018 at 1:39 AM Richard Biener
wrote:
On Fri, Dec 14, 2018 at 11:48 PM H.J. Lu wrote:
On Fri, Dec 14, 2018 at 2:10 PM Jason Merrill wrote:
On 12/13/18 6:56 PM, H.J. Lu wrote:
On Thu, Dec 13, 2018 at 12:50 PM Jason Merrill wrote:
On
On Mon, Dec 17, 2018 at 1:43 PM H.J. Lu wrote:
>
> On Mon, Dec 17, 2018 at 1:39 AM Richard Biener
> wrote:
> >
> > On Fri, Dec 14, 2018 at 11:48 PM H.J. Lu wrote:
> > >
> > > On Fri, Dec 14, 2018 at 2:10 PM Jason Merrill wrote:
> > > >
> > > > On 12/13/18 6:56 PM, H.J. Lu wrote:
> > > > > On Th
On Mon, Dec 17, 2018 at 1:39 AM Richard Biener
wrote:
>
> On Fri, Dec 14, 2018 at 11:48 PM H.J. Lu wrote:
> >
> > On Fri, Dec 14, 2018 at 2:10 PM Jason Merrill wrote:
> > >
> > > On 12/13/18 6:56 PM, H.J. Lu wrote:
> > > > On Thu, Dec 13, 2018 at 12:50 PM Jason Merrill wrote:
> > > >>
> > > >>
On Fri, Dec 14, 2018 at 11:48 PM H.J. Lu wrote:
>
> On Fri, Dec 14, 2018 at 2:10 PM Jason Merrill wrote:
> >
> > On 12/13/18 6:56 PM, H.J. Lu wrote:
> > > On Thu, Dec 13, 2018 at 12:50 PM Jason Merrill wrote:
> > >>
> > >> On 9/25/18 11:46 AM, H.J. Lu wrote:
> > >>> On Fri, Aug 31, 2018 at 2:04
p = &__real(i);
> >>
> >> You may get VIEW_CONVERT_EXPR with location wrappers.
> >
> > Fixed. I replaced gcc_unreachable with return NULL_TREE;
>
> Then we're back to my earlier question: are you deliberately not
> handling the other cases? Why not look throu
On 12/13/18 6:56 PM, H.J. Lu wrote:
On Thu, Dec 13, 2018 at 12:50 PM Jason Merrill wrote:
On 9/25/18 11:46 AM, H.J. Lu wrote:
On Fri, Aug 31, 2018 at 2:04 PM, Jason Merrill wrote:
On 07/23/2018 05:24 PM, H.J. Lu wrote:
On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers
wrote:
On Mon, 18 Ju
u/tools-build/gcc-debug/build-x86_64-linux/gcc/xgcc
> > -B/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/ -O2
> > -S x.i
> > x.i: In function ‘g8’:
> > x.i:7:25: warning: taking address of packed member of ‘struct A’ may
> > result in an unaligned pointe
On 9/25/18 11:46 AM, H.J. Lu wrote:
On Fri, Aug 31, 2018 at 2:04 PM, Jason Merrill wrote:
On 07/23/2018 05:24 PM, H.J. Lu wrote:
On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers
wrote:
On Mon, 18 Jun 2018, Jason Merrill wrote:
On Mon, Jun 18, 2018 at 11:59 AM, Joseph Myers
wrote:
On Mon
On Sun, Nov 4, 2018 at 7:16 AM H.J. Lu wrote:
>
> On Tue, Sep 25, 2018 at 8:46 AM H.J. Lu wrote:
> >
> > On Fri, Aug 31, 2018 at 2:04 PM, Jason Merrill wrote:
> > > On 07/23/2018 05:24 PM, H.J. Lu wrote:
> > >>
> > >> On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers
> > >> wrote:
> > >>>
> > >>>
On Tue, Sep 25, 2018 at 8:46 AM H.J. Lu wrote:
>
> On Fri, Aug 31, 2018 at 2:04 PM, Jason Merrill wrote:
> > On 07/23/2018 05:24 PM, H.J. Lu wrote:
> >>
> >> On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers
> >> wrote:
> >>>
> >>> On Mon, 18 Jun 2018, Jason Merrill wrote:
> >>>
> On Mon, Jun
8-2]$
address_p is false in this case and rhs is PARM_DECL, VAR_DECL or
NOP_EXPR. This comes from convert_for_assignment in c/c-typeck.c.
For other compatible pointer assignment, address_p is true and rhs is
ADDR_EXPR, PARM_DECL, VAR_DECL or NOP_EXPR. Check
for ADDR_EXPR won't work.
addre
On 07/23/2018 05:24 PM, H.J. Lu wrote:
On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers wrote:
On Mon, 18 Jun 2018, Jason Merrill wrote:
On Mon, Jun 18, 2018 at 11:59 AM, Joseph Myers wrote:
On Mon, 18 Jun 2018, Jason Merrill wrote:
+ if (TREE_CODE (rhs) == COND_EXPR)
+{
+ /* Chec
On Mon, Jul 23, 2018 at 2:24 PM, H.J. Lu wrote:
> On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers
> wrote:
>> On Mon, 18 Jun 2018, Jason Merrill wrote:
>>
>>> On Mon, Jun 18, 2018 at 11:59 AM, Joseph Myers
>>> wrote:
>>> > On Mon, 18 Jun 2018, Jason Merrill wrote:
>>> >
>>> >> > + if (TREE_COD
ned warn_for_pointer_of_packed_member and
warn_for_address_of_packed_member into
warn_for_address_or_pointer_of_packed_member.
Tested on Linux/x86-64 and Linux/i686. OK for trunk.
Thanks.
--
H.J.
From 2ddae2d57d2875e80c9186b281edfabfddb42e86 Mon Sep 17 00:00:00 2001
From: "H.J. Lu"
Date: Fri, 12 Jan 2018 21:12:05 -0800
Sub
On Mon, May 14, 2018 at 8:00 PM, Martin Sebor wrote:
> On 05/14/2018 01:10 PM, H.J. Lu wrote:
>>
>> On Mon, May 14, 2018 at 10:40 AM, H.J. Lu wrote:
>>
>> $ cat c.i
>> struct B { int i; };
>> struct C { struct B b; } __attribute__ ((packed));
>>
>> long* g8 (struct C *p) { ret
On 05/14/2018 01:10 PM, H.J. Lu wrote:
On Mon, May 14, 2018 at 10:40 AM, H.J. Lu wrote:
$ cat c.i
struct B { int i; };
struct C { struct B b; } __attribute__ ((packed));
long* g8 (struct C *p) { return p; }
$ gcc -O2 -S c.i -Wno-incompatible-pointer-types
c.i: In function ‘g8’:
c.i:4:33: warn
On Mon, May 14, 2018 at 10:40 AM, H.J. Lu wrote:
$ cat c.i
struct B { int i; };
struct C { struct B b; } __attribute__ ((packed));
long* g8 (struct C *p) { return p; }
$ gcc -O2 -S c.i -Wno-incompatible-pointer-types
c.i: In function ‘g8’:
c.i:4:33: warning
On Mon, May 14, 2018 at 9:18 AM, Martin Sebor wrote:
> On 05/14/2018 07:44 AM, H.J. Lu wrote:
>>
>> On Wed, Apr 25, 2018 at 7:54 PM, H.J. Lu wrote:
>>>
>>> When address of packed member of struct or union is taken, it may result
>>> in an unaligned pointer value. This patch adds
>>> -Waddress-of
On 05/14/2018 07:44 AM, H.J. Lu wrote:
On Wed, Apr 25, 2018 at 7:54 PM, H.J. Lu wrote:
When address of packed member of struct or union is taken, it may result
in an unaligned pointer value. This patch adds -Waddress-of-packed-member
to check alignment at pointer assignment and warn unaligned
On Wed, Apr 25, 2018 at 7:54 PM, H.J. Lu wrote:
> When address of packed member of struct or union is taken, it may result
> in an unaligned pointer value. This patch adds -Waddress-of-packed-member
> to check alignment at pointer assignment and warn unaligned address as
> well as unaligned point
When address of packed member of struct or union is taken, it may result
in an unaligned pointer value. This patch adds -Waddress-of-packed-member
to check alignment at pointer assignment and warn unaligned address as
well as unaligned pointer:
$ cat x.i
struct pair_t
{
char c;
int i;
} __att
;t warn:
>
> [hjl@gnu-tools-1 pr51628]$ cat a1.i
> struct A {
> int i;
> } __attribute__ ((packed));
>
> int f (struct A *p)
> {
> return *&p->i;
> }
> [hjl@gnu-tools-1 pr51628]$
>
> There is no unaligned load here. I am testing a new patch.
>
On Sat, Jan 20, 2018 at 8:31 AM, H.J. Lu wrote:
> On Fri, Jan 19, 2018 at 7:57 PM, Martin Sebor wrote:
>> On 01/19/2018 10:14 AM, Martin Sebor wrote:
>>>
>
>> After reading the Clang code review for the warning
>> (https://reviews.llvm.org/D20561) and experimenting with a few
>> more test cases I
// regardless of how ir is used
> }
This won't compile:
[hjl@gnu-tools-1 pr51628]$ cat r1.ii
struct A {
int i;
} __attribute__ ((packed));
int* g (struct A &r)
{
int &ir = r.i; // missing warning here
return &ir; // regardless of how ir is used
}
[hjl@gnu-tools-1 pr51628]$ make r1.s
/export/b
On 01/19/2018 10:14 AM, Martin Sebor wrote:
On 01/14/2018 07:29 AM, H.J. Lu wrote:
When address of packed member of struct or union is taken, it may result
in an unaligned pointer value. This patch adds
-Waddress-of-packed-member
to warn it:
$ cat x.i
struct pair_t
{
char c;
int i;
} __att
On 01/14/2018 07:29 AM, H.J. Lu wrote:
When address of packed member of struct or union is taken, it may result
in an unaligned pointer value. This patch adds -Waddress-of-packed-member
to warn it:
$ cat x.i
struct pair_t
{
char c;
int i;
} __attribute__ ((packed));
extern struct pair_t p;
inst the field alignment.
--
H.J.
From 54b68f11c18971d1371d5bb5bde7b0c1d3e6ee7b Mon Sep 17 00:00:00 2001
From: "H.J. Lu"
Date: Fri, 12 Jan 2018 21:12:05 -0800
Subject: [PATCH] C/C++: Add -Waddress-of-packed-member
When address of packed member of struct or union is taken, it may re
r. OK for trunk?
--
H.J.
From 2a26ed809f7af5f52a24367bfa0b29898ac7fa87 Mon Sep 17 00:00:00 2001
From: "H.J. Lu"
Date: Fri, 12 Jan 2018 21:12:05 -0800
Subject: [PATCH] C/C++: Add -Waddress-of-packed-member
When address of packed member of struct or union is taken, it may result
in an u
On Sun, Jan 14, 2018 at 06:29:54AM -0800, H.J. Lu wrote:
> + if (TREE_CODE (field) == FIELD_DECL && DECL_PACKED (field))
> + {
> + tree field_type = TREE_TYPE (field);
> + unsigned int type_align = TYPE_ALIGN (field_type);
> + tree context = DECL_CONTEXT
When address of packed member of struct or union is taken, it may result
in an unaligned pointer value. This patch adds -Waddress-of-packed-member
to warn it:
$ cat x.i
struct pair_t
{
char c;
int i;
} __attribute__ ((packed));
extern struct pair_t p;
int *addr = &p.i;
$ gcc -O2 -S x.i
x.i:8
42 matches
Mail list logo