Faits :
A.
D._ et E._ étaient locataires de locaux d'environ 600 m 2 au sous-sol et rez-de-chaussée, destinés à l'exploitation d'un café-brasserie, ainsi que d'un appartement de quatre pièces au 1 er étage du même immeuble sis à Genève; le bail était renouvelable de cinq ans en cinq ans, sauf congé signifié une année avant l'échéance. A.C._ et la société B._ Sàrl ont repris le bail à partir du 1 er avril 2006.
Le 14 octobre 2008, la bailleresse a notifié une hausse du loyer annuel net de 112'800 à 116'580 fr., hausse que les locataires ont contestée. Lors de la séance de conciliation du 9 avril 2009, le bail a été prorogé jusqu'au 30 septembre 2013 et le loyer annuel net arrêté à 114'000 fr., avec une clause d'indexation dès le 1 er janvier 2011; le contrat restait inchangé pour le reste.
Le 29 juin 2011, à savoir moins de deux ans et trois mois après la fin de la procédure de conciliation, la bailleresse a résilié le bail pour le 30 septembre 2013 par avis officiels accompagnés d'un courrier, adressés séparément à A.C._, à son époux B.C._ et à la société B._ Sàrl. L'avis officiel n'indiquait aucun motif de congé ni disposition légale; le courrier joint exposait qu'aux termes d'investigations et analyses effectuées par la bailleresse, celle-ci était parvenue à la conclusion qu'en raison de l'état général de l'immeuble, la meilleure solution était de le démolir et de le remplacer par une nouvelle construction.
La résiliation a été contestée. La tentative de conciliation qui a suivi n'a pas abouti.
B.
Les époux C._ et B._ Sàrl ont ouvert action contre la bailleresse, concluant principalement à l'annulation de la résiliation, subsidiairement à la prolongation du bail pour une durée de six ans; ils ont argué du fait que le congé avait été donné durant la période de protection de trois ans (art. 271a al. 1 let. e CO). Dans sa réponse, la bailleresse a conclu à l'octroi d'une unique prolongation au 31 décembre 2014; elle justifiait la résiliation par un besoin urgent pour elle-même ou ses proches (art. 271a al. 3 let. a CO) et alléguait un besoin urgent de récupérer l'objet loué pour pouvoir détruire et reconstruire l'immeuble; lors des plaidoiries, elle s'est prévalue de justes motifs (art. 271a al. 3 let. e et art. 266g CO).
Le Tribunal des baux et loyers du canton de Genève (2 ème Chambre) a instruit la cause et notamment entendu des témoins au sujet de l'état du bâtiment. Par jugement du 29 octobre 2013, il a annulé le congé.
La bailleresse a fait appel. Par arrêt du 6 août 2014, la Chambre des baux et loyers de la Cour de justice a confirmé l'annulation du congé.
C.
A._ SA, devenue bailleresse ensuite de fusion avec la bailleresse antérieure, a interjeté un recours en matière civile au Tribunal fédéral, concluant principalement à ce qu'il soit constaté que la résiliation donnée le 29 juin 2011 est valable et que le bail prendra fin le dernier jour du sixième mois complet suivant la notification de l'arrêt de la cour de céans. Les intimés concluent au rejet du recours. L'autorité précédente se réfère à son arrêt.
Considérant en droit :
1.
La recourante reproche en premier lieu à l'autorité précédente d'avoir violé l'art. 317 al. 1 CPC en refusant de prendre en considération un document produit le 17 mars 2014 dans la procédure d'appel. Il s'agissait d'un jugement du 6 mars 2014 dans lequel le Tribunal des baux et loyers admettait la validité du congé donné par la recourante à un autre locataire habitant le même immeuble que les intimés; le tribunal a jugé que la résiliation n'était pas abusive (au sens de l'art. 271 CO) du moment que le bâtiment nécessitait à tout le moins des travaux d'envergure pour assurer sa sécurité, qu'on ne pouvait reprocher à la bailleresse d'avoir choisi la solution de la démolition et reconstruction et que ce projet paraissait légalement réalisable.
La problématique d'une résiliation durant la période de protection, au coeur du présent litige, ne se posait pas dans ce cas-là. Dès lors qu'en plus, le mauvais état du bâtiment n'est pas contesté, le jugement du 6 mars 2014 était sans pertinence dans la présente cause.
2.
La recourante dénonce en second lieu une violation de l'art. 266g CO. A teneur de cette disposition, chaque partie peut à n'importe quel moment résilier le bail en observant le délai de congé légal si, pour de justes motifs, l'exécution du contrat devient intolérable pour elle.
2.1. Le droit de congé extraordinaire prévu par l'art. 266g CO correspond au principe général selon lequel les contrats de durée peuvent être résiliés de manière anticipée pour de justes motifs; ne peuvent cependant constituer de justes motifs que des circonstances d'une gravité exceptionnelle, qui n'étaient ni connues ni prévisibles lors de la conclusion du contrat, et qui ne résultent pas d'une faute de la partie qui s'en prévaut. Les circonstances invoquées doivent être si graves qu'elles rendent la poursuite du bail jusqu'au prochain terme objectivement intolérable; une intolérance ressentie de manière purement subjective ne suffit pas. Par ailleurs, la partie doit résilier immédiatement le bail après la survenance du juste motif, faute de quoi elle montre, par son attitude, que celui-ci ne lui rend pas insupportable la continuation du contrat (ATF 138 III 304 consid. 7, 122 III 262 consid. 2a/aa; arrêt 4A_536/2009 du 2 février 2010 consid. 2.4, in SJ 2010 I 412; arrêt 4C.280/2006 du 16 novembre 2006 consid. 5.1, in SJ 2007 I 373).
Le fait que l'immeuble abritant les locaux loués doit être assaini n'implique pas encore que la poursuite du bail jusqu'au prochain terme ordinaire soit objectivement intolérable. Il faut bien plus une obligation pressante d'évacuer l'immeuble pour des raisons de sécurité ou de salubrité. Il y a ainsi lieu de retenir un juste motif s'il ressort d'un document émanant d'un service officiel ou d'un laboratoire scientifique qu'il existe, au moment de la résiliation, un danger concret et immédiat pour les occupants, ou si l'autorité administrative a rendu une décision exécutoire ordonnant l'évacuation des lieux (arrêt 4A_594/2010 du 12 janvier 2011 consid. 2.3). Par contre, une éventuelle autorisation administrative de démolir le bâtiment n'est pas déterminante; elle signifie uniquement que le propriétaire, du point de vue du droit public, est habilité à procéder à la démolition; l'intérêt subjectif du propriétaire d'en faire rapidement usage est compréhensible, mais pas déterminant.
Pour dire s'il existe de justes motifs, le juge doit appliquer les règles du droit et de l'équité (art. 4 CC). Il doit donc prendre en considération tous les éléments du cas particulier, sans perdre de vue le principe de la sécurité du droit et l'intérêt de l'autre partie au maintien du contrat. Le Tribunal fédéral ne revoit qu'avec réserve la décision d'équité prise en dernière instance cantonale. Il intervient lorsque celle-ci s'écarte sans raison des règles établies par la doctrine et la jurisprudence en matière de libre appréciation, lorsqu'elle s'appuie sur des faits qui, dans le cas particulier, ne devaient jouer aucun rôle ou, au contraire, lorsqu'elle ignore des éléments qui auraient absolument dû être pris en considération; en outre, le Tribunal fédéral sanctionne les décisions rendues en vertu d'un pouvoir d'appréciation lorsqu'elles aboutissent à un résultat manifestement injuste ou à une iniquité choquante (ATF 132 III 109 consid. 2; arrêt précité 4A_536/2009 consid. 2.4, in SJ 2010 I 412).
En l'espèce, il n'a pas été constaté que l'état de l'immeuble exigeait une démolition urgente. La recourante elle-même ne le soutient pas dans son mémoire de recours. Au contraire, le 29 juin 2011, la bailleresse de l'époque n'a pas résilié pour le terme légalement le plus proche possible en cas de justes motifs, à savoir pour la fin 2011 (art. 266g al. 1 et art. 266d CO), mais pour le 30 septembre 2013; elle a donné le congé deux ans et trois mois à l'avance pour le prochain terme contractuel. En procédure de première instance, elle a même offert de prolonger le bail de quinze mois supplémentaires jusqu'à fin 2014. En niant de justes motifs dans ces circonstances, l'autorité précédente n'a manifestement pas excédé son large pouvoir d'appréciation.
2.2. Si une partie veut mettre fin au contrat pour de justes motifs, il est indispensable que le destinataire de la manifestation de volonté puisse comprendre qu'il ne s'agit pas d'une résiliation ordinaire; l'allégation de justes motifs ultérieurement dans la procédure ne saurait remédier au fait que l'auteur du congé, au moment d'exercer son droit formateur, n'a pas exprimé une telle volonté. Le juge a certes la faculté de convertir le congé dans certaines hypothèses, mais il ne peut suppléer une volonté qui n'a pas été manifestée en convertissant un congé ordinaire en un congé extraordinaire qui n'a pas été donné (cf. ATF 135 III 441 consid. 3.3).
En l'espèce, le congé a été donné sans aucune référence à l'art. 266g CO, et sans qu'il soit question de justes motifs ou de résiliation extraordinaire; il était tout simplement indiqué que l'immeuble, à cause de son état général, serait démoli, sans précision qu'une telle opération serait urgente. De surcroît, la résiliation respectait le terme contractuel fort éloigné. Dans ces circonstances, les intimés devaient penser à un congé ordinaire, rien ne leur permettant d'inférer une volonté de donner un congé extraordinaire (cf. arrêt précité 4A_594/2010 consid. 2.3). Pour cette raison aussi, une résiliation pour justes motifs devait être rejetée.
La recourante objecte que l'autorité précédente la sanctionne alors qu'elle a adopté un comportement favorable à la locataire, puisque le délai de congé jusqu'au terme contractuel était plus long que le délai de congé prévu en cas de résiliation pour justes motifs (cf. art. 266g CO). A défaut d'urgence d'évacuer le bâtiment et, partant, de justes motifs pour une résiliation extraordinaire, l'objection est sans fondement.
En définitive, la recourante a donné le congé durant la période de protection, sans qu'il n'existe de justes motifs; ce congé était partant annulable (art. 271a al. 1 let. e et al. 3 let. e CO). Le fait que la recourante aurait pu attendre quelques mois et donner un congé ordinaire pour le même terme une fois la période de protection échue est sans pertinence (cf. DAVID LACHAT, Le bail à loyer, 2008, p. 751 s.; PETER HIGI, Zürcher Kommentar, 1996, n° 271 ad art. 271a CO). La recourante doit supporter les conséquences de la réglementation légale et ne saurait reprocher aux intimés de s'en prévaloir.
3.
La recourante succombe. Elle supporte les frais et dépens de la présente procédure (art. 66 et 68 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 6'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera aux intimés, créanciers solidaires, une indemnité de 7'000 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 20 janvier 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Monti