2014-02-25 08:30:04 +08:00
|
|
|
// REQUIRES: clang-driver
|
|
|
|
|
2013-04-04 14:29:47 +08:00
|
|
|
// RUN: %clang -### -S -fasm -fblocks -fbuiltin -fno-math-errno -fcommon -fpascal-strings -fno-blocks -fno-builtin -fmath-errno -fno-common -fno-pascal-strings -fblocks -fbuiltin -fmath-errno -fcommon -fpascal-strings -fsplit-stack %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS1 %s
|
2017-10-07 07:09:55 +08:00
|
|
|
// RUN: %clang -### -S -fasm -fblocks -fbuiltin -fno-math-errno -fcommon -fpascal-strings -fno-asm -fno-blocks -fno-builtin -fmath-errno -fno-common -fno-pascal-strings -fno-show-source-location -fshort-enums %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS2 %s
|
2009-12-12 08:38:18 +08:00
|
|
|
|
2013-04-04 14:29:47 +08:00
|
|
|
// CHECK-OPTIONS1: -split-stacks
|
2010-05-22 10:21:53 +08:00
|
|
|
// CHECK-OPTIONS1: -fgnu-keywords
|
2009-12-12 08:42:52 +08:00
|
|
|
// CHECK-OPTIONS1: -fblocks
|
|
|
|
// CHECK-OPTIONS1: -fpascal-strings
|
|
|
|
|
2010-01-08 10:20:44 +08:00
|
|
|
// CHECK-OPTIONS2: -fmath-errno
|
2014-02-16 15:29:41 +08:00
|
|
|
// CHECK-OPTIONS2: -fno-gnu-keywords
|
2009-12-12 08:42:52 +08:00
|
|
|
// CHECK-OPTIONS2: -fno-builtin
|
2010-10-08 08:25:19 +08:00
|
|
|
// CHECK-OPTIONS2: -fshort-enums
|
2009-12-12 08:42:52 +08:00
|
|
|
// CHECK-OPTIONS2: -fno-common
|
|
|
|
// CHECK-OPTIONS2: -fno-show-source-location
|
2011-04-23 14:30:43 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -Wwrite-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS1 %s
|
|
|
|
// WRITE-STRINGS1: -fconst-strings
|
|
|
|
// RUN: %clang -### -S -Wwrite-strings -Wno-write-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS2 %s
|
|
|
|
// WRITE-STRINGS2-NOT: -fconst-strings
|
2014-02-07 16:33:28 +08:00
|
|
|
// RUN: %clang -### -S -Wwrite-strings -w %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS3 %s
|
|
|
|
// WRITE-STRINGS3-NOT: -fconst-strings
|
2011-04-23 17:27:53 +08:00
|
|
|
|
2011-04-24 03:48:40 +08:00
|
|
|
// RUN: %clang -### -x c++ -c %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
|
|
|
|
// RUN: %clang -### -x c++ -c -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
|
|
|
|
// RUN: %clang -### -x c++ -c -Wno-deprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
|
|
|
|
// RUN: %clang -### -x c++ -c -Wno-deprecated -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
|
|
|
|
// RUN: %clang -### -x c++ -c -w %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
|
|
|
|
// RUN: %clang -### -c %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
|
|
|
|
// RUN: %clang -### -c -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
|
|
|
|
// DEPRECATED-ON-CHECK: -fdeprecated-macro
|
|
|
|
// DEPRECATED-OFF-CHECK-NOT: -fdeprecated-macro
|
2012-07-06 08:59:19 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -ffp-contract=fast %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-FAST-CHECK %s
|
2016-09-24 04:32:52 +08:00
|
|
|
// RUN: %clang -### -S -ffast-math %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-FAST-CHECK %s
|
|
|
|
// RUN: %clang -### -S -ffp-contract=off %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-OFF-CHECK %s
|
2012-07-06 08:59:19 +08:00
|
|
|
// FP-CONTRACT-FAST-CHECK: -ffp-contract=fast
|
2016-09-24 04:32:52 +08:00
|
|
|
// FP-CONTRACT-OFF-CHECK: -ffp-contract=off
|
2012-07-21 05:20:33 +08:00
|
|
|
|
2013-08-08 16:34:35 +08:00
|
|
|
// RUN: %clang -### -S -funroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-UNROLL-LOOPS %s
|
|
|
|
// RUN: %clang -### -S -fno-unroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-UNROLL-LOOPS %s
|
|
|
|
// RUN: %clang -### -S -fno-unroll-loops -funroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-UNROLL-LOOPS %s
|
|
|
|
// RUN: %clang -### -S -funroll-loops -fno-unroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-UNROLL-LOOPS %s
|
|
|
|
// CHECK-UNROLL-LOOPS: "-funroll-loops"
|
|
|
|
// CHECK-NO-UNROLL-LOOPS: "-fno-unroll-loops"
|
|
|
|
|
2013-11-18 00:03:29 +08:00
|
|
|
// RUN: %clang -### -S -freroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-REROLL-LOOPS %s
|
|
|
|
// RUN: %clang -### -S -fno-reroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-REROLL-LOOPS %s
|
|
|
|
// RUN: %clang -### -S -fno-reroll-loops -freroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-REROLL-LOOPS %s
|
|
|
|
// RUN: %clang -### -S -freroll-loops -fno-reroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-NO-REROLL-LOOPS %s
|
|
|
|
// CHECK-REROLL-LOOPS: "-freroll-loops"
|
|
|
|
// CHECK-NO-REROLL-LOOPS-NOT: "-freroll-loops"
|
|
|
|
|
2017-08-25 05:37:33 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-sample-accurate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-SAMPLE-ACCURATE %s
|
|
|
|
// CHECK-PROFILE-SAMPLE-ACCURATE: "-fprofile-sample-accurate"
|
|
|
|
|
2013-11-13 20:22:39 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-sample-use=%S/Inputs/file.prof %s 2>&1 | FileCheck -check-prefix=CHECK-SAMPLE-PROFILE %s
|
|
|
|
// CHECK-SAMPLE-PROFILE: "-fprofile-sample-use={{.*}}/file.prof"
|
|
|
|
|
2013-12-07 01:58:19 +08:00
|
|
|
// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof %s 2>&1 | FileCheck -check-prefix=CHECK-AUTO-PROFILE %s
|
|
|
|
// CHECK-AUTO-PROFILE: "-fprofile-sample-use={{.*}}/file.prof"
|
|
|
|
|
2017-03-22 05:40:53 +08:00
|
|
|
// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-profile-sample-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-AUTO-PROFILE %s
|
|
|
|
// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-auto-profile %s 2>&1 | FileCheck -check-prefix=CHECK-NO-AUTO-PROFILE %s
|
|
|
|
// CHECK-NO-AUTO-PROFILE-NOT: "-fprofile-sample-use={{.*}}/file.prof"
|
|
|
|
|
|
|
|
// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-profile-sample-use -fauto-profile %s 2>&1 | FileCheck -check-prefix=CHECK-AUTO-PROFILE %s
|
|
|
|
// RUN: %clang -### -S -fauto-profile=%S/Inputs/file.prof -fno-auto-profile -fprofile-sample-use %s 2>&1 | FileCheck -check-prefix=CHECK-AUTO-PROFILE %s
|
|
|
|
|
2014-08-07 11:58:32 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-ARCS %s
|
|
|
|
// RUN: %clang -### -S -fno-profile-arcs -fprofile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-ARCS %s
|
|
|
|
// RUN: %clang -### -S -fno-profile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PROFILE-ARCS %s
|
|
|
|
// RUN: %clang -### -S -fprofile-arcs -fno-profile-arcs %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PROFILE-ARCS %s
|
|
|
|
// CHECK-PROFILE-ARCS: "-femit-coverage-data"
|
|
|
|
// CHECK-NO-PROFILE-ARCS-NOT: "-femit-coverage-data"
|
|
|
|
|
2016-09-01 07:04:32 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-dir=abc %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-DIR-UNUSED %s
|
|
|
|
// RUN: %clang -### -S -ftest-coverage -fprofile-dir=abc %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-DIR-UNUSED %s
|
|
|
|
// RUN: %clang -### -S -fprofile-arcs -fprofile-dir=abc %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-DIR %s
|
|
|
|
// RUN: %clang -### -S --coverage -fprofile-dir=abc %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-DIR %s
|
|
|
|
// RUN: %clang -### -S -fprofile-arcs -fno-profile-arcs -fprofile-dir=abc %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-DIR-NEITHER %s
|
|
|
|
// CHECK-PROFILE-DIR: "-coverage-data-file" "abc
|
|
|
|
// CHECK-PROFILE-DIR-UNUSED: argument unused
|
|
|
|
// CHECK-PROFILE-DIR-UNUSED-NOT: "-coverage-data-file" "abc
|
|
|
|
// CHECK-PROFILE-DIR-NEITHER-NOT: argument unused
|
|
|
|
|
2018-11-28 01:31:08 +08:00
|
|
|
// RUN: %clang -### -fprofile-arcs -ftest-coverage %s 2>&1 | FileCheck -check-prefix=CHECK-u %s
|
|
|
|
// RUN: %clang -### --coverage %s 2>&1 | FileCheck -check-prefix=CHECK-u %s
|
|
|
|
// CHECK-u-NOT: "-u{{.*}}"
|
|
|
|
|
2016-07-16 10:54:58 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-LLVM %s
|
2015-07-10 01:23:53 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate=/some/dir %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-DIR %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate=/tmp/somefile.profraw %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-GENERATE-FILE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate=file -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate=dir -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate=dir -fprofile-use=dir %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate=dir -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-generate=dir -fprofile-instr-use=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GEN-USE %s
|
2015-08-06 05:49:51 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate=file -fno-profile-instr-generate %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-GEN %s
|
2016-07-16 10:54:58 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fprofile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GENERATE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fprofile-generate=file %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-GENERATE %s
|
2015-08-06 05:49:51 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-generate=dir -fno-profile-generate %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-GEN %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-use=file -fno-profile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-use=file -fno-profile-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-use=file -fno-profile-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-use=file -fno-profile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-USE %s
|
2015-08-06 07:27:40 +08:00
|
|
|
// RUN: %clang -### -S -fcoverage-mapping %s 2>&1 | FileCheck -check-prefix=CHECK-COVERAGE-AND-GEN %s
|
|
|
|
// RUN: %clang -### -S -fcoverage-mapping -fno-coverage-mapping %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-COVERAGE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-generate -fcoverage-mapping -fno-coverage-mapping %s 2>&1 | FileCheck -check-prefix=CHECK-DISABLE-COVERAGE %s
|
2018-10-11 07:13:35 +08:00
|
|
|
// RUN: %clang -### -S -fprofile-remapping-file foo/bar.txt %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-REMAP %s
|
2016-02-05 02:39:09 +08:00
|
|
|
// CHECK-PROFILE-GENERATE: "-fprofile-instrument=clang"
|
2016-07-16 10:54:58 +08:00
|
|
|
// CHECK-PROFILE-GENERATE-LLVM: "-fprofile-instrument=llvm"
|
2016-07-23 06:25:01 +08:00
|
|
|
// CHECK-PROFILE-GENERATE-DIR: "-fprofile-instrument-path=/some/dir{{/|\\\\}}{{.*}}"
|
2016-02-05 02:39:09 +08:00
|
|
|
// CHECK-PROFILE-GENERATE-FILE: "-fprofile-instrument-path=/tmp/somefile.profraw"
|
2015-07-10 01:23:53 +08:00
|
|
|
// CHECK-NO-MIX-GEN-USE: '{{[a-z=-]*}}' not allowed with '{{[a-z=-]*}}'
|
2016-07-16 10:54:58 +08:00
|
|
|
// CHECK-NO-MIX-GENERATE: '{{[a-z=-]*}}' not allowed with '{{[a-z=-]*}}'
|
2016-02-05 02:39:09 +08:00
|
|
|
// CHECK-DISABLE-GEN-NOT: "-fprofile-instrument=clang"
|
2015-08-06 05:49:51 +08:00
|
|
|
// CHECK-DISABLE-USE-NOT: "-fprofile-instr-use"
|
2015-08-06 07:27:40 +08:00
|
|
|
// CHECK-COVERAGE-AND-GEN: '-fcoverage-mapping' only allowed with '-fprofile-instr-generate'
|
|
|
|
// CHECK-DISABLE-COVERAGE-NOT: "-fcoverage-mapping"
|
2018-10-11 07:13:35 +08:00
|
|
|
// CHECK-PROFILE-REMAP: "-fprofile-remapping-file=foo/bar.txt"
|
2015-07-10 01:23:53 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fprofile-use %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-use %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE %s
|
|
|
|
// RUN: mkdir -p %t.d/some/dir
|
|
|
|
// RUN: %clang -### -S -fprofile-use=%t.d/some/dir %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE-DIR %s
|
|
|
|
// RUN: %clang -### -S -fprofile-instr-use=/tmp/somefile.prof %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-USE-FILE %s
|
2016-03-03 04:59:36 +08:00
|
|
|
// CHECK-PROFILE-USE: "-fprofile-instrument-use-path=default.profdata"
|
|
|
|
// CHECK-PROFILE-USE-DIR: "-fprofile-instrument-use-path={{.*}}.d/some/dir{{/|\\\\}}default.profdata"
|
|
|
|
// CHECK-PROFILE-USE-FILE: "-fprofile-instrument-use-path=/tmp/somefile.prof"
|
2015-07-10 01:23:53 +08:00
|
|
|
|
2012-12-12 01:12:28 +08:00
|
|
|
// RUN: %clang -### -S -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fvectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
2012-12-12 01:46:33 +08:00
|
|
|
// RUN: %clang -### -S -ftree-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
2012-12-19 07:08:58 +08:00
|
|
|
// RUN: %clang -### -S -fno-tree-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-tree-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
2012-12-12 01:46:33 +08:00
|
|
|
// RUN: %clang -### -S -ftree-vectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
2013-08-13 23:46:23 +08:00
|
|
|
// RUN: %clang -### -S -O %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-vectorize -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O1 -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -Ofast %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O0 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O1 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
|
2012-12-12 01:12:28 +08:00
|
|
|
// CHECK-VECTORIZE: "-vectorize-loops"
|
|
|
|
// CHECK-NO-VECTORIZE-NOT: "-vectorize-loops"
|
2012-12-12 03:59:32 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fslp-vectorize -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -ftree-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
2012-12-19 07:08:58 +08:00
|
|
|
// RUN: %clang -### -S -fno-tree-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-tree-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
2012-12-12 03:59:32 +08:00
|
|
|
// RUN: %clang -### -S -ftree-slp-vectorize -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
2014-04-29 03:30:57 +08:00
|
|
|
// RUN: %clang -### -S -O %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
2014-05-03 02:41:57 +08:00
|
|
|
// RUN: %clang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
2014-04-29 03:30:57 +08:00
|
|
|
// RUN: %clang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -fno-slp-vectorize -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O1 -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -Ofast %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O0 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
|
|
|
// RUN: %clang -### -S -O1 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
|
2013-04-15 12:57:18 +08:00
|
|
|
// CHECK-SLP-VECTORIZE: "-vectorize-slp"
|
|
|
|
// CHECK-NO-SLP-VECTORIZE-NOT: "-vectorize-slp"
|
2013-02-07 02:15:40 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fextended-identifiers %s 2>&1 | FileCheck -check-prefix=CHECK-EXTENDED-IDENTIFIERS %s
|
2017-05-24 22:57:17 +08:00
|
|
|
// RUN: not %clang -### -S -fno-extended-identifiers %s 2>&1 | FileCheck -check-prefix=CHECK-NO-EXTENDED-IDENTIFIERS %s
|
2013-02-07 02:15:40 +08:00
|
|
|
// CHECK-EXTENDED-IDENTIFIERS: "-cc1"
|
|
|
|
// CHECK-EXTENDED-IDENTIFIERS-NOT: "-fextended-identifiers"
|
|
|
|
// CHECK-NO-EXTENDED-IDENTIFIERS: error: unsupported option '-fno-extended-identifiers'
|
2013-08-01 07:39:13 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fno-pascal-strings -mpascal-strings %s 2>&1 | FileCheck -check-prefix=CHECK-M-PASCAL-STRINGS %s
|
|
|
|
// CHECK-M-PASCAL-STRINGS: "-fpascal-strings"
|
|
|
|
|
|
|
|
// RUN: %clang -### -S -fpascal-strings -mno-pascal-strings %s 2>&1 | FileCheck -check-prefix=CHECK-NO-M-PASCAL-STRINGS %s
|
|
|
|
// CHECK-NO-M-PASCAL-STRINGS-NOT: "-fpascal-strings"
|
2013-08-24 05:49:00 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -O4 %s 2>&1 | FileCheck -check-prefix=CHECK-MAX-O %s
|
2013-08-28 00:58:15 +08:00
|
|
|
// CHECK-MAX-O: warning: -O4 is equivalent to -O3
|
2013-08-24 05:49:00 +08:00
|
|
|
// CHECK-MAX-O: -O3
|
2013-09-26 21:10:14 +08:00
|
|
|
|
2013-11-19 05:58:33 +08:00
|
|
|
// RUN: %clang -S -O20 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-O %s
|
2014-07-15 03:16:22 +08:00
|
|
|
// CHECK-INVALID-O: warning: optimization level '-O20' is not supported; using '-O3' instead
|
2013-11-18 21:23:07 +08:00
|
|
|
|
2014-07-02 01:24:27 +08:00
|
|
|
// RUN: %clang -### -S -finput-charset=iso-8859-1 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-CHARSET %s
|
|
|
|
// CHECK-INVALID-CHARSET: error: invalid value 'iso-8859-1' in '-finput-charset=iso-8859-1'
|
|
|
|
|
2014-08-12 02:09:03 +08:00
|
|
|
// RUN: %clang -### -S -fexec-charset=iso-8859-1 -o /dev/null %s 2>&1 | FileCheck -check-prefix=CHECK-INVALID-INPUT-CHARSET %s
|
|
|
|
// CHECK-INVALID-INPUT-CHARSET: error: invalid value 'iso-8859-1' in '-fexec-charset=iso-8859-1'
|
|
|
|
|
2013-09-26 21:10:14 +08:00
|
|
|
// Test that we don't error on these.
|
2013-09-27 00:45:27 +08:00
|
|
|
// RUN: %clang -### -S -Werror \
|
2013-09-26 21:10:14 +08:00
|
|
|
// RUN: -falign-functions -falign-functions=2 -fno-align-functions \
|
|
|
|
// RUN: -fasynchronous-unwind-tables -fno-asynchronous-unwind-tables \
|
|
|
|
// RUN: -fbuiltin -fno-builtin \
|
2013-10-24 17:17:35 +08:00
|
|
|
// RUN: -fdiagnostics-show-location=once \
|
2013-09-26 21:10:14 +08:00
|
|
|
// RUN: -ffloat-store -fno-float-store \
|
|
|
|
// RUN: -feliminate-unused-debug-types -fno-eliminate-unused-debug-types \
|
|
|
|
// RUN: -fgcse -fno-gcse \
|
|
|
|
// RUN: -fident -fno-ident \
|
2013-10-24 17:21:37 +08:00
|
|
|
// RUN: -fimplicit-templates -fno-implicit-templates \
|
2014-07-02 01:24:27 +08:00
|
|
|
// RUN: -finput-charset=UTF-8 \
|
2014-08-12 02:09:03 +08:00
|
|
|
// RUN: -fexec-charset=UTF-8 \
|
2013-09-26 21:10:14 +08:00
|
|
|
// RUN: -fivopts -fno-ivopts \
|
|
|
|
// RUN: -fnon-call-exceptions -fno-non-call-exceptions \
|
|
|
|
// RUN: -fpermissive -fno-permissive \
|
2014-07-04 16:59:41 +08:00
|
|
|
// RUN: -fdefer-pop -fno-defer-pop \
|
2013-09-26 21:10:14 +08:00
|
|
|
// RUN: -fprefetch-loop-arrays -fno-prefetch-loop-arrays \
|
|
|
|
// RUN: -fprofile-correction -fno-profile-correction \
|
|
|
|
// RUN: -fprofile-values -fno-profile-values \
|
|
|
|
// RUN: -frounding-math -fno-rounding-math \
|
|
|
|
// RUN: -fsee -fno-see \
|
|
|
|
// RUN: -ftracer -fno-tracer \
|
|
|
|
// RUN: -funroll-all-loops -fno-unroll-all-loops \
|
2013-10-04 03:45:55 +08:00
|
|
|
// RUN: -fuse-ld=gold \
|
2013-09-27 00:15:40 +08:00
|
|
|
// RUN: -fno-builtin-foobar \
|
2013-09-27 00:45:27 +08:00
|
|
|
// RUN: -fno-builtin-strcat -fno-builtin-strcpy \
|
2013-09-27 01:03:34 +08:00
|
|
|
// RUN: -fno-var-tracking \
|
2013-09-27 13:06:31 +08:00
|
|
|
// RUN: -fno-unsigned-char \
|
|
|
|
// RUN: -fno-signed-char \
|
2013-10-22 02:49:56 +08:00
|
|
|
// RUN: -fstrength-reduce -fno-strength-reduce \
|
2014-07-11 19:43:57 +08:00
|
|
|
// RUN: -finline-limit=1000 \
|
|
|
|
// RUN: -finline-limit \
|
2014-08-06 02:13:48 +08:00
|
|
|
// RUN: -flto=1 \
|
|
|
|
// RUN: -falign-labels \
|
|
|
|
// RUN: -falign-labels=100 \
|
|
|
|
// RUN: -falign-loops \
|
|
|
|
// RUN: -falign-loops=100 \
|
|
|
|
// RUN: -falign-jumps \
|
|
|
|
// RUN: -falign-jumps=100 \
|
|
|
|
// RUN: -fexcess-precision=100 \
|
2014-08-06 07:43:21 +08:00
|
|
|
// RUN: -fbranch-count-reg \
|
2014-08-06 02:13:48 +08:00
|
|
|
// RUN: -fcaller-saves \
|
|
|
|
// RUN: -fno-default-inline -fdefault-inline \
|
|
|
|
// RUN: -fgcse-after-reload \
|
|
|
|
// RUN: -fgcse-las \
|
|
|
|
// RUN: -fgcse-sm \
|
|
|
|
// RUN: -fipa-cp \
|
|
|
|
// RUN: -finline-functions-called-once \
|
|
|
|
// RUN: -fmodulo-sched \
|
|
|
|
// RUN: -fmodulo-sched-allow-regmoves \
|
|
|
|
// RUN: -fpeel-loops \
|
|
|
|
// RUN: -frename-registers \
|
|
|
|
// RUN: -fschedule-insns2 \
|
|
|
|
// RUN: -fsingle-precision-constant \
|
|
|
|
// RUN: -ftree_loop_im \
|
|
|
|
// RUN: -ftree_loop_ivcanon \
|
|
|
|
// RUN: -ftree_loop_linear \
|
|
|
|
// RUN: -funsafe-loop-optimizations \
|
|
|
|
// RUN: -fuse-linker-plugin \
|
|
|
|
// RUN: -fvect-cost-model \
|
|
|
|
// RUN: -fvariable-expansion-in-unroller \
|
|
|
|
// RUN: -fweb \
|
|
|
|
// RUN: -fwhole-program \
|
|
|
|
// RUN: -fno-tree-dce -ftree-dce \
|
|
|
|
// RUN: -fno-tree-ter -ftree-ter \
|
|
|
|
// RUN: -fno-tree-vrp -ftree-vrp \
|
|
|
|
// RUN: -fno-delete-null-pointer-checks -fdelete-null-pointer-checks \
|
|
|
|
// RUN: -fno-inline-small-functions -finline-small-functions \
|
|
|
|
// RUN: -fno-fat-lto-objects -ffat-lto-objects \
|
|
|
|
// RUN: -fno-merge-constants -fmerge-constants \
|
2018-04-05 23:29:52 +08:00
|
|
|
// RUN: -fno-merge-all-constants -fmerge-all-constants \
|
2014-08-06 02:13:48 +08:00
|
|
|
// RUN: -fno-caller-saves -fcaller-saves \
|
|
|
|
// RUN: -fno-reorder-blocks -freorder-blocks \
|
|
|
|
// RUN: -fno-schedule-insns2 -fschedule-insns2 \
|
2014-08-06 02:21:20 +08:00
|
|
|
// RUN: -fno-stack-check \
|
|
|
|
// RUN: -fno-check-new -fcheck-new \
|
|
|
|
// RUN: -ffriend-injection \
|
|
|
|
// RUN: -fno-implement-inlines -fimplement-inlines \
|
|
|
|
// RUN: -fstack-check \
|
2014-08-06 07:43:21 +08:00
|
|
|
// RUN: -fforce-addr \
|
2014-08-06 02:21:20 +08:00
|
|
|
// RUN: -malign-functions=100 \
|
|
|
|
// RUN: -malign-loops=100 \
|
|
|
|
// RUN: -malign-jumps=100 \
|
2013-10-04 03:34:34 +08:00
|
|
|
// RUN: %s 2>&1 | FileCheck --check-prefix=IGNORE %s
|
|
|
|
// IGNORE-NOT: error: unknown argument
|
2014-02-25 02:43:28 +08:00
|
|
|
|
2014-07-11 19:43:57 +08:00
|
|
|
// Test that the warning is displayed on these.
|
2014-07-18 19:38:58 +08:00
|
|
|
// RUN: %clang -### \
|
|
|
|
// RUN: -finline-limit=1000 \
|
|
|
|
// RUN: -finline-limit \
|
|
|
|
// RUN: -fexpensive-optimizations \
|
|
|
|
// RUN: -fno-expensive-optimizations \
|
|
|
|
// RUN: -fno-defer-pop \
|
2014-08-27 13:12:35 +08:00
|
|
|
// RUN: -fkeep-inline-functions \
|
2014-07-18 19:38:58 +08:00
|
|
|
// RUN: -fno-keep-inline-functions \
|
|
|
|
// RUN: -freorder-blocks \
|
|
|
|
// RUN: -ffloat-store \
|
|
|
|
// RUN: -fgcse \
|
|
|
|
// RUN: -fivopts \
|
|
|
|
// RUN: -fprefetch-loop-arrays \
|
|
|
|
// RUN: -fprofile-correction \
|
|
|
|
// RUN: -fprofile-values \
|
|
|
|
// RUN: -frounding-math \
|
|
|
|
// RUN: -fschedule-insns \
|
|
|
|
// RUN: -fsignaling-nans \
|
|
|
|
// RUN: -fstrength-reduce \
|
|
|
|
// RUN: -ftracer \
|
|
|
|
// RUN: -funroll-all-loops \
|
|
|
|
// RUN: -funswitch-loops \
|
2014-08-06 02:13:48 +08:00
|
|
|
// RUN: -flto=1 \
|
|
|
|
// RUN: -falign-labels \
|
|
|
|
// RUN: -falign-labels=100 \
|
|
|
|
// RUN: -falign-loops \
|
|
|
|
// RUN: -falign-loops=100 \
|
|
|
|
// RUN: -falign-jumps \
|
|
|
|
// RUN: -falign-jumps=100 \
|
|
|
|
// RUN: -fexcess-precision=100 \
|
2014-08-06 07:43:21 +08:00
|
|
|
// RUN: -fbranch-count-reg \
|
2014-08-06 02:13:48 +08:00
|
|
|
// RUN: -fcaller-saves \
|
|
|
|
// RUN: -fno-default-inline \
|
|
|
|
// RUN: -fgcse-after-reload \
|
|
|
|
// RUN: -fgcse-las \
|
|
|
|
// RUN: -fgcse-sm \
|
|
|
|
// RUN: -fipa-cp \
|
|
|
|
// RUN: -finline-functions-called-once \
|
|
|
|
// RUN: -fmodulo-sched \
|
|
|
|
// RUN: -fmodulo-sched-allow-regmoves \
|
|
|
|
// RUN: -fpeel-loops \
|
|
|
|
// RUN: -frename-registers \
|
|
|
|
// RUN: -fschedule-insns2 \
|
|
|
|
// RUN: -fsingle-precision-constant \
|
|
|
|
// RUN: -ftree_loop_im \
|
|
|
|
// RUN: -ftree_loop_ivcanon \
|
|
|
|
// RUN: -ftree_loop_linear \
|
|
|
|
// RUN: -funsafe-loop-optimizations \
|
|
|
|
// RUN: -fuse-linker-plugin \
|
|
|
|
// RUN: -fvect-cost-model \
|
|
|
|
// RUN: -fvariable-expansion-in-unroller \
|
|
|
|
// RUN: -fweb \
|
|
|
|
// RUN: -fwhole-program \
|
|
|
|
// RUN: -fcaller-saves \
|
|
|
|
// RUN: -freorder-blocks \
|
|
|
|
// RUN: -ffat-lto-objects \
|
|
|
|
// RUN: -fmerge-constants \
|
|
|
|
// RUN: -finline-small-functions \
|
|
|
|
// RUN: -ftree-dce \
|
|
|
|
// RUN: -ftree-ter \
|
|
|
|
// RUN: -ftree-vrp \
|
2014-08-27 03:57:01 +08:00
|
|
|
// RUN: -fno-devirtualize \
|
|
|
|
// RUN: -fno-devirtualize-speculatively \
|
2017-07-02 05:36:21 +08:00
|
|
|
// RUN: -fslp-vectorize-aggressive \
|
|
|
|
// RUN: -fno-slp-vectorize-aggressive \
|
2014-07-18 19:38:58 +08:00
|
|
|
// RUN: %s 2>&1 | FileCheck --check-prefix=CHECK-WARNING %s
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-finline-limit=1000' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-finline-limit' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fexpensive-optimizations' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fno-expensive-optimizations' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fno-defer-pop' is not supported
|
2014-08-27 13:12:35 +08:00
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fkeep-inline-functions' is not supported
|
2014-07-18 19:38:58 +08:00
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fno-keep-inline-functions' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-freorder-blocks' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ffloat-store' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fgcse' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fivopts' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fprefetch-loop-arrays' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fprofile-correction' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fprofile-values' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-frounding-math' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fschedule-insns' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fsignaling-nans' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fstrength-reduce' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftracer' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-funroll-all-loops' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-funswitch-loops' is not supported
|
2015-10-16 04:35:53 +08:00
|
|
|
// CHECK-WARNING-DAG: unsupported argument '1' to option 'flto='
|
2014-08-06 02:13:48 +08:00
|
|
|
// CHECK-WARNING-DAG: optimization flag '-falign-labels' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-falign-labels=100' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-falign-loops' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-falign-loops=100' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-falign-jumps' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-falign-jumps=100' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fexcess-precision=100' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fbranch-count-reg' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fcaller-saves' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fno-default-inline' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fgcse-after-reload' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fgcse-las' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fgcse-sm' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fipa-cp' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-finline-functions-called-once' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fmodulo-sched' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fmodulo-sched-allow-regmoves' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fpeel-loops' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-frename-registers' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fschedule-insns2' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fsingle-precision-constant' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftree_loop_im' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftree_loop_ivcanon' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftree_loop_linear' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-funsafe-loop-optimizations' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fuse-linker-plugin' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fvect-cost-model' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fvariable-expansion-in-unroller' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fweb' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fwhole-program' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fcaller-saves' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-freorder-blocks' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ffat-lto-objects' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fmerge-constants' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-finline-small-functions' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftree-dce' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftree-ter' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-ftree-vrp' is not supported
|
2014-08-27 03:57:01 +08:00
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fno-devirtualize' is not supported
|
|
|
|
// CHECK-WARNING-DAG: optimization flag '-fno-devirtualize-speculatively' is not supported
|
2017-07-02 05:36:21 +08:00
|
|
|
// CHECK-WARNING-DAG: the flag '-fslp-vectorize-aggressive' has been deprecated and will be ignored
|
|
|
|
// CHECK-WARNING-DAG: the flag '-fno-slp-vectorize-aggressive' has been deprecated and will be ignored
|
2014-07-11 19:43:57 +08:00
|
|
|
|
2014-07-12 01:23:13 +08:00
|
|
|
// Test that we mute the warning on these
|
2014-07-15 02:11:38 +08:00
|
|
|
// RUN: %clang -### -finline-limit=1000 -Wno-invalid-command-line-argument \
|
2014-07-12 01:23:13 +08:00
|
|
|
// RUN: %s 2>&1 | FileCheck --check-prefix=CHECK-NO-WARNING1 %s
|
2014-07-15 02:11:38 +08:00
|
|
|
// RUN: %clang -### -finline-limit -Wno-invalid-command-line-argument \
|
2014-07-12 01:23:13 +08:00
|
|
|
// RUN: %s 2>&1 | FileCheck --check-prefix=CHECK-NO-WARNING2 %s
|
2014-07-24 07:29:01 +08:00
|
|
|
// RUN: %clang -### -finline-limit \
|
|
|
|
// RUN: -Winvalid-command-line-argument -Wno-ignored-optimization-argument \
|
|
|
|
// RUN: %s 2>&1 | FileCheck --check-prefix=CHECK-NO-WARNING2 %s
|
2014-07-15 02:11:38 +08:00
|
|
|
// CHECK-NO-WARNING1-NOT: optimization flag '-finline-limit=1000' is not supported
|
|
|
|
// CHECK-NO-WARNING2-NOT: optimization flag '-finline-limit' is not supported
|
2014-07-12 01:23:13 +08:00
|
|
|
|
2015-08-06 02:03:47 +08:00
|
|
|
// Test that an ignored optimization argument only prints 1 warning,
|
|
|
|
// not both a warning about not claiming the arg, *and* about not supporting
|
|
|
|
// the arg; and that adding -Wno-ignored-optimization silences the warning.
|
|
|
|
//
|
|
|
|
// RUN: %clang -### -fprofile-correction %s 2>&1 \
|
|
|
|
// RUN: | FileCheck --check-prefix=CHECK-NO-WARNING3 %s
|
|
|
|
// CHECK-NO-WARNING3: optimization flag '-fprofile-correction' is not supported
|
|
|
|
// CHECK-NO-WARNING3-NOT: argument unused
|
|
|
|
// RUN: %clang -### -fprofile-correction -Wno-ignored-optimization-argument %s 2>&1 \
|
|
|
|
// RUN: | FileCheck --check-prefix=CHECK-NO-WARNING4 %s
|
|
|
|
// CHECK-NO-WARNING4-NOT: not supported
|
|
|
|
// CHECK-NO-WARNING4-NOT: argument unused
|
|
|
|
|
2015-05-24 02:48:37 +08:00
|
|
|
// RUN: %clang -### -S -fsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN1 %s
|
|
|
|
// CHAR-SIGN1-NOT: -fno-signed-char
|
|
|
|
|
|
|
|
// RUN: %clang -### -S -funsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN2 %s
|
|
|
|
// CHAR-SIGN2: -fno-signed-char
|
|
|
|
|
|
|
|
// RUN: %clang -### -S -fno-signed-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN3 %s
|
|
|
|
// CHAR-SIGN3: -fno-signed-char
|
|
|
|
|
|
|
|
// RUN: %clang -### -S -fno-unsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN4 %s
|
|
|
|
// CHAR-SIGN4-NOT: -fno-signed-char
|
2014-07-12 01:23:13 +08:00
|
|
|
|
2017-10-07 07:09:55 +08:00
|
|
|
// RUN: %clang -target x86_64-unknown-none-none -### -fshort-wchar -fno-short-wchar %s 2>&1 | FileCheck -check-prefix=CHECK-WCHAR1 -check-prefix=DELIMITERS %s
|
|
|
|
// RUN: %clang -target x86_64-unknown-none-none -### -fno-short-wchar -fshort-wchar %s 2>&1 | FileCheck -check-prefix=CHECK-WCHAR2 -check-prefix=DELIMITERS %s
|
2015-02-12 11:37:55 +08:00
|
|
|
// Make sure we don't match the -NOT lines with the linker invocation.
|
|
|
|
// Delimiters match the start of the cc1 and the start of the linker lines
|
|
|
|
// DELIMITERS: {{^ *"}}
|
2017-10-07 07:09:55 +08:00
|
|
|
// CHECK-WCHAR1: -fwchar-type=int
|
|
|
|
// CHECK-WCHAR1-NOT: -fwchar-type=short
|
|
|
|
// CHECK-WCHAR2: -fwchar-type=short
|
|
|
|
// CHECK-WCHAR2-NOT: -fwchar-type=int
|
2015-02-12 11:37:55 +08:00
|
|
|
// DELIMITERS: {{^ *"}}
|
2016-12-24 04:44:01 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -fno-experimental-new-pass-manager -fexperimental-new-pass-manager %s 2>&1 | FileCheck --check-prefix=CHECK-PM --check-prefix=CHECK-NEW-PM %s
|
|
|
|
// RUN: %clang -### -fexperimental-new-pass-manager -fno-experimental-new-pass-manager %s 2>&1 | FileCheck --check-prefix=CHECK-PM --check-prefix=CHECK-NO-NEW-PM %s
|
|
|
|
// CHECK-PM-NOT: argument unused
|
|
|
|
// CHECK-NEW-PM: -fexperimental-new-pass-manager
|
|
|
|
// CHECK-NEW-PM-NOT: -fno-experimental-new-pass-manager
|
|
|
|
// CHECK-NO-NEW-PM: -fno-experimental-new-pass-manager
|
|
|
|
// CHECK-NO-NEW-PM-NOT: -fexperimental-new-pass-manager
|
2017-01-04 21:40:34 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fstrict-return %s 2>&1 | FileCheck -check-prefix=CHECK-STRICT-RETURN %s
|
|
|
|
// RUN: %clang -### -S -fno-strict-return %s 2>&1 | FileCheck -check-prefix=CHECK-NO-STRICT-RETURN %s
|
|
|
|
// CHECK-STRICT-RETURN-NOT: "-fno-strict-return"
|
|
|
|
// CHECK-NO-STRICT-RETURN: "-fno-strict-return"
|
Add -fdebug-info-for-profiling to emit more debug info for sample pgo profile collection
Summary:
SamplePGO uses profile with debug info to collect profile. Unlike the traditional debugging purpose, sample pgo needs more accurate debug info to represent the profile. We add -femit-accurate-debug-info for this purpose. It can be combined with all debugging modes (-g, -gmlt, etc). It makes sure that the following pieces of info is always emitted:
* start line of all subprograms
* linkage name of all subprograms
* standalone subprograms (functions that has neither inlined nor been inlined)
The impact on speccpu2006 binary size (size increase comparing with -g0 binary, also includes data for -g binary, which does not change with this patch):
-gmlt(orig) -gmlt(patched) -g
433.milc 4.68% 5.40% 19.73%
444.namd 8.45% 8.93% 45.99%
447.dealII 97.43% 115.21% 374.89%
450.soplex 27.75% 31.88% 126.04%
453.povray 21.81% 26.16% 92.03%
470.lbm 0.60% 0.67% 1.96%
482.sphinx3 5.77% 6.47% 26.17%
400.perlbench 17.81% 19.43% 73.08%
401.bzip2 3.73% 3.92% 12.18%
403.gcc 31.75% 34.48% 122.75%
429.mcf 0.78% 0.88% 3.89%
445.gobmk 6.08% 7.92% 42.27%
456.hmmer 10.36% 11.25% 35.23%
458.sjeng 5.08% 5.42% 14.36%
462.libquantum 1.71% 1.96% 6.36%
464.h264ref 15.61% 16.56% 43.92%
471.omnetpp 11.93% 15.84% 60.09%
473.astar 3.11% 3.69% 14.18%
483.xalancbmk 56.29% 81.63% 353.22%
geomean 15.60% 18.30% 57.81%
Debug info size change for -gmlt binary with this patch:
433.milc 13.46%
444.namd 5.35%
447.dealII 18.21%
450.soplex 14.68%
453.povray 19.65%
470.lbm 6.03%
482.sphinx3 11.21%
400.perlbench 8.91%
401.bzip2 4.41%
403.gcc 8.56%
429.mcf 8.24%
445.gobmk 29.47%
456.hmmer 8.19%
458.sjeng 6.05%
462.libquantum 11.23%
464.h264ref 5.93%
471.omnetpp 31.89%
473.astar 16.20%
483.xalancbmk 44.62%
geomean 16.83%
Reviewers: davidxl, andreadb, rob.lougher, dblaikie, echristo
Reviewed By: dblaikie, echristo
Subscribers: hfinkel, rob.lougher, andreadb, gbedwell, cfe-commits, probinson, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25435
llvm-svn: 292458
2017-01-19 08:44:21 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fno-debug-info-for-profiling -fdebug-info-for-profiling %s 2>&1 | FileCheck -check-prefix=CHECK-PROFILE-DEBUG %s
|
|
|
|
// RUN: %clang -### -S -fdebug-info-for-profiling -fno-debug-info-for-profiling %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PROFILE-DEBUG %s
|
|
|
|
// CHECK-PROFILE-DEBUG: -fdebug-info-for-profiling
|
|
|
|
// CHECK-NO-PROFILE-DEBUG-NOT: -fdebug-info-for-profiling
|
2017-04-19 16:58:56 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fallow-editor-placeholders %s 2>&1 | FileCheck -check-prefix=CHECK-ALLOW-PLACEHOLDERS %s
|
|
|
|
// RUN: %clang -### -S -fno-allow-editor-placeholders %s 2>&1 | FileCheck -check-prefix=CHECK-NO-ALLOW-PLACEHOLDERS %s
|
|
|
|
// CHECK-ALLOW-PLACEHOLDERS: -fallow-editor-placeholders
|
|
|
|
// CHECK-NO-ALLOW-PLACEHOLDERS-NOT: -fallow-editor-placeholders
|
2017-10-07 07:09:55 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -target x86_64-unknown-windows-msvc -fno-short-wchar %s 2>&1 | FileCheck -check-prefix CHECK-WINDOWS-ISO10646 %s
|
|
|
|
// CHECK-WINDOWS-ISO10646: "-fwchar-type=int"
|
|
|
|
// CHECK-WINDOWS-ISO10646: "-fsigned-wchar"
|
|
|
|
|
2018-01-09 16:53:59 +08:00
|
|
|
// RUN: %clang -### -S -fcf-protection %s 2>&1 | FileCheck -check-prefix=CHECK-CF-PROTECTION-FULL %s
|
|
|
|
// RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CF-PROTECTION-FULL %s
|
|
|
|
// RUN: %clang -### -S -fcf-protection=full %s 2>&1 | FileCheck -check-prefix=CHECK-CF-PROTECTION-FULL %s
|
|
|
|
// RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CF-PROTECTION-FULL %s
|
|
|
|
// CHECK-CF-PROTECTION-FULL: -fcf-protection=full
|
|
|
|
// CHECK-NO-CF-PROTECTION-FULL-NOT: -fcf-protection=full
|
|
|
|
// RUN: %clang -### -S -fcf-protection=return %s 2>&1 | FileCheck -check-prefix=CHECK-CF-PROTECTION-RETURN %s
|
|
|
|
// RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CF-PROTECTION-RETURN %s
|
|
|
|
// CHECK-CF-PROTECTION-RETURN: -fcf-protection=return
|
|
|
|
// CHECK-NO-CF-PROTECTION-RETURN-NOT: -fcf-protection=return
|
|
|
|
// RUN: %clang -### -S -fcf-protection=branch %s 2>&1 | FileCheck -check-prefix=CHECK-CF-PROTECTION-BRANCH %s
|
|
|
|
// RUN: %clang -### -S %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CF-PROTECTION-BRANCH %s
|
|
|
|
// CHECK-CF-PROTECTION-BRANCH: -fcf-protection=branch
|
|
|
|
// CHECK-NO-CF-PROTECTION-BRANCH-NOT: -fcf-protection=branch
|
[Driver] Add option to manually control discarding value names in LLVM IR.
Summary:
Currently, assertion-disabled Clang builds emit value names when generating LLVM IR. This is controlled by the `NDEBUG` macro, and is not easily overridable. In order to get IR output containing names from a release build of Clang, the user must manually construct the CC1 invocation w/o the `-discard-value-names` option. This is less than ideal.
For example, Godbolt uses a release build of Clang, and so when asked to emit LLVM IR the result lacks names, making it harder to read. Manually invoking CC1 on Compiler Explorer is not feasible.
This patch adds the driver options `-fdiscard-value-names` and `-fno-discard-value-names` which allow the user to override the default behavior. If neither is specified, the old behavior remains.
Reviewers: erichkeane, aaron.ballman, lebedev.ri
Reviewed By: aaron.ballman
Subscribers: bogner, cfe-commits
Differential Revision: https://reviews.llvm.org/D42887
llvm-svn: 324498
2018-02-08 02:36:51 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fdiscard-value-names %s 2>&1 | FileCheck -check-prefix=CHECK-DISCARD-NAMES %s
|
|
|
|
// RUN: %clang -### -S -fno-discard-value-names %s 2>&1 | FileCheck -check-prefix=CHECK-NO-DISCARD-NAMES %s
|
|
|
|
// CHECK-DISCARD-NAMES: "-discard-value-names"
|
|
|
|
// CHECK-NO-DISCARD-NAMES-NOT: "-discard-value-names"
|
2018-04-05 23:29:52 +08:00
|
|
|
//
|
|
|
|
// RUN: %clang -### -S -fmerge-all-constants %s 2>&1 | FileCheck -check-prefix=CHECK-MERGE-ALL-CONSTANTS %s
|
|
|
|
// RUN: %clang -### -S -fno-merge-all-constants %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MERGE-ALL-CONSTANTS %s
|
|
|
|
// RUN: %clang -### -S -fmerge-all-constants -fno-merge-all-constants %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MERGE-ALL-CONSTANTS %s
|
|
|
|
// RUN: %clang -### -S -fno-merge-all-constants -fmerge-all-constants %s 2>&1 | FileCheck -check-prefix=CHECK-MERGE-ALL-CONSTANTS %s
|
|
|
|
// CHECK-NO-MERGE-ALL-CONSTANTS-NOT: "-fmerge-all-constants"
|
|
|
|
// CHECK-MERGE-ALL-CONSTANTS: "-fmerge-all-constants"
|
[clang]: Add support for "-fno-delete-null-pointer-checks"
Summary:
Support for this option is needed for building Linux kernel.
This is a very frequently requested feature by kernel developers.
More details : https://lkml.org/lkml/2018/4/4/601
GCC option description for -fdelete-null-pointer-checks:
This Assume that programs cannot safely dereference null pointers,
and that no code or data element resides at address zero.
-fno-delete-null-pointer-checks is the inverse of this implying that
null pointer dereferencing is not undefined.
This feature is implemented in as the function attribute
"null-pointer-is-valid"="true".
This CL only adds the attribute on the function.
It also strips "nonnull" attributes from function arguments but
keeps the related warnings unchanged.
Corresponding LLVM change rL336613 already updated the
optimizations to not treat null pointer dereferencing
as undefined if the attribute is present.
Reviewers: t.p.northover, efriedma, jyknight, chandlerc, rnk, srhines, void, george.burgess.iv
Reviewed By: jyknight
Subscribers: drinkcat, xbolva00, cfe-commits
Differential Revision: https://reviews.llvm.org/D47894
llvm-svn: 337433
2018-07-19 08:44:52 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fdelete-null-pointer-checks %s 2>&1 | FileCheck -check-prefix=CHECK-NULL-POINTER-CHECKS %s
|
|
|
|
// RUN: %clang -### -S -fno-delete-null-pointer-checks %s 2>&1 | FileCheck -check-prefix=CHECK-NO-NULL-POINTER-CHECKS %s
|
|
|
|
// RUN: %clang -### -S -fdelete-null-pointer-checks -fno-delete-null-pointer-checks %s 2>&1 | FileCheck -check-prefix=CHECK-NO-NULL-POINTER-CHECKS %s
|
|
|
|
// RUN: %clang -### -S -fno-delete-null-pointer-checks -fdelete-null-pointer-checks %s 2>&1 | FileCheck -check-prefix=CHECK-NULL-POINTER-CHECKS %s
|
|
|
|
// CHECK-NO-NULL-POINTER-CHECKS: "-fno-delete-null-pointer-checks"
|
|
|
|
// CHECK-NULL-POINTER-CHECKS-NOT: "-fno-delete-null-pointer-checks"
|
2018-09-14 03:50:02 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -fomit-frame-pointer -pg %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MIX-OMIT-FP-PG %s
|
|
|
|
// RUN: %clang -### -S -fomit-frame-pointer -fno-omit-frame-pointer -pg %s 2>&1 | FileCheck -check-prefix=CHECK-MIX-NO-OMIT-FP-PG %s
|
|
|
|
// CHECK-NO-MIX-OMIT-FP-PG: '-fomit-frame-pointer' not allowed with '-pg'
|
|
|
|
// CHECK-MIX-NO-OMIT-FP-PG-NOT: '-fomit-frame-pointer' not allowed with '-pg'
|
2018-12-14 23:38:15 +08:00
|
|
|
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -frecord-gcc-switches %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -fno-record-gcc-switches %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -fno-record-gcc-switches -frecord-gcc-switches %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -frecord-gcc-switches -fno-record-gcc-switches %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -frecord-command-line %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -fno-record-command-line %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -fno-record-command-line -frecord-command-line %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-linux -frecord-command-line -fno-record-command-line %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RECORD-GCC-SWITCHES %s
|
|
|
|
// Test with a couple examples of non-ELF object file formats
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-macosx -frecord-command-line %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES-ERROR %s
|
|
|
|
// RUN: %clang -### -S -target x86_64-unknown-windows -frecord-command-line %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES-ERROR %s
|
|
|
|
// CHECK-RECORD-GCC-SWITCHES: "-record-command-line"
|
|
|
|
// CHECK-NO-RECORD-GCC-SWITCHES-NOT: "-record-command-line"
|
|
|
|
// CHECK-RECORD-GCC-SWITCHES-ERROR: error: unsupported option '-frecord-command-line' for target
|