Hello, after upgrading to new   Harfbuzz 1.7.1  the openjdk build fails on AIX.

I created the following bug :
https://bugs.openjdk.java.net/browse/JDK-8193515

The compile  error we get on AIX  (using XLC 12.1) is :

=== Output from failing command(s) repeated here ===
* For target 
support_native_java.desktop_libfontmanager_hb-ot-shape-complex-arabic.o:
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh",
 line 80.3: 1540-0218 (S) The call does not match any parameter list for 
"hb_stable_sort".
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh", line 
723.1: 1540-1283 (I) "template <class T, class T2> hb_stable_sort(T *, unsigned 
int, int (*)(const T *, const T *), T2 *)" is not a viable candidate.
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh",
 line 80.43: 1540-0298 (I) Template argument deduction cannot be performed 
using the function "template int cmp(Type2) const".
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh", line 
748.1: 1540-1283 (I) "template <class T> hb_stable_sort(T *, unsigned int, int 
(*)(const T *, const T *))" is not a viable candidate.
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh",
 line 80.3: 1540-0215 (I) The wrong number of arguments has been specified for 
"template <class T> hb_stable_sort(T *, unsigned int, int (*)(const T *, const 
T *))".

"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh",
 line 129.3: 1540-0218 (S) The call does not match any parameter list for 
"hb_stable_sort".
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh", line 
723.1: 1540-1283 (I) "template <class T, class T2> hb_stable_sort(T *, unsigned 
int, int (*)(const T *, const T *), T2 *)" is not a viable candidate.
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh",
 line 129.55: 1540-0298 (I) Template argument deduction cannot be performed 
using the function "template int cmp(Type2) const".
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh", line 
748.1: 1540-1283 (I) "template <class T> hb_stable_sort(T *, unsigned int, int 
(*)(const T *, const T *))" is not a viable candidate.
"        
/jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh",
 line 129.3: 1540-0215 (I) The wrong number of arguments has been specified for 
"template <class T> hb_stable_sort(T *, unsigned int, int (*)(const T *, const 
T *))".

The compilation "complains"  about the hb_stable_sort template used in 
hb-ot-shape-complex-arabic-fallback.hh .  After looking a bit into this , the 
third parameter
      OT::GlyphID::cmp
of
     hb_stable_sort (&glyphs[0], num_glyphs, OT::GlyphID::cmp, &substitutes[0]);

seems to trigger this XLC 12 issue .
XLC 12 does not like the fact that  we have two cmp functions (one a template)  
in

hb-open-type-private.hh  :

610 template <typename Type, unsigned int Size>
611 struct IntType
612 {
....
617   static inline int cmp (const IntType<Type,Size> *a, const 
IntType<Type,Size> *b) { return b->cmp (*a); }
622
 623   template <typename Type2>
624   inline int cmp (Type2 a) const
625   {

( GlyphID is an IntType )
This looks like an  XLC bug, however it is pretty easy to workaround it by 
using  a helper compare-function with a unique name (issue with cmp is that it 
is not unique, that confuses XLC ).
See this webrev :

http://cr.openjdk.java.net/~mbaesken/webrevs/8193515/

Please review it.


Thanks, Matthias

Reply via email to