Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1438 if (const Arg *A = Args.getLastArg(OPT_x)) {
- 1439 StringRef XValue = A->getValue();
- 1440
- 1441 // Parse suffixes: '<lang>(-header|[-module-map][-cpp-output])'.
- 1442 // FIXME: Supporting '<lang>-header-cpp-output' would be useful.
- 1443 bool Preprocessed = XValue.consume_back("-cpp-output");
- 1444 bool ModuleMap = XValue.consume_back("-module-map");
- 1445 IsHeaderFile =
- 1446 !Preprocessed && !ModuleMap && XValue.consume_back("-header");
- 1447
- 1448 // Principal languages.
- 1449 DashX = llvm::StringSwitch<InputKind>(XValue)
- 1450 .Case("c", InputKind::C)
- 1451 .Case("cl", InputKind::OpenCL)
- 1452 .Case("cuda", InputKind::CUDA)
- 1453 .Case("c++", InputKind::CXX)
- 1454 .Case("objective-c", InputKind::ObjC)
- 1455 .Case("objective-c++", InputKind::ObjCXX)
- 1456 .Case("renderscript", InputKind::RenderScript)
- 1457 .Default(InputKind::Unknown);
- 1458
- 1459 // "objc[++]-cpp-output" is an acceptable synonym for
- 1460 // "objective-c[++]-cpp-output".
- 1461 if (DashX.isUnknown() && Preprocessed && !IsHeaderFile && !ModuleMap)
- 1462 DashX = llvm::StringSwitch<InputKind>(XValue)
- 1463 .Case("objc", InputKind::ObjC)
- 1464 .Case("objc++", InputKind::ObjCXX)
- 1465 .Default(InputKind::Unknown);
- 1466
- 1467 // Some special cases cannot be combined with suffixes.
- 1468 if (DashX.isUnknown() && !Preprocessed && !ModuleMap && !IsHeaderFile)
- 1469 DashX = llvm::StringSwitch<InputKind>(XValue)
- 1470 .Case("cpp-output", InputKind(InputKind::C).getPreprocessed())
- 1471 .Case("assembler-with-cpp", InputKind::Asm)
- 1472 .Cases("ast", "pcm",
- 1473 InputKind(InputKind::Unknown, InputKind::Precompiled))
- 1474 .Case("ir", InputKind::LLVM_IR)
- 1475 .Default(InputKind::Unknown);
- 1476
- 1477 if (DashX.isUnknown())
- 1478 Diags.Report(diag::err_drv_invalid_value)
- 1479 << A->getAsString(Args) << A->getValue();
- 1480
- 1481 if (Preprocessed)
- 1482 DashX = DashX.getPreprocessed();
- 1483 if (ModuleMap)
- 1484 DashX = DashX.withFormat(InputKind::ModuleMap);
- 1485 }
Add Comment
Please, Sign In to add comment