[cfe-dev] WebKit Template Errors

Keaton Mowery kmowery at cs.ucsd.edu
Tue Apr 17 12:53:18 PDT 2012


Hello all,

I'm attempting to compile WebKit with LLVM/Clang HEAD on OSX, and have
been running into a template issue for a few weeks now. I've confirmed
that the issue still exists with LLVM/Clang r154897 and WebKit
r114333. The compile error is copied at the end of this mail.

WebKit does build with clang 3.1 (tags/Apple/clang-318.0.50), as
shipping on OSX Lion, so I'm mystified as to what this error could be.
 However, we've found that this error occurs in every LLVM build we
tested from the past few months. The only building revisions that
we've found are LLVM r147810 and WebKit r104613 (with some buildfile
modifications).

Any thoughts? Thank you!

Keaton Mowery


$ CC=${LLVMDIR}/build/Debug+Asserts/bin/clang
CXX=${LLVMDIR}/build/Debug+Asserts/bin/clang
./Tools/Scripts/build-webkit -verbose

[snip]

CompileC /Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/RegExpCache.o
runtime/RegExpCache.cpp normal x86_64 c++
com.apple.compilers.llvm.clang.1_0.compiler
   cd /Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore
   setenv LANG en_US.US-ASCII
   /Users/kmowery/src/builds/llvm-svn/build/Debug+Asserts/bin/clang
-x c++ -arch x86_64 -fmessage-length=0 -stdlib=libc++ -Wno-trigraphs
-fno-exceptions -fno-rtti -fpascal-strings -O3 -Werror
-Wno-missing-field-initializers -Wmissing-prototypes -Wno-return-type
-Wnon-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors
-Wformat -Wno-missing-braces -Wparentheses -Wswitch
-Wno-unused-function -Wno-unused-label -Wno-unused-parameter
-Wno-unused-variable -Wunused-value -Wno-uninitialized
-Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants
-Wno-sign-compare -Wno-shorten-64-to-32 -Wnewline-eof
-Wno-c++11-extensions -DNDEBUG -DHAVE_DTRACE=1
-DWEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST
-DHAVE_HEADER_DETECTION_H -fasm-blocks -fstrict-aliasing
-Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.7
-g -fvisibility=hidden -fvisibility-inlines-hidden
-fno-threadsafe-statics -Wno-conversion -Wno-sign-conversion
-I/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore.hmap
-I/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/include
-I/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore
-I. -Iicu -I/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include
-I/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources/x86_64
-I/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources
-Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2
-Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked
-Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings
-Wglobal-constructors -Wexit-time-destructors
-F/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release -include
/var/folders/2j/4dcc9sy915z774w9789765p00000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/JavaScriptCorePrefix-bplalzeqwpttrlfzumvgbncwslco/JavaScriptCorePrefix.h
-MMD -MT dependencies -MF
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/RegExpCache.d
--serialize-diagnostics
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/RegExpCache.dia
-c /Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/RegExpCache.cpp
-o /Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/RegExpCache.o
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/RegExpCache.cpp:30:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/RegExpCache.h:28:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/RegExp.h:28:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/Structure.h:29:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/ClassInfo.h:26:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/interpreter/CallFrame.h:27:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/JSGlobalData.h:32:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/CachedTranscendentalFunction.h:29:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/JSValue.h:31:
In file included from
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include/wtf/HashMap.h:24:
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include/wtf/HashTable.h:653:36:
error: no matching constructor for initialization of
'std::__1::pair<JSC::RegExpKey, JSC::Weak<JSC::RegExp> >'
           new (NotNull, &bucket) Value(Traits::emptyValue());
                                  ^     ~~~~~~~~~~~~~~~~~~~~
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include/wtf/HashTable.h:670:9:
note: in instantiation of function template specialization
'WTF::HashTableBucketInitializer<false>::initialize<WTF::PairHashTraits<WTF::HashTraits<JSC::RegExpKey>,
WTF::HashTraits<JSC::Weak<JSC::RegExp> > >,
std::__1::pair<JSC::RegExpKey, JSC::Weak<JSC::RegExp> > >' requested
here
       HashTableBucketInitializer<Traits::emptyValueIsZero>::template
