@@ -171,22 +171,28 @@ TEST(BoundsSafetyBringUpMissingChecks, ChkPairValidMask) {
171171 ASSERT_EQ (SeenBits, LangOptions::BS_CHK_All);
172172}
173173
174+ #if 1
175+ #define NEED_CC1_ARG
176+ #else
177+ #define NEED_CC1_ARG "-Xclang",
178+ #endif
179+
174180// =============================================================================
175181// Default behavior
176182// =============================================================================
177183
178184TEST (BoundsSafetyBringUpMissingChecks, DefaultWithBoundsSafety) {
179- bool Result =
180- runOnToolAndCheckLangOptions ({ " -fbounds-safety" }, [](LangOptions &LO) {
185+ bool Result = runOnToolAndCheckLangOptions (
186+ {NEED_CC1_ARG " -fbounds-safety" }, [](LangOptions &LO) {
181187 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
182188 LangOptions::BS_CHK_Default);
183189 });
184190 ASSERT_TRUE (Result);
185191}
186192
187193TEST (BoundsSafetyBringUpMissingChecks, DefaultWithoutBoundsSafety) {
188- bool Result =
189- runOnToolAndCheckLangOptions ({ " -fno-bounds-safety" }, [](LangOptions &LO) {
194+ bool Result = runOnToolAndCheckLangOptions (
195+ {NEED_CC1_ARG " -fno-bounds-safety" }, [](LangOptions &LO) {
190196 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
191197 LangOptions::BS_CHK_Default);
192198 });
@@ -201,7 +207,8 @@ TEST(BoundsSafetyBringUpMissingChecks, DefaultWithoutBoundsSafety) {
201207TEST (BoundsSafetyBringUpMissingChecks,
202208 DefaultAllDisabledExperimentalBoundsSafetyAttributes) {
203209 bool Result = runOnToolAndCheckLangOptions (
204- {" -fexperimental-bounds-safety-attributes" }, [](LangOptions &LO) {
210+ {NEED_CC1_ARG " -fexperimental-bounds-safety-attributes" },
211+ [](LangOptions &LO) {
205212 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
206213 LangOptions::BS_CHK_Default);
207214 });
@@ -214,7 +221,8 @@ TEST(BoundsSafetyBringUpMissingChecks,
214221
215222TEST (BoundsSafetyBringUpMissingChecks, all_eq) {
216223 bool Result = runOnToolAndCheckLangOptions (
217- {" -fbounds-safety" , " -fbounds-safety-bringup-missing-checks=all" },
224+ {NEED_CC1_ARG " -fbounds-safety" ,
225+ NEED_CC1_ARG " -fbounds-safety-bringup-missing-checks=all" },
218226 [](LangOptions &LO) {
219227 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
220228 LangOptions::BS_CHK_All);
@@ -229,7 +237,8 @@ TEST(BoundsSafetyBringUpMissingChecks, all_eq) {
229237
230238TEST (BoundsSafetyBringUpMissingChecks, all) {
231239 bool Result = runOnToolAndCheckLangOptions (
232- {" -fbounds-safety" , " -fbounds-safety-bringup-missing-checks" },
240+ {NEED_CC1_ARG " -fbounds-safety" ,
241+ NEED_CC1_ARG " -fbounds-safety-bringup-missing-checks" },
233242 [](LangOptions &LO) {
234243 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
235244 LangOptions::BS_CHK_All);
@@ -249,9 +258,10 @@ TEST(BoundsSafetyBringUpMissingChecks, all) {
249258TEST (BoundsSafetyBringUpMissingChecks, only_one_check) {
250259 for (size_t ChkIdx = 0 ; ChkIdx < NumPairs; ++ChkIdx) {
251260 ChkPair Chk = Pairs[ChkIdx];
252- std::vector<std::string> Args = {" -fbounds-safety" ,
261+ std::vector<std::string> Args = {NEED_CC1_ARG " -fbounds-safety" ,
262+ NEED_CC1_ARG
253263 " -fbounds-safety-bringup-missing-checks=" };
254- Args[1 ].append (Chk.arg );
264+ Args[Args. size () - 1 ].append (Chk.arg );
255265
256266 bool Result = runOnToolAndCheckLangOptions (Args, [&Chk](LangOptions &LO) {
257267 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (), Chk.Mask );
@@ -284,10 +294,11 @@ TEST(BoundsSafetyBringUpMissingChecks, all_pairs) {
284294 ChkPair First = Pairs[firstIdx];
285295 auto Second = Pairs[secondIdx];
286296 std::vector<std::string> Args = {
287- " -fbounds-safety" , " -fbounds-safety-bringup-missing-checks=" };
288- Args[1 ].append (First.arg );
289- Args[1 ].append (" ," );
290- Args[1 ].append (Second.arg );
297+ NEED_CC1_ARG " -fbounds-safety" ,
298+ NEED_CC1_ARG " -fbounds-safety-bringup-missing-checks=" };
299+ Args[Args.size () - 1 ].append (First.arg );
300+ Args[Args.size () - 1 ].append (" ," );
301+ Args[Args.size () - 1 ].append (Second.arg );
291302 ASSERT_NE (First.Mask , Second.Mask );
292303
293304 bool Result = runOnToolAndCheckLangOptions (
@@ -320,9 +331,10 @@ TEST(BoundsSafetyBringUpMissingChecks, all_with_one_removed) {
320331 for (size_t ChkIdx = 0 ; ChkIdx < NumPairs; ++ChkIdx) {
321332 ChkPair Chk = Pairs[ChkIdx];
322333 std::vector<std::string> Args = {
323- " -fbounds-safety" , " -fbounds-safety-bringup-missing-checks=all" ,
324- " -fno-bounds-safety-bringup-missing-checks=" };
325- Args[2 ].append (Chk.arg );
334+ NEED_CC1_ARG " -fbounds-safety" ,
335+ NEED_CC1_ARG " -fbounds-safety-bringup-missing-checks=all" ,
336+ NEED_CC1_ARG " -fno-bounds-safety-bringup-missing-checks=" };
337+ Args[Args.size () - 1 ].append (Chk.arg );
326338
327339 bool Result = runOnToolAndCheckLangOptions (Args, [&Chk](LangOptions &LO) {
328340 unsigned ExpectedMask = LangOptions::BS_CHK_All & (~Chk.Mask );
@@ -350,7 +362,8 @@ TEST(BoundsSafetyBringUpMissingChecks, all_with_one_removed) {
350362
351363TEST (BoundsSafetyBringUpMissingChecks, all_disabled) {
352364 bool Result = runOnToolAndCheckLangOptions (
353- {" -fbounds-safety" , " -fno-bounds-safety-bringup-missing-checks" },
365+ {NEED_CC1_ARG " -fbounds-safety" ,
366+ NEED_CC1_ARG " -fno-bounds-safety-bringup-missing-checks" },
354367 [](LangOptions &LO) {
355368 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
356369 LangOptions::BS_CHK_None);
@@ -360,8 +373,9 @@ TEST(BoundsSafetyBringUpMissingChecks, all_disabled) {
360373
361374TEST (BoundsSafetyBringUpMissingChecks, all_enable_then_disable) {
362375 bool Result = runOnToolAndCheckLangOptions (
363- {" -fbounds-safety" , " -fbounds-safety-bringup-missing-checks" ,
364- " -fno-bounds-safety-bringup-missing-checks" },
376+ {NEED_CC1_ARG " -fbounds-safety" ,
377+ NEED_CC1_ARG " -fbounds-safety-bringup-missing-checks" ,
378+ NEED_CC1_ARG " -fno-bounds-safety-bringup-missing-checks" },
365379 [](LangOptions &LO) {
366380 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (),
367381 LangOptions::BS_CHK_None);
@@ -377,9 +391,10 @@ TEST(BoundsSafetyBringUpMissingChecks, all_disabled_then_enable_one) {
377391 for (size_t ChkIdx = 0 ; ChkIdx < NumPairs; ++ChkIdx) {
378392 ChkPair Chk = Pairs[ChkIdx];
379393 std::vector<std::string> Args = {
380- " -fbounds-safety" , " -fno-bounds-safety-bringup-missing-checks" ,
381- " -fbounds-safety-bringup-missing-checks=" };
382- Args[2 ].append (Chk.arg );
394+ NEED_CC1_ARG " -fbounds-safety" ,
395+ NEED_CC1_ARG " -fno-bounds-safety-bringup-missing-checks" ,
396+ NEED_CC1_ARG " -fbounds-safety-bringup-missing-checks=" };
397+ Args[Args.size () - 1 ].append (Chk.arg );
383398
384399 bool Result = runOnToolAndCheckLangOptions (Args, [&Chk](LangOptions &LO) {
385400 EXPECT_EQ (LO.getBoundsSafetyBringUpMissingChecks (), Chk.Mask );
0 commit comments