https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89549

            Bug ID: 89549
           Summary: -Wmisleading-indentation is disabled from this point
                    onwards, since column-tracking was disabled due to the
                    size of the code/headers
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---

Seen on a test-case that is not having many lines, but one line is very wide:

$ cat mi.ii
                                                              class String {   
           public:                                              bool
operator==(char *) const;      bool operator!=(char *) ;                       
                                                                               
                                                                               
                                                                               
         String() ;     String(char *);     };
      class StringName {     public:                                    
StringName(char *);         };
             template <class a> class List {    public:   void push_back( a ) ;
};
         class Variant { public:  enum b {   NIL}  ;               };
      enum c {  PROPERTY_HINT_NONE};
      enum {                  PROPERTY_USAGE_CATEGORY                          
     };
      struct PropertyInfo {                       PropertyInfo(Variant::b ,
String , c ,  String , int )  ;     };
            class Object {     protected:    static String _get_category() ;   
void  _set() ;  bool _get( StringName , Variant ) const ;  void
_get_property_list(List<PropertyInfo> *) const ;  void _notification();        
          static void _get_valid_parents_static(List<String> *)                
   ;     bool _is_gpl_reversed() const                                         
                                                                             ; 
                           };
                       class ClassDB {  public:  template <class >  void
_add_class() ;              static void get_property_list(StringName ,
List<PropertyInfo> *, bool , const Object * );                                 
                             };
      class d : public Object {     protected:  static void _bind_methods(); };
                       class AudioStreamPlayback : public d {    public:   
static String get_class_static() ;   bool is_class( String ) const ; bool
is_class_ptr(void *) const ; static void *_get_bind_methods() ; static void
initialize_class() ; bool (Object::*_get_get() const)(const StringName &,
Variant &) const ; bool _getv( StringName , Variant ) const ;  bool
(Object::*_get_set() )(const StringName &, const Variant &) ; bool _setv(
StringName ,  Variant ) ;  void (Object::*_get_get_property_list()
const)(List<PropertyInfo> * ) const ; void
_get_property_listv(List<PropertyInfo> *, bool ) const ;    };
         String get_category_static_category ;
   class AudioStreamPlaybackRandomPitch : public AudioStreamPlayback { 
private:  mutable StringName _class_name; friend class ClassDB; public:  
static inline void *get_class_ptr_static() { static int ptr; return &ptr; }
static inline String get_class_static() { return
String("AudioStreamPlaybackRandomPitch"); } static inline String
get_parent_class_static() { return AudioStreamPlayback::get_class_static(); }
static void get_inheritance_list_static(List<String> *p_inheritance_list) {
AudioStreamPlayback:get_inheritance_list_static(p_inheritance_list);
p_inheritance_list->push_back(String("AudioStreamPlaybackRandomPitch")); }
static String get_category_static() {  if (_get_category !=
AudioStreamPlayback::_get_category) { if (get_category_static_category != "")
get_category_static_category = ""; get_category_static_category =
_get_category(); } return get_category_static_category; } static String
inherits_static() { return String("AudioStreamPlayback"); } virtual bool
is_class(const String p_class) const { return (p_class ==
("AudioStreamPlaybackRandomPitch")) ? true :
AudioStreamPlayback::is_class(p_class); } virtual bool is_class_ptr(void
*p_ptr) const { return (p_ptr == get_class_ptr_static) ? true :
AudioStreamPlayback::is_class_ptr(p_ptr); } static void
get_valid_parents_static(List<String> *p_parents) { if
(AudioStreamPlaybackRandomPitch::_get_valid_parents_static !=
AudioStreamPlayback::_get_valid_parents_static) {
AudioStreamPlaybackRandomPitch:_get_valid_parents_static(p_parents); }
AudioStreamPlayback:get_valid_parents_static(p_parents); } protected: inline
static void (*_get_bind_methods())() { return
AudioStreamPlaybackRandomPitch::_bind_methods; } public: static void
initialize_class() { static bool initialized = false; if (initialized) return
AudioStreamPlayback::initialize_class();
ClassDB::_add_class<AudioStreamPlaybackRandomPitch>; if
(AudioStreamPlaybackRandomPitch::_get_bind_methods !=
AudioStreamPlayback::_get_bind_methods()) _bind_methods; initialized = true; }
protected: virtual void _initialize_classv() { initialize_class; } inline bool
(Object::*_get_get() const)(const StringName &p_name, Variant &) const { return
(bool (Object::*)(const StringName &, Variant &) const) &
AudioStreamPlaybackRandomPitch::_get; } virtual bool _getv(const StringName
p_name, Variant &r_ret) const { if (AudioStreamPlaybackRandomPitch::_get_get()
!= AudioStreamPlayback::_get_get()) { if (_get(p_name, r_ret)) return true; }
return AudioStreamPlayback::_getv(p_name, r_ret); } inline bool
(Object::*_get_set() const)(const StringName &p_name, const Variant
&p_property) { return (bool (Object::*)(const StringName &, const Variant &)) &
AudioStreamPlaybackRandomPitch::_set; } virtual bool _setv(const StringName
&p_name, const Variant &p_property) { if (AudioStreamPlayback::_setv(p_name,
p_property)) return true; if (AudioStreamPlaybackRandomPitch::_get_set() !=
AudioStreamPlayback::_get_set())  return false; } inline void
(Object::*_get_get_property_list() const)(List<PropertyInfo> * p_list) const {
return (void (Object::*)(List<PropertyInfo> *) const) &
AudioStreamPlaybackRandomPitch::_get_property_list; } virtual void
_get_property_listv(List<PropertyInfo> *p_list, bool p_reversed) const { if
(!p_reversed) { AudioStreamPlayback::_get_property_listv(p_list, p_reversed); }
p_list->push_back(PropertyInfo(Variant::NIL, get_class_static(),
PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY)); if
(!_is_gpl_reversed())
ClassDB::get_property_list("AudioStreamPlaybackRandomPitch", p_list, true,
this); if (AudioStreamPlaybackRandomPitch::_get_get_property_list() !=
AudioStreamPlayback::_get_get_property_list()) { _get_property_list(p_list); }
if (_is_gpl_reversed())
ClassDB::get_property_list("AudioStreamPlaybackRandomPitch", p_list, true,
this); if (p_reversed) { AudioStreamPlayback::_get_property_listv(p_list,
p_reversed); } } inline void (Object::*_get_notification() const)(int) { return
(void (Object::*)(int)) & AudioStreamPlaybackRandomPitch::_notification; }
virtual void _notificationv(int p_notification, bool p_reversed) { if
(p_reversed) ;       p_reversed; }    };

$ g++ mi.ii -c -Wmisleading-indentation
...
mi.ii: In member function ‘virtual void
AudioStreamPlaybackRandomPitch::_notificationv(int, bool)’:
mi.ii:13: note: -Wmisleading-indentation is disabled from this point onwards,
since column-tracking was disabled due to the size of the code/headers
    class AudioStreamPlaybackRandomPitch : public AudioStreamPlayback { 
private:  mutable StringName _class_name; friend class ClassDB; public:  
static inline void *get_class_ptr_static() { static int ptr; return &ptr; }
static inline String get_class_static() { return
String("AudioStreamPlaybackRandomPitch"); } static inline String
get_parent_class_static() { return AudioStreamPlayback::get_class_static(); }
static void get_inheritance_list_static(List<String> *p_inheritance_list) {
AudioStreamPlayback:get_inheritance_list_static(p_inheritance_list);
p_inheritance_list->push_back(String("AudioStreamPlaybackRandomPitch")); }
static String get_category_static() {  if (_get_category !=
AudioStreamPlayback::_get_category) { if (get_category_static_category != "")
get_category_static_category = ""; get_category_static_category =
_get_category(); } return get_category_static_category; } static String
inherits_static() { return String("AudioStreamPlayback"); } virtual bool
is_class(const String p_class) const { return (p_class ==
("AudioStreamPlaybackRandomPitch")) ? true :
AudioStreamPlayback::is_class(p_class); } virtual bool is_class_ptr(void
*p_ptr) const { return (p_ptr == get_class_ptr_static) ? true :
AudioStreamPlayback::is_class_ptr(p_ptr); } static void
get_valid_parents_static(List<String> *p_parents) { if
(AudioStreamPlaybackRandomPitch::_get_valid_parents_static !=
AudioStreamPlayback::_get_valid_parents_static) {
AudioStreamPlaybackRandomPitch:_get_valid_parents_static(p_parents); }
AudioStreamPlayback:get_valid_parents_static(p_parents); } protected: inline
static void (*_get_bind_methods())() { return
AudioStreamPlaybackRandomPitch::_bind_methods; } public: static void
initialize_class() { static bool initialized = false; if (initialized) return
AudioStreamPlayback::initialize_class();
ClassDB::_add_class<AudioStreamPlaybackRandomPitch>; if
(AudioStreamPlaybackRandomPitch::_get_bind_methods !=
AudioStreamPlayback::_get_bind_methods()) _bind_methods; initialized = true; }
protected: virtual void _initialize_classv() { initialize_class; } inline bool
(Object::*_get_get() const)(const StringName &p_name, Variant &) const { return
(bool (Object::*)(const StringName &, Variant &) const) &
AudioStreamPlaybackRandomPitch::_get; } virtual bool _getv(const StringName
p_name, Variant &r_ret) const { if (AudioStreamPlaybackRandomPitch::_get_get()
!= AudioStreamPlayback::_get_get()) { if (_get(p_name, r_ret)) return true; }
return AudioStreamPlayback::_getv(p_name, r_ret); } inline bool
(Object::*_get_set() const)(const StringName &p_name, const Variant
&p_property) { return (bool (Object::*)(const StringName &, const Variant &)) &
AudioStreamPlaybackRandomPitch::_set; } virtual bool _setv(const StringName
&p_name, const Variant &p_property) { if (AudioStreamPlayback::_setv(p_name,
p_property)) return true; if (AudioStreamPlaybackRandomPitch::_get_set() !=
AudioStreamPlayback::_get_set())  return false; } inline void
(Object::*_get_get_property_list() const)(List<PropertyInfo> * p_list) const {
return (void (Object::*)(List<PropertyInfo> *) const) &
AudioStreamPlaybackRandomPitch::_get_property_list; } virtual void
_get_property_listv(List<PropertyInfo> *p_list, bool p_reversed) const { if
(!p_reversed) { AudioStreamPlayback::_get_property_listv(p_list, p_reversed); }
p_list->push_back(PropertyInfo(Variant::NIL, get_class_static(),
PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY)); if
(!_is_gpl_reversed())
ClassDB::get_property_list("AudioStreamPlaybackRandomPitch", p_list, true,
this); if (AudioStreamPlaybackRandomPitch::_get_get_property_list() !=
AudioStreamPlayback::_get_get_property_list()) { _get_property_list(p_list); }
if (_is_gpl_reversed())
ClassDB::get_property_list("AudioStreamPlaybackRandomPitch", p_list, true,
this); if (p_reversed) { AudioStreamPlayback::_get_property_listv(p_list,
p_reversed); } } inline void (Object::*_get_notification() const)(int) { return
(void (Object::*)(int)) & AudioStreamPlaybackRandomPitch::_notification; }
virtual void _notificationv(int p_notification, bool p_reversed) { if
(p_reversed) ;       p_reversed; }    };

It's probably related to line map and it's capacity. But can we do better here?

Reply via email to