initialize<Traits>(bucket);
       ^
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include/wtf/HashTable.h:733:13:
note: in instantiation of member function
'WTF::HashTable<JSC::RegExpKey, std::__1::pair<JSC::RegExpKey,
JSC::Weak<JSC::RegExp> >,
WTF::PairFirstExtractor<std::__1::pair<JSC::RegExpKey,
JSC::Weak<JSC::RegExp> > >, WTF::RegExpHash<JSC::RegExpKey>,
WTF::PairHashTraits<WTF::HashTraits<JSC::RegExpKey>,
WTF::HashTraits<JSC::Weak<JSC::RegExp> > >,
WTF::HashTraits<JSC::RegExpKey> >::initializeBucket' requested here
           initializeBucket(*deletedEntry);
           ^
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include/wtf/HashMap.h:326:32:
note: in instantiation of function template specialization
'WTF::HashTable<JSC::RegExpKey, std::__1::pair<JSC::RegExpKey,
JSC::Weak<JSC::RegExp> >,
WTF::PairFirstExtractor<std::__1::pair<JSC::RegExpKey,
JSC::Weak<JSC::RegExp> > >, WTF::RegExpHash<JSC::RegExpKey>,
WTF::PairHashTraits<WTF::HashTraits<JSC::RegExpKey>,
WTF::HashTraits<JSC::Weak<JSC::RegExp> > >,
WTF::HashTraits<JSC::RegExpKey>
>::add<WTF::HashMapTranslator<WTF::PairHashTraits<WTF::HashTraits<JSC::RegExpKey>,
WTF::HashTraits<JSC::Weak<JSC::RegExp> > >,
WTF::RegExpHash<JSC::RegExpKey> >, JSC::RegExpKey,
JSC::PassWeak<JSC::RegExp> >' requested here
       return m_impl.template add<HashMapTranslator<ValueTraits,
HashFunctions> >(key, mapped);
                              ^
/Users/kmowery/src/builds/webkit/WebKit/WebKitBuild/Release/usr/local/include/wtf/HashMap.h:353:16:
note: in instantiation of member function
'WTF::HashMap<JSC::RegExpKey, JSC::Weak<JSC::RegExp>,
WTF::RegExpHash<JSC::RegExpKey>, WTF::HashTraits<JSC::RegExpKey>,
WTF::HashTraits<JSC::Weak<JSC::RegExp> > >::inlineAdd' requested here
       return inlineAdd(key, mapped);
              ^
/Users/kmowery/src/builds/webkit/WebKit/Source/JavaScriptCore/runtime/RegExpCache.cpp:49:17:
note: in instantiation of member function
'WTF::HashMap<JSC::RegExpKey, JSC::Weak<JSC::RegExp>,
WTF::RegExpHash<JSC::RegExpKey>, WTF::HashTraits<JSC::RegExpKey>,
WTF::HashTraits<JSC::Weak<JSC::RegExp> > >::add' requested here
   m_weakCache.add(key, PassWeak<RegExp>(*m_globalData, regExp, this));
               ^
/usr/include/c++/v1/utility:200:24: note: candidate constructor (the
implicit copy constructor) not viable: no known conversion from
'EmptyValueType' (aka 'pair<typename FirstTraits::EmptyValueType,
typename SecondTraits::EmptyValueType>') to 'const
std::__1::pair<JSC::RegExpKey, JSC::Weak<JSC::RegExp> >' for 1st
argument;
struct _LIBCPP_VISIBLE pair
                      ^
/usr/include/c++/v1/utility:215:9: note: candidate template ignored:
substitution failure [with _U1 = JSC::RegExpKey, _U2 =
std::__1::nullptr_t]
       pair(const pair<_U1, _U2>& __p,
       ^
/usr/include/c++/v1/utility:208:31: note: candidate constructor not
viable: requires 0 arguments, but 1 was provided
   _LIBCPP_INLINE_VISIBILITY pair() : first(), second() {}
                             ^
/usr/include/c++/v1/utility:210:31: note: candidate constructor not
viable: requires 2 arguments, but 1 was provided
   _LIBCPP_INLINE_VISIBILITY pair(const _T1& __x, const _T2& __y)
                             ^
1 error generated.



More information about the cfe-dev mailing list