To create a total solution for Address Line Compression in Labels, create variables like the following:

vCityStateZip = (City + ','&State&ZipCode)

vLine1 = (CFirstName&CLastName)

vLine2 = (IFEXISTS(Company,Company,Address))

vLine3 = (IFEXISTS(Company,Address,(IFNULL(Company, +
(IFEXISTS(Address2,Address2,.vCityStateZip)),.vCityStateZip))))  

vLine4 = (IFEXISTS(Company,(IFEXISTS(Address2,Address2,.vCityStateZip)), +
(IFNULL(Company,(IFNULL(Address2,' ',.vCityStateZip)),' '))))  

vLine5 = (IFEXISTS(Company,(IFEXISTS(Address2,.vCityStateZip,' ')), +
(IFNULL(Company,' ',' '))))  

This will create a FULLY dynamic label that will adjust for missing lines as necessary when laid out like the following:

vLine1
vLine2
vLine3
vLine4
vLine5

You can build on this to virtually any level.