Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Unified Diff: gdb/testsuite/gdb.cp/converts.cc

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/testsuite/gdb.cp/cmpd-minsyms.exp ('k') | gdb/testsuite/gdb.cp/converts.exp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/testsuite/gdb.cp/converts.cc
diff --git a/gdb/testsuite/gdb.cp/converts.cc b/gdb/testsuite/gdb.cp/converts.cc
index 26a45f552086fc71119910884ce8b87ec8e9cf42..ecf806481fdffc6abb19180fa200a9b5b433494c 100644
--- a/gdb/testsuite/gdb.cp/converts.cc
+++ b/gdb/testsuite/gdb.cp/converts.cc
@@ -1,10 +1,21 @@
-class A {};
+class A
+{
+public:
+ A() : member_ (0) {};
+ int member_;
+};
class B : public A {};
typedef A TA1;
typedef A TA2;
typedef TA2 TA3;
+enum my_enum {MY_A, MY_B, MY_C, MY_D};
+
+/* Without this variable older 'enum my_enum' incl. its 'MY_A' would be omitted
+ by older versions of GCC (~4.1) failing the testcase using it below. */
+enum my_enum my_enum_var;
+
int foo0_1 (TA1) { return 1; }
int foo0_2 (TA3) { return 2; }
int foo0_3 (A***) { return 3; }
@@ -27,6 +38,10 @@ int foo3_1 (int a, const char **b) { return 31; }
int foo3_2 (int a, int b) { return 32; }
int foo3_2 (int a, const char **b) { return 320; }
+int foo1_type_check (char *a) { return 1000; }
+int foo2_type_check (char *a, char *b) { return 1001; }
+int foo3_type_check (char *a, char *b, char *c) { return 1002; }
+
int main()
{
@@ -38,7 +53,8 @@ int main()
//foo0_3(bppp); // Pointer-to-pointer-to-pointer base.
foo0_3((A***)bppp); // to ensure that the function is emitted.
- char *a; // pointer to..
+ char av = 'a';
+ char *a = &av; // pointer to..
B *bp;
foo1_1 (a); // ..pointer
foo1_2 (a); // ..array
@@ -58,9 +74,36 @@ int main()
foo2_3 (b); // ..array of pointers
foo2_4 ((int**)b); // ..array of wrong pointers
+ // X to boolean conversions allowed by the standard
+ int integer = 0;
+ long long_int = 1;
+ float fp = 1.0;
+ double dp = 1.0;
+ foo1_7 (integer); // integer to boolean
+ foo1_7 (long_int); // long to boolean
+ foo1_7 (*a); // char to boolean
+ foo1_7 (MY_A); // unscoped enum to boolean
+ /* converts.exp tests the next statement directly. It is not compiled
+ here for verification because older versions of GCC (~4.1) fail to
+ compile it:
+
+ warning: the address of 'int foo1_7(bool)' will always evaluate as true
+
+ foo1_7 (&foo1_7); // pointer to boolean
+ */
+
+ foo1_7 (&A::member_); // pointer to member to boolean
+ foo1_7 (a); // pointer to boolean
+ foo1_7 (fp); // float to boolean
+ foo1_7 (dp); // double to boolean
+
foo3_1 (0, 0);
foo3_2 (0, static_cast<char const**> (0));
foo3_2 (0, 0);
+ foo1_type_check (a);
+ foo2_type_check (a, a);
+ foo3_type_check (a, a, a);
+
return 0; // end of main
}
« no previous file with comments | « gdb/testsuite/gdb.cp/cmpd-minsyms.exp ('k') | gdb/testsuite/gdb.cp/converts.exp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698