re PR c++/33819 (Miscompiled shift of C++ bitfield)
2008-01-16 Richard Guenther <rguenther@suse.de> PR c++/33819 * typeck.c (is_bitfield_expr_with_lowered_type): Recurse for conversions to type variants. * g++.dg/torture/pr33819.C: New testcase. From-SVN: r131569
This commit is contained in:
parent
eb1387a051
commit
be2b548394
@ -1,3 +1,9 @@
|
||||
2008-01-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR c++/33819
|
||||
* typeck.c (is_bitfield_expr_with_lowered_type): Recurse
|
||||
for conversions to type variants.
|
||||
|
||||
2008-01-15 Andreas Tobler <a.tobler@schweiz.org>
|
||||
|
||||
* parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
|
||||
|
@ -1445,6 +1445,13 @@ is_bitfield_expr_with_lowered_type (const_tree exp)
|
||||
return DECL_BIT_FIELD_TYPE (field);
|
||||
}
|
||||
|
||||
case NOP_EXPR:
|
||||
case CONVERT_EXPR:
|
||||
if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (exp, 0)))
|
||||
== TYPE_MAIN_VARIANT (TREE_TYPE (exp)))
|
||||
return is_bitfield_expr_with_lowered_type (TREE_OPERAND (exp, 0));
|
||||
/* Fallthrough. */
|
||||
|
||||
default:
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-01-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR c++/33819
|
||||
* g++.dg/torture/pr33819.C: New testcase.
|
||||
|
||||
2008-01-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR c/34768
|
||||
|
22
gcc/testsuite/g++.dg/torture/pr33819.C
Normal file
22
gcc/testsuite/g++.dg/torture/pr33819.C
Normal file
@ -0,0 +1,22 @@
|
||||
/* { dg-do run } */
|
||||
|
||||
class s
|
||||
{
|
||||
public:
|
||||
s(long long aa) : a(aa), i1(0) { }
|
||||
long long id() const { return (this->a << 16) >> 16; }
|
||||
bool operator< (s sv) { return this->a < sv.id(); }
|
||||
private:
|
||||
long long a : 48;
|
||||
int i1 : 16;
|
||||
};
|
||||
s g(1);
|
||||
extern "C" void abort (void);
|
||||
int
|
||||
main(int, char**)
|
||||
{
|
||||
if (g < (1LL << 38) - 1)
|
||||
return 0;
|
||||
abort ();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user