[Bug target/68456] UINT32_TYPE is long unsigned for 32bit targets

2015-11-20 Thread dmitry.polukhin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68456

Dmitry Polukhin  changed:

   What|Removed |Added

 CC||dmitry.polukhin at gmail dot 
com

--- Comment #4 from Dmitry Polukhin  ---
What is the advantage of using 'long' instead of 'int' for uint32_t on a
platform where both types can be used (i.e. actually they have the same size)?

GLibC uses 'int', it better matches user expectations and, if using 'long'
doesn't make other advantages, it makes compatibility issues without giving
benefits. So just curious in rationale behind using 'long' instead of 'int'.

[Bug c++/71712] New: Redundant ABI tags for conversion operator

2016-06-30 Thread dmitry.polukhin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71712

Bug ID: 71712
   Summary: Redundant ABI tags for conversion operator
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dmitry.polukhin at gmail dot com
  Target Milestone: ---

Reproducer:
struct __attribute__((abi_tag("A", "B"))) A { };
struct A18 {
  operator A() { return A(); }
};
void f18_test() {
  A a = A18();
}

Mangling for 'A18::operator A' is '_ZN3A18cv1AB1AB1BB1AB1Bev' pretty printed as
' A18::operator A[abi:A][abi:B][abi:A][abi:B]()' i.e. the same tags mentioned
twice for the name. It seems that GCC adds implicit tags from the return type
of the function but in all other cases they are added only if the tags are
missing otherwise in the mangled name that is not the case in given example.