Skip to content

Commit 56a926d

Browse files
GCC-XMLbradking
authored andcommitted
gccxml 2009-05-19 (a92214b2)
1 parent a6ba22c commit 56a926d

27 files changed

+640
-426
lines changed

GCC/gcc/config/i386/winnt-cxx.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,28 @@ i386_pe_type_dllexport_p (tree decl)
117117

118118
static inline void maybe_add_dllimport (tree decl)
119119
{
120+
/* BEGIN GCC-XML MODIFICATIONS 2009-04-24 */
121+
/* Somehow dllimport ends up on the VAR_DECL for the 'B' vtable:
122+
123+
class A {};
124+
struct __attribute__((dllimport)) B: virtual public A { ~B() {} };
125+
126+
Then 'maybe_emit_vtables' calls 'store_init_value' which eventually
127+
calls 'initializer_constant_valid_p' and 'staticp'. The
128+
DECL_DLLIMPORT_P mark requires runtime initialization of the
129+
vtable, which is not allowed, and results in an ICE.
130+
131+
There is code in "class.c" which removes the dllimport attribute
132+
but it never seems to be called for the vtable VAR_DECL. We
133+
workaround the problem for gccxml by disabling the mark altogether,
134+
as it seems to be used only for code generation. */
135+
#if 0
120136
if (i386_pe_type_dllimport_p (decl))
121137
DECL_DLLIMPORT_P (decl) = 1;
138+
#else
139+
(void)decl;
140+
#endif
141+
/* END GCC-XML MODIFICATIONS 2009-04-24 */
122142
}
123143

124144
void

