@@ -1417,6 +1417,132 @@ TEST(TripleTest, Normalization) {
1417
1417
1418
1418
EXPECT_EQ (" x86_64-unknown-linux-gnu" , Triple::normalize (" x86_64-gnu-linux" ));
1419
1419
1420
+ EXPECT_EQ (" a-unknown-unknown" ,
1421
+ Triple::normalize (" a" , Triple::CanonicalForm::THREE_IDENT));
1422
+ EXPECT_EQ (" a-b-unknown" ,
1423
+ Triple::normalize (" a-b" , Triple::CanonicalForm::THREE_IDENT));
1424
+ EXPECT_EQ (" a-b-c" ,
1425
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::THREE_IDENT));
1426
+ EXPECT_EQ (" a-b-c" ,
1427
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::THREE_IDENT));
1428
+ EXPECT_EQ (" a-b-c" ,
1429
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::THREE_IDENT));
1430
+
1431
+ EXPECT_EQ (" a-unknown-unknown-unknown" ,
1432
+ Triple::normalize (" a" , Triple::CanonicalForm::FOUR_IDENT));
1433
+ EXPECT_EQ (" a-b-unknown-unknown" ,
1434
+ Triple::normalize (" a-b" , Triple::CanonicalForm::FOUR_IDENT));
1435
+ EXPECT_EQ (" a-b-c-unknown" ,
1436
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1437
+ EXPECT_EQ (" a-b-c-d" ,
1438
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::FOUR_IDENT));
1439
+ EXPECT_EQ (" a-b-c-d" ,
1440
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::FOUR_IDENT));
1441
+
1442
+ EXPECT_EQ (" a-unknown-unknown-unknown-unknown" ,
1443
+ Triple::normalize (" a" , Triple::CanonicalForm::FIVE_IDENT));
1444
+ EXPECT_EQ (" a-b-unknown-unknown-unknown" ,
1445
+ Triple::normalize (" a-b" , Triple::CanonicalForm::FIVE_IDENT));
1446
+ EXPECT_EQ (" a-b-c-unknown-unknown" ,
1447
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1448
+ EXPECT_EQ (" a-b-c-d-unknown" ,
1449
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::FIVE_IDENT));
1450
+ EXPECT_EQ (" a-b-c-d-e" ,
1451
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::FIVE_IDENT));
1452
+
1453
+ EXPECT_EQ (" i386-b-c-unknown" ,
1454
+ Triple::normalize (" i386-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1455
+ EXPECT_EQ (" i386-b-c-unknown-unknown" ,
1456
+ Triple::normalize (" i386-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1457
+
1458
+ EXPECT_EQ (" i386-a-c-unknown" ,
1459
+ Triple::normalize (" a-i386-c" , Triple::CanonicalForm::FOUR_IDENT));
1460
+ EXPECT_EQ (" i386-a-c-unknown-unknown" ,
1461
+ Triple::normalize (" a-i386-c" , Triple::CanonicalForm::FIVE_IDENT));
1462
+
1463
+ EXPECT_EQ (" i386-a-b-unknown" ,
1464
+ Triple::normalize (" a-b-i386" , Triple::CanonicalForm::FOUR_IDENT));
1465
+ EXPECT_EQ (" i386-a-b-c" ,
1466
+ Triple::normalize (" a-b-c-i386" , Triple::CanonicalForm::FOUR_IDENT));
1467
+
1468
+ EXPECT_EQ (" a-pc-c-unknown" ,
1469
+ Triple::normalize (" a-pc-c" , Triple::CanonicalForm::FOUR_IDENT));
1470
+ EXPECT_EQ (" unknown-pc-b-c" ,
1471
+ Triple::normalize (" pc-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1472
+ EXPECT_EQ (" a-pc-b-unknown" ,
1473
+ Triple::normalize (" a-b-pc" , Triple::CanonicalForm::FOUR_IDENT));
1474
+ EXPECT_EQ (" a-pc-b-c" ,
1475
+ Triple::normalize (" a-b-c-pc" , Triple::CanonicalForm::FOUR_IDENT));
1476
+
1477
+ EXPECT_EQ (" a-b-linux-unknown" ,
1478
+ Triple::normalize (" a-b-linux" , Triple::CanonicalForm::FOUR_IDENT));
1479
+ // We lose `-c` here as expected.
1480
+ EXPECT_EQ (" unknown-unknown-linux-b" ,
1481
+ Triple::normalize (" linux-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1482
+ EXPECT_EQ (" a-unknown-linux-c" ,
1483
+ Triple::normalize (" a-linux-c" , Triple::CanonicalForm::FOUR_IDENT));
1484
+
1485
+ EXPECT_EQ (" i386-pc-a-unknown" ,
1486
+ Triple::normalize (" a-pc-i386" , Triple::CanonicalForm::FOUR_IDENT));
1487
+ EXPECT_EQ (" i386-pc-unknown-unknown" ,
1488
+ Triple::normalize (" -pc-i386" , Triple::CanonicalForm::FOUR_IDENT));
1489
+ EXPECT_EQ (" unknown-pc-linux-c" ,
1490
+ Triple::normalize (" linux-pc-c" , Triple::CanonicalForm::FOUR_IDENT));
1491
+ EXPECT_EQ (" unknown-pc-linux-unknown" ,
1492
+ Triple::normalize (" linux-pc-" , Triple::CanonicalForm::FOUR_IDENT));
1493
+
1494
+ EXPECT_EQ (" i386-unknown-unknown-unknown" ,
1495
+ Triple::normalize (" i386" , Triple::CanonicalForm::FOUR_IDENT));
1496
+ EXPECT_EQ (" unknown-pc-unknown-unknown" ,
1497
+ Triple::normalize (" pc" , Triple::CanonicalForm::FOUR_IDENT));
1498
+ EXPECT_EQ (" unknown-unknown-linux-unknown" ,
1499
+ Triple::normalize (" linux" , Triple::CanonicalForm::FOUR_IDENT));
1500
+
1501
+ EXPECT_EQ (
1502
+ " x86_64-unknown-linux-gnu" ,
1503
+ Triple::normalize (" x86_64-gnu-linux" , Triple::CanonicalForm::FOUR_IDENT));
1504
+
1505
+ EXPECT_EQ (" i386-a-b-unknown-unknown" ,
1506
+ Triple::normalize (" a-b-i386" , Triple::CanonicalForm::FIVE_IDENT));
1507
+ EXPECT_EQ (" i386-a-b-c-unknown" ,
1508
+ Triple::normalize (" a-b-c-i386" , Triple::CanonicalForm::FIVE_IDENT));
1509
+
1510
+ EXPECT_EQ (" a-pc-c-unknown-unknown" ,
1511
+ Triple::normalize (" a-pc-c" , Triple::CanonicalForm::FIVE_IDENT));
1512
+ EXPECT_EQ (" unknown-pc-b-c-unknown" ,
1513
+ Triple::normalize (" pc-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1514
+ EXPECT_EQ (" a-pc-b-unknown-unknown" ,
1515
+ Triple::normalize (" a-b-pc" , Triple::CanonicalForm::FIVE_IDENT));
1516
+ EXPECT_EQ (" a-pc-b-c-unknown" ,
1517
+ Triple::normalize (" a-b-c-pc" , Triple::CanonicalForm::FIVE_IDENT));
1518
+
1519
+ EXPECT_EQ (" a-b-linux-unknown-unknown" ,
1520
+ Triple::normalize (" a-b-linux" , Triple::CanonicalForm::FIVE_IDENT));
1521
+ EXPECT_EQ (" unknown-unknown-linux-b-c" ,
1522
+ Triple::normalize (" linux-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1523
+ EXPECT_EQ (" a-unknown-linux-c-unknown" ,
1524
+ Triple::normalize (" a-linux-c" , Triple::CanonicalForm::FIVE_IDENT));
1525
+
1526
+ EXPECT_EQ (" i386-pc-a-unknown-unknown" ,
1527
+ Triple::normalize (" a-pc-i386" , Triple::CanonicalForm::FIVE_IDENT));
1528
+ EXPECT_EQ (" i386-pc-unknown-unknown-unknown" ,
1529
+ Triple::normalize (" -pc-i386" , Triple::CanonicalForm::FIVE_IDENT));
1530
+ EXPECT_EQ (" unknown-pc-linux-c-unknown" ,
1531
+ Triple::normalize (" linux-pc-c" , Triple::CanonicalForm::FIVE_IDENT));
1532
+ EXPECT_EQ (" unknown-pc-linux-unknown-unknown" ,
1533
+ Triple::normalize (" linux-pc-" , Triple::CanonicalForm::FIVE_IDENT));
1534
+
1535
+ EXPECT_EQ (" i386-unknown-unknown-unknown-unknown" ,
1536
+ Triple::normalize (" i386" , Triple::CanonicalForm::FIVE_IDENT));
1537
+ EXPECT_EQ (" unknown-pc-unknown-unknown-unknown" ,
1538
+ Triple::normalize (" pc" , Triple::CanonicalForm::FIVE_IDENT));
1539
+ EXPECT_EQ (" unknown-unknown-linux-unknown-unknown" ,
1540
+ Triple::normalize (" linux" , Triple::CanonicalForm::FIVE_IDENT));
1541
+
1542
+ EXPECT_EQ (
1543
+ " x86_64-unknown-linux-gnu-unknown" ,
1544
+ Triple::normalize (" x86_64-gnu-linux" , Triple::CanonicalForm::FIVE_IDENT));
1545
+
1420
1546
// Check that normalizing a permutated set of valid components returns a
1421
1547
// triple with the unpermuted components.
1422
1548
//
0 commit comments