static int64_t
 sort__srcline_from_cmp(struct hist_entry *left, struct hist_entry *right)
+{
+       return left->branch_info->from.addr - right->branch_info->from.addr;
+}
+
+static int64_t
+sort__srcline_from_collapse(struct hist_entry *left, struct hist_entry *right)
 {
        if (!left->branch_info->srcline_from)
                left->branch_info->srcline_from = addr_map_symbol__srcline(&left->branch_info->from);
        return strcmp(right->branch_info->srcline_from, left->branch_info->srcline_from);
 }
 
+static int64_t
+sort__srcline_from_sort(struct hist_entry *left, struct hist_entry *right)
+{
+       return sort__srcline_from_collapse(left, right);
+}
+
+static void sort__srcline_from_init(struct hist_entry *he)
+{
+       if (!he->branch_info->srcline_from)
+               he->branch_info->srcline_from = addr_map_symbol__srcline(&he->branch_info->from);
+}
+
 static int hist_entry__srcline_from_snprintf(struct hist_entry *he, char *bf,
                                        size_t size, unsigned int width)
 {
 struct sort_entry sort_srcline_from = {
        .se_header      = "From Source:Line",
        .se_cmp         = sort__srcline_from_cmp,
+       .se_collapse    = sort__srcline_from_collapse,
+       .se_sort        = sort__srcline_from_sort,
+       .se_init        = sort__srcline_from_init,
        .se_snprintf    = hist_entry__srcline_from_snprintf,
        .se_width_idx   = HISTC_SRCLINE_FROM,
 };
 
 static int64_t
 sort__srcline_to_cmp(struct hist_entry *left, struct hist_entry *right)
+{
+       return left->branch_info->to.addr - right->branch_info->to.addr;
+}
+
+static int64_t
+sort__srcline_to_collapse(struct hist_entry *left, struct hist_entry *right)
 {
        if (!left->branch_info->srcline_to)
                left->branch_info->srcline_to = addr_map_symbol__srcline(&left->branch_info->to);
        return strcmp(right->branch_info->srcline_to, left->branch_info->srcline_to);
 }
 
+static int64_t
+sort__srcline_to_sort(struct hist_entry *left, struct hist_entry *right)
+{
+       return sort__srcline_to_collapse(left, right);
+}
+
+static void sort__srcline_to_init(struct hist_entry *he)
+{
+       if (!he->branch_info->srcline_to)
+               he->branch_info->srcline_to = addr_map_symbol__srcline(&he->branch_info->to);
+}
+
 static int hist_entry__srcline_to_snprintf(struct hist_entry *he, char *bf,
                                        size_t size, unsigned int width)
 {
 struct sort_entry sort_srcline_to = {
        .se_header      = "To Source:Line",
        .se_cmp         = sort__srcline_to_cmp,
+       .se_collapse    = sort__srcline_to_collapse,
+       .se_sort        = sort__srcline_to_sort,
+       .se_init        = sort__srcline_to_init,
        .se_snprintf    = hist_entry__srcline_to_snprintf,
        .se_width_idx   = HISTC_SRCLINE_TO,
 };