GCC/gcc/cp/decl2.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,13 +1159,13 @@ coerce_new_type (tree type)
11591159
e = 2;
11601160
if (args && args != void_list_node)
11611161
args = TREE_CHAIN (args);
1162-
/* BEGIN GCC-XML MODIFICATIONS (2009/03/02 14:29:19) */
1162+
/* BEGIN GCC-XML MODIFICATIONS (2009/03/03 16:31:15) */
11631163
/* Ignore whether the native compiler breaks the operator new signature. */
11641164
#if 0
11651165
pedwarn ("%<operator new%> takes type %<size_t%> (%qT) "
11661166
"as first parameter", size_type_node);
11671167
#endif
1168-
/* END GCC-XML MODIFICATIONS (2009/03/02 14:29:19) */
1168+
/* END GCC-XML MODIFICATIONS (2009/03/03 16:31:15) */
11691169
}
11701170
switch (e)
11711171
{
@@ -3498,7 +3498,9 @@ mark_used (tree decl)
34983498

34993499
/* BEGIN GCC-XML MODIFICATIONS 2008-03-02 */
35003500
if(diagnostic_xml_synthesize_test &&
3501-
TREE_CODE (decl) == FUNCTION_DECL && GCCXML_DECL_ERROR (decl))
3501+
((TREE_CODE (decl) == FUNCTION_DECL && GCCXML_DECL_ERROR (decl)) ||
3502+
(DECL_CLONED_FUNCTION_P (decl) &&
3503+
GCCXML_DECL_ERROR (DECL_CLONED_FUNCTION (decl)))))
35023504
{
35033505
/* This is a method synth test and we recursively encountered a
35043506
previously synthesized invalid method. */

GCC_XML/KWSys/Base64.h.in

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424
# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
2525
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
2626
#endif
27-
#define kwsysBase64 kwsys_ns(Base64)
28-
#define kwsysBase64_Decode kwsys_ns(Base64_Decode)
29-
#define kwsysBase64_Decode3 kwsys_ns(Base64_Decode3)
30-
#define kwsysBase64_Encode kwsys_ns(Base64_Encode)
31-
#define kwsysBase64_Encode1 kwsys_ns(Base64_Encode1)
32-
#define kwsysBase64_Encode2 kwsys_ns(Base64_Encode2)
33-
#define kwsysBase64_Encode3 kwsys_ns(Base64_Encode3)
27+
#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
28+
# define kwsysBase64 kwsys_ns(Base64)
29+
# define kwsysBase64_Decode kwsys_ns(Base64_Decode)
30+
# define kwsysBase64_Decode3 kwsys_ns(Base64_Decode3)
31+
# define kwsysBase64_Encode kwsys_ns(Base64_Encode)
32+
# define kwsysBase64_Encode1 kwsys_ns(Base64_Encode1)
33+
# define kwsysBase64_Encode2 kwsys_ns(Base64_Encode2)
34+
# define kwsysBase64_Encode3 kwsys_ns(Base64_Encode3)
35+
#endif
3436

3537
#if defined(__cplusplus)
3638
extern "C"
@@ -106,13 +108,15 @@ kwsysEXPORT unsigned long kwsysBase64_Decode(const unsigned char *input,
106108
#if !defined(KWSYS_NAMESPACE)
107109
# undef kwsys_ns
108110
# undef kwsysEXPORT
109-
# undef kwsysBase64
110-
# undef kwsysBase64_Decode
111-
# undef kwsysBase64_Decode3
112-
# undef kwsysBase64_Encode
113-
# undef kwsysBase64_Encode1
114-
# undef kwsysBase64_Encode2
115-
# undef kwsysBase64_Encode3
111+
# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
112+
# undef kwsysBase64
113+
# undef kwsysBase64_Decode
114+
# undef kwsysBase64_Decode3
115+
# undef kwsysBase64_Encode
116+
# undef kwsysBase64_Encode1
117+
# undef kwsysBase64_Encode2
118+
# undef kwsysBase64_Encode3
119+
# endif
116120
#endif
117121

118122
#endif

GCC_XML/KWSys/CommandLineArguments.cxx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ unsigned int CommandLineArguments::GetLastArgument()
521521
void CommandLineArguments::GenerateHelp()
522522
{
523523
kwsys_ios::ostringstream str;
524-
524+
525525
// Collapse all arguments into the map of vectors of all arguments that do
526526
// the same thing.
527527
CommandLineArguments::Internal::CallbacksMap::iterator it;
@@ -660,7 +660,7 @@ void CommandLineArguments::GenerateHelp()
660660
skip = cc;
661661
}
662662
}
663-
str.write(ptr, skip);
663+
str.write(ptr, static_cast<kwsys_ios::streamsize>(skip));
664664
str << kwsys_ios::endl;
665665
ptr += skip;
666666
len -= skip;
@@ -701,7 +701,7 @@ void CommandLineArguments::PopulateVariable(
701701
int* variable, const kwsys_stl::string& value)
702702
{
703703
char* res = 0;
704-
*variable = strtol(value.c_str(), &res, 10);
704+
*variable = static_cast<int>(strtol(value.c_str(), &res, 10));
705705
//if ( res && *res )
706706
// {
707707
// Can handle non-int
@@ -759,7 +759,7 @@ void CommandLineArguments::PopulateVariable(
759759
kwsys_stl::vector<int>* variable, const kwsys_stl::string& value)
760760
{
761761
char* res = 0;
762-
variable->push_back(strtol(value.c_str(), &res, 10));
762+
variable->push_back(static_cast<int>(strtol(value.c_str(), &res, 10)));
763763
//if ( res && *res )
764764
// {
765765
// Can handle non-int

GCC_XML/KWSys/Configure.h.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
2323
#endif
2424

25+
/* Whether kwsys namespace is "kwsys". */
26+
#define @KWSYS_NAMESPACE@_NAME_IS_KWSYS @KWSYS_NAME_IS_KWSYS@
27+
2528
/* If we are building a kwsys .c or .cxx file, suppress the Microsoft
2629
deprecation warnings. */
2730
#if defined(KWSYS_NAMESPACE)

GCC_XML/KWSys/Configure.hxx.in

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
/* Include C configuration. */
1818
#include <@KWSYS_NAMESPACE@/Configure.h>
1919

20-
/* Whether kwsys namespace is "kwsys". */
21-
#define @KWSYS_NAMESPACE@_NAME_IS_KWSYS @KWSYS_NAME_IS_KWSYS@
22-
2320
/* Whether ANSI C++ stream headers are to be used. */
2421
#define @KWSYS_NAMESPACE@_IOS_USE_ANSI @KWSYS_IOS_USE_ANSI@
2522

GCC_XML/KWSys/FundamentalType.h.in

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,18 @@
2424
# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
2525
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
2626
#endif
27-
#define kwsysFundamentalType kwsys_ns(FundamentalType)
28-
#define kwsysFundamentalType_Int8 kwsys_ns(FundamentalType_Int8)
29-
#define kwsysFundamentalType_UInt8 kwsys_ns(FundamentalType_UInt8)
30-
#define kwsysFundamentalType_Int16 kwsys_ns(FundamentalType_Int16)
31-
#define kwsysFundamentalType_UInt16 kwsys_ns(FundamentalType_UInt16)
32-
#define kwsysFundamentalType_Int32 kwsys_ns(FundamentalType_Int32)
33-
#define kwsysFundamentalType_UInt32 kwsys_ns(FundamentalType_UInt32)
34-
#define kwsysFundamentalType_Int64 kwsys_ns(FundamentalType_Int64)
35-
#define kwsysFundamentalType_UInt64 kwsys_ns(FundamentalType_UInt64)
27+
28+
#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
29+
# define kwsysFundamentalType kwsys_ns(FundamentalType)
30+
# define kwsysFundamentalType_Int8 kwsys_ns(FundamentalType_Int8)
31+
# define kwsysFundamentalType_UInt8 kwsys_ns(FundamentalType_UInt8)
32+
# define kwsysFundamentalType_Int16 kwsys_ns(FundamentalType_Int16)
33+
# define kwsysFundamentalType_UInt16 kwsys_ns(FundamentalType_UInt16)
34+
# define kwsysFundamentalType_Int32 kwsys_ns(FundamentalType_Int32)
35+
# define kwsysFundamentalType_UInt32 kwsys_ns(FundamentalType_UInt32)
36+
# define kwsysFundamentalType_Int64 kwsys_ns(FundamentalType_Int64)
37+
# define kwsysFundamentalType_UInt64 kwsys_ns(FundamentalType_UInt64)
38+
#endif
3639

3740
/* The size of fundamental types. Types that do not exist have size 0. */
3841
#define @KWSYS_NAMESPACE@_SIZEOF_CHAR @KWSYS_SIZEOF_CHAR@
@@ -114,15 +117,17 @@ typedef unsigned __int64 kwsysFundamentalType_UInt64;
114117
#if !defined(KWSYS_NAMESPACE)
115118
# undef kwsys_ns
116119
# undef kwsysEXPORT
117-
# undef kwsysFundamentalType
118-
# undef kwsysFundamentalType_Int8
119-
# undef kwsysFundamentalType_UInt8
120-
# undef kwsysFundamentalType_Int16
121-
# undef kwsysFundamentalType_UInt16
122-
# undef kwsysFundamentalType_Int32
123-
# undef kwsysFundamentalType_UInt32
124-
# undef kwsysFundamentalType_Int64
125-
# undef kwsysFundamentalType_UInt64
120+
# if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
121+
# undef kwsysFundamentalType
122+
# undef kwsysFundamentalType_Int8
123+
# undef kwsysFundamentalType_UInt8
124+
# undef kwsysFundamentalType_Int16
125+
# undef kwsysFundamentalType_UInt16
126+
# undef kwsysFundamentalType_Int32
127+
# undef kwsysFundamentalType_UInt32
128+
# undef kwsysFundamentalType_Int64
129+
# undef kwsysFundamentalType_UInt64
130+
# endif
126131
#endif
127132

128133
/* If building a C or C++ file in kwsys itself, give the source file

GCC_XML/KWSys/Glob.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -380,13 +380,13 @@ bool Glob::FindFiles(const kwsys_stl::string& inexpr)
380380
}
381381
kwsys_stl::string fexpr = expr;
382382

383-
int skip = 0;
384-
int last_slash = 0;
383+
kwsys_stl::string::size_type skip = 0;
384+
kwsys_stl::string::size_type last_slash = 0;
385385
for ( cc = 0; cc < expr.size(); cc ++ )
386386
{
387387
if ( cc > 0 && expr[cc] == '/' && expr[cc-1] != '\\' )
388388
{
389-
last_slash = static_cast<int>(cc);
389+
last_slash = cc;
390390
}
391391
if ( cc > 0 &&
392392
(expr[cc] == '[' || expr[cc] == '?' || expr[cc] == '*') &&

GCC_XML/KWSys/MD5.h.in

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,17 @@
2424
# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
2525
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
2626
#endif
27-
#define kwsysMD5 kwsys_ns(MD5)
28-
#define kwsysMD5_s kwsys_ns(MD5_s)
29-
#define kwsysMD5_New kwsys_ns(MD5_New)
30-
#define kwsysMD5_Delete kwsys_ns(MD5_Delete)
31-
#define kwsysMD5_Initialize kwsys_ns(MD5_Initialize)
32-
#define kwsysMD5_Append kwsys_ns(MD5_Append)
33-
#define kwsysMD5_Finalize kwsys_ns(MD5_Finalize)
34-
#define kwsysMD5_FinalizeHex kwsys_ns(MD5_FinalizeHex)
35-
#define kwsysMD5_DigestToHex kwsys_ns(MD5_DigestToHex)
27+
#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
28+
# define kwsysMD5 kwsys_ns(MD5)
29+
# define kwsysMD5_s kwsys_ns(MD5_s)
30+
# define kwsysMD5_New kwsys_ns(MD5_New)
31+
# define kwsysMD5_Delete kwsys_ns(MD5_Delete)
32+
# define kwsysMD5_Initialize kwsys_ns(MD5_Initialize)
33+
# define kwsysMD5_Append kwsys_ns(MD5_Append)
34+
# define kwsysMD5_Finalize kwsys_ns(MD5_Finalize)
35+
# define kwsysMD5_FinalizeHex kwsys_ns(MD5_FinalizeHex)
36+
# define kwsysMD5_DigestToHex kwsys_ns(MD5_DigestToHex)
37+
#endif
3638

3739
#if defined(__cplusplus)
3840
extern "C"
@@ -91,15 +93,17 @@ kwsysEXPORT void kwsysMD5_DigestToHex(unsigned char const digest[16],
9193
#if !defined(KWSYS_NAMESPACE)
9294
# undef kwsys_ns
9395
# undef kwsysEXPORT
94-
# undef kwsysMD5
95-
# undef kwsysMD5_s
96-
# undef kwsysMD5_New
97-
# undef kwsysMD5_Delete
98-
# undef kwsysMD5_Initialize
99-
# undef kwsysMD5_Append
100-
# undef kwsysMD5_Finalize
101-
# undef kwsysMD5_FinalizeHex
102-
# undef kwsysMD5_DigestToHex
96+
# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
97+
# undef kwsysMD5
98+
# undef kwsysMD5_s
99+
# undef kwsysMD5_New
100+
# undef kwsysMD5_Delete
101+
# undef kwsysMD5_Initialize
102+
# undef kwsysMD5_Append
103+
# undef kwsysMD5_Finalize
104+
# undef kwsysMD5_FinalizeHex
105+
# undef kwsysMD5_DigestToHex
106+
# endif
103107
#endif
104108

105109
#endif

0 commit comments

Comments
 (0)