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) ==
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
*/
while (handled_component_p (rhs))
{
if (TREE_CODE (rhs) == COMPONENT_REF)
{
tree field = TREE_OPERAND (rhs, 1);
context = check_alignment_of_packed_member (type, field);
if (context)
break;
}
rhs = TREE_OPERAND (rhs, 0);
}
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
: (q2 ? (*q1 = >i, *q2 = 2, >i): q2);
> }
> [hjl@gnu-cfl-1 pr51628-5]$
> /export/build/gnu/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 c.i
> c.i: In function \u2018foo3\u2019:
> c.i:8:20: warn
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
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 =
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
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
? (*q2 = 2, >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, >i) : (q2 ? (*q2 = 2, >i): q2);
|
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
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
(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 through them as well?
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
ld-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 pointer value [-Waddress-of-packed
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
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
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.
address_p isn't an appropriate parameter name. I changed it to convert_p
to
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)
+{
+ /*
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
or_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
Subject: [PAT
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));
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
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’:
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
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
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
>
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;
}
ct A *p)
> {
> return p->i;
> }
>
> we shouldn't warn:
>
> [hjl@gnu-tools-1 pr51628]$ cat a1.i
> struct A {
> int i;
> } __attribute__ ((packed));
>
> int f (struct A *p)
> {
> return *>i;
> }
> [hjl@gnu-tools-1 pr51628]$
>
> There is no unaligned load
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
}
[hjl@gnu-tools-1 pr51628]$ make r1.s
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -S r1.ii
r1.ii: In function ‘int* g(A&)’:
r1.ii:7:15: error: cannot bind packed field ‘r.A::i’ to ‘int&’
int = r.i; // missing warning here
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;
}
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
ecking the expected alignment against the field alignment.
--
H.J.
From 54b68f11c18971d1371d5bb5bde7b0c1d3e6ee7b Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.to...@gmail.com>
Date: Fri, 12 Jan 2018 21:12:05 -0800
Subject: [PATCH] C/C++: Add -Waddress-of-packed-member
tion wrapper. OK for trunk?
--
H.J.
From 2a26ed809f7af5f52a24367bfa0b29898ac7fa87 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.to...@gmail.com>
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
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 =
$ gcc -O2 -S x.i
x.i:8:13:
42 matches
Mail list logo