[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
Leporacanthicus wrote: Working on a fix - it should be trivial, just need to check that that it still builds and passes. [Trying to generate code without the correct target enabled!] https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-debug-reverse-iteration` running on `linaro-flang-aarch64-debug-reverse-iteration` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/20/builds/598 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -o - RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -o - RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-debug-reverse-iteration/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-dylib` running on `linaro-flang-aarch64-dylib` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/50/builds/696 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-dylib/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-dylib/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-rel-assert` running on `linaro-flang-aarch64-rel-assert` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/29/builds/721 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-rel-assert/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-release` running on `linaro-flang-aarch64-release` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/172/builds/636 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -o - RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -o - error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-release/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-release/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-sharedlibs` running on `linaro-flang-aarch64-sharedlibs` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/80/builds/701 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -o - RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -o - error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-sharedlibs/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-latest-gcc` running on `linaro-flang-aarch64-latest-gcc` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/130/builds/647 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -o - error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-latest-gcc/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-out-of-tree` running on `linaro-flang-aarch64-out-of-tree` while building `clang,flang` at step 8 "test-build-flang-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/53/builds/883 Here is the relevant piece of the build log for the reference: ``` Step 8 (test-build-flang-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_flang/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_flang/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_flang/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_flang/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_flang/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_flang/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/build_llvm/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-out-of-tree/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `ppc64le-flang-rhel-clang` running on `ppc64le-flang-rhel-test` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/157/builds/1737 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/bin/FileCheck /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/bin/FileCheck /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY error: unable to create target: 'No available targets are compatible with triple "aarch64"' FileCheck error: '' is empty. FileCheck command line: /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/build/bin/FileCheck /home/buildbots/llvm-external-buildbots/workers/ppc64le-flang-rhel-test/ppc64le-flang-rhel-clang-build/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `flang-aarch64-libcxx` running on `linaro-flang-aarch64-libcxx` while building `clang,flang` at step 6 "test-build-unified-tree-check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/89/builds/1377 Here is the relevant piece of the build log for the reference: ``` Step 6 (test-build-unified-tree-check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY RUN: at line 2: /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL + /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/flang-new -fc1 -emit-llvm -mcmodel=small /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-SMALL RUN: at line 3: /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -o - | /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL + /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/flang-new -fc1 -triple x86_64-unknown-linux-gnu -emit-llvm -mcmodel=kernel /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -o - + /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL error: unable to create target: 'No available targets are compatible with triple "x86_64-unknown-linux-gnu"' FileCheck error: '' is empty. FileCheck command line: /home/tcwg-buildbot/worker/flang-aarch64-libcxx/build/bin/FileCheck /home/tcwg-buildbot/worker/flang-aarch64-libcxx/llvm-project/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-KERNEL -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `openmp-offload-sles-build-only` running on `rocm-worker-hw-04-sles` while building `clang,flang` at step 7 "Add check check-flang". Full details are available at: https://lab.llvm.org/buildbot/#/builders/140/builds/1368 Here is the relevant piece of the build log for the reference: ``` Step 7 (Add check check-flang) failure: test (failure) TEST 'Flang :: Lower/mcmodel.f90' FAILED Exit Code: 2 Command Output (stderr): -- RUN: at line 1: /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/flang/test/Lower/mcmodel.f90 -o - | /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/FileCheck /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY + /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/flang-new -fc1 -triple aarch64 -emit-llvm -mcmodel=tiny /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/flang/test/Lower/mcmodel.f90 -o - + /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/FileCheck /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY error: unable to create target: 'No available targets are compatible with triple "aarch64"' FileCheck error: '' is empty. FileCheck command line: /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.build/bin/FileCheck /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/flang/test/Lower/mcmodel.f90 -check-prefix=CHECK-TINY -- ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `libc-x86_64-debian-gcc-fullbuild-dbg` running on `libc-x86_64-debian-fullbuild` while building `clang,flang` at step 4 "annotate". Full details are available at: https://lab.llvm.org/buildbot/#/builders/131/builds/1365 Here is the relevant piece of the build log for the reference: ``` Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure) ... -- lldb project is disabled -- mlir project is disabled -- openmp project is disabled -- polly project is disabled -- pstl project is disabled -- flang project is disabled -- Could NOT find LibEdit (missing: LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES) Change Dir: /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/CMakeFiles/CMakeTmp Run Build Command(s):/usr/bin/ninja cmTC_abf7f && [1/2] Building CXX object CMakeFiles/cmTC_abf7f.dir/getErrc.cpp.o FAILED: CMakeFiles/cmTC_abf7f.dir/getErrc.cpp.o /usr/bin/g++ -g -std=c++17 -o CMakeFiles/cmTC_abf7f.dir/getErrc.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/CMakeFiles/CMakeTmp/getErrc.cpp /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/CMakeFiles/CMakeTmp/getErrc.cpp:15:9: fatal error: error writing to /tmp/ccJpSZaj.s: No space left on device 15 | } | ^ compilation terminated. ninja: build stopped: subcommand failed. -- Failed to get errc messages -- LLVM host triple: x86_64-unknown-linux-gnu -- Native target architecture is X86 -- Threads enabled. -- Doxygen disabled. -- Ninja version: 1.11.1 -- Could NOT find OCaml (missing: OCAMLFIND OCAML_VERSION OCAML_STDLIB_PATH) -- Could NOT find OCaml (missing: OCAMLFIND OCAML_VERSION OCAML_STDLIB_PATH) -- OCaml bindings disabled. -- LLVM default target triple: x86_64-unknown-linux-gnu -- Building with -fPIC -- Targeting AArch64 -- Targeting AMDGPU -- Targeting ARM -- Targeting AVR -- Targeting BPF -- Targeting Hexagon -- Targeting Lanai -- Targeting LoongArch -- Targeting Mips -- Targeting MSP430 -- Targeting NVPTX -- Targeting PowerPC -- Targeting RISCV -- Targeting Sparc -- Targeting SystemZ -- Targeting VE -- Targeting WebAssembly -- Targeting X86 -- Targeting XCore ``` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/Leporacanthicus closed https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
Thirumalai-Shaktivel wrote: Yes, I tested it. It works fine. Thank you! https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/Leporacanthicus edited https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/tblah approved this pull request. LGTM. Thanks for picking this up Mats. Ideally, wait for @Thirumalai-Shaktivel to have another look before merging. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
Leporacanthicus wrote: > Yes, thank you! This is now part of this PR. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -21,4 +22,14 @@ CodeGenOptions::CodeGenOptions() { #include "flang/Frontend/CodeGenOptions.def" } +std::optional getCodeModel(llvm::StringRef string) { + return llvm::StringSwitch>(string) + .Case("tiny", llvm::CodeModel::Model::Tiny) + .Case("small", llvm::CodeModel::Model::Small) + .Case("kernel", llvm::CodeModel::Model::Kernel) + .Case("medium", llvm::CodeModel::Model::Medium) + .Case("large", llvm::CodeModel::Model::Large) + .Default(std::nullopt); Leporacanthicus wrote: Yes, as do we. Just not in this piece of code, it happens when we're parsing arguments. We call this function twice, only checking in the first place. Approximately line 400 of flang/lib/Frontend/CompilerInvocation.cpp There are tests in flang/test/Driver/mcmodel.f90 for generating an error. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -21,4 +22,14 @@ CodeGenOptions::CodeGenOptions() { #include "flang/Frontend/CodeGenOptions.def" } +std::optional getCodeModel(llvm::StringRef string) { + return llvm::StringSwitch>(string) + .Case("tiny", llvm::CodeModel::Model::Tiny) + .Case("small", llvm::CodeModel::Model::Small) + .Case("kernel", llvm::CodeModel::Model::Kernel) + .Case("medium", llvm::CodeModel::Model::Medium) + .Case("large", llvm::CodeModel::Model::Large) + .Default(std::nullopt); tblah wrote: Does clang warn or error for an invalid code model? https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -2823,3 +2823,84 @@ void tools::addOffloadCompressArgs(const llvm::opt::ArgList &TCArgs, CmdArgs.push_back( TCArgs.MakeArgString(Twine("-compression-level=") + Arg->getValue())); } + +void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args, Leporacanthicus wrote: Yes, it is a direct copy, aside from not using a "cached" TripleStr and instead calling getTriple() on the Triple. [I just compared the two versions]. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/Leporacanthicus edited https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/Leporacanthicus updated https://github.com/llvm/llvm-project/pull/95411 >From 0ef4b61d0429517b92f7b6de7fa52c516f3a1468 Mon Sep 17 00:00:00 2001 From: David Truby Date: Thu, 13 Jun 2024 14:01:36 + Subject: [PATCH 1/5] [flang] Implement -mcmodel flag This patch implements the -mcmodel flag from clang, allowing the Code Model to be changed for the LLVM module. The same set of mcmodel flags are accepted as in clang and the same Code Model attributes are added to the LLVM module for those flags. --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/Clang.cpp | 76 + clang/lib/Driver/ToolChains/CommonArgs.cpp| 81 +++ clang/lib/Driver/ToolChains/CommonArgs.h | 4 + clang/lib/Driver/ToolChains/Flang.cpp | 5 ++ .../include/flang/Frontend/CodeGenOptions.def | 1 + flang/lib/Frontend/CompilerInvocation.cpp | 21 + flang/lib/Frontend/FrontendActions.cpp| 3 + flang/test/Driver/mcmodel.f90 | 44 ++ flang/test/Lower/mcmodel.f90 | 16 10 files changed, 177 insertions(+), 76 deletions(-) create mode 100644 flang/test/Driver/mcmodel.f90 create mode 100644 flang/test/Lower/mcmodel.f90 diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9f7904dd94b94..4087d3b95cc39 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4600,7 +4600,7 @@ def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group, NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["IAD_ATT", "IAD_Intel"]>, MarshallingInfoEnum, "IAD_ATT">; def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group, - Visibility<[ClangOption, CC1Option]>, + Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>, MarshallingInfoString, [{"default"}]>; def mlarge_data_threshold_EQ : Joined<["-"], "mlarge-data-threshold=">, Group, Flags<[TargetSpecific]>, Visibility<[ClangOption, CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1f8591537b6c8..0447581128cd1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5908,81 +5908,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); - if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { -StringRef CM = A->getValue(); -bool Ok = false; -if (Triple.isOSAIX() && CM == "medium") - CM = "large"; -if (Triple.isAArch64(64)) { - Ok = CM == "tiny" || CM == "small" || CM == "large"; - if (CM == "large" && !Triple.isOSBinFormatMachO() && - RelocationModel != llvm::Reloc::Static) -D.Diag(diag::err_drv_argument_only_allowed_with) -<< A->getAsString(Args) << "-fno-pic"; -} else if (Triple.isLoongArch()) { - if (CM == "extreme" && - Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false)) -D.Diag(diag::err_drv_argument_not_allowed_with) -<< A->getAsString(Args) << "-fplt"; - Ok = CM == "normal" || CM == "medium" || CM == "extreme"; - // Convert to LLVM recognizable names. - if (Ok) -CM = llvm::StringSwitch(CM) - .Case("normal", "small") - .Case("extreme", "large") - .Default(CM); -} else if (Triple.isPPC64() || Triple.isOSAIX()) { - Ok = CM == "small" || CM == "medium" || CM == "large"; -} else if (Triple.isRISCV()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medany") -CM = "medium"; - Ok = CM == "small" || CM == "medium"; -} else if (Triple.getArch() == llvm::Triple::x86_64) { - Ok = llvm::is_contained({"small", "kernel", "medium", "large", "tiny"}, - CM); -} else if (Triple.isNVPTX() || Triple.isAMDGPU() || Triple.isSPIRV()) { - // NVPTX/AMDGPU/SPIRV does not care about the code model and will accept - // whatever works for the host. - Ok = true; -} else if (Triple.isSPARC64()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medmid") -CM = "medium"; - else if (CM == "medany") -CM = "large"; - Ok = CM == "small" || CM == "medium" || CM == "large"; -} -if (Ok) { - CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); -} else { - D.Diag(diag::err_drv_unsupported_option_argument_for_target) - << A->getSpelling() << CM << TripleStr; -} - } - - if (Triple.getArch() == llvm::Triple::x86_64) { -bool IsMediumCM = false; -bool IsLargeCM = false; -if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { - IsMediumCM = StringRef(A->getValue()) == "medium"; - IsLargeCM = StringRef(A->getValue()) == "large"; -} -if (Arg *A = Args.getLastArg(options::OPT_ml
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
github-actions[bot] wrote: :warning: C/C++ code formatter, clang-format found issues in your code. :warning: You can test this locally with the following command: ``bash git-clang-format --diff 1d4523505e54415a270d7b13b6e203fc25585c5b eaad187a5e1372cc34f79f36ca5d28016a94b221 -- clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Driver/ToolChains/CommonArgs.h clang/lib/Driver/ToolChains/Flang.cpp flang/include/flang/Frontend/CodeGenOptions.h flang/lib/Frontend/CodeGenOptions.cpp flang/lib/Frontend/CompilerInstance.cpp flang/lib/Frontend/CompilerInvocation.cpp flang/lib/Frontend/FrontendActions.cpp `` View the diff from clang-format here. ``diff diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index 2fd2ac3244..eddfa5029d 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -395,15 +395,16 @@ static void parseCodeGenArgs(Fortran::frontend::CodeGenOptions &opts, << a->getAsString(args) << modelName; } - if (const llvm::opt::Arg *arg = args.getLastArg(clang::driver::options::OPT_mlarge_data_threshold_EQ)) { + if (const llvm::opt::Arg *arg = args.getLastArg( + clang::driver::options::OPT_mlarge_data_threshold_EQ)) { uint64_t LDT; if (llvm::StringRef(arg->getValue()).getAsInteger(/*Radix=*/10, LDT)) { diags.Report(clang::diag::err_drv_invalid_value) << arg->getSpelling() << arg->getValue(); -} +} opts.LargeDataThreshold = LDT; } - + // This option is compatible with -f[no-]underscoring in gfortran. if (args.hasFlag(clang::driver::options::OPT_fno_underscoring, clang::driver::options::OPT_funderscoring, false)) { `` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/Leporacanthicus updated https://github.com/llvm/llvm-project/pull/95411 >From 0ef4b61d0429517b92f7b6de7fa52c516f3a1468 Mon Sep 17 00:00:00 2001 From: David Truby Date: Thu, 13 Jun 2024 14:01:36 + Subject: [PATCH 1/4] [flang] Implement -mcmodel flag This patch implements the -mcmodel flag from clang, allowing the Code Model to be changed for the LLVM module. The same set of mcmodel flags are accepted as in clang and the same Code Model attributes are added to the LLVM module for those flags. --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/Clang.cpp | 76 + clang/lib/Driver/ToolChains/CommonArgs.cpp| 81 +++ clang/lib/Driver/ToolChains/CommonArgs.h | 4 + clang/lib/Driver/ToolChains/Flang.cpp | 5 ++ .../include/flang/Frontend/CodeGenOptions.def | 1 + flang/lib/Frontend/CompilerInvocation.cpp | 21 + flang/lib/Frontend/FrontendActions.cpp| 3 + flang/test/Driver/mcmodel.f90 | 44 ++ flang/test/Lower/mcmodel.f90 | 16 10 files changed, 177 insertions(+), 76 deletions(-) create mode 100644 flang/test/Driver/mcmodel.f90 create mode 100644 flang/test/Lower/mcmodel.f90 diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9f7904dd94b94..4087d3b95cc39 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4600,7 +4600,7 @@ def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group, NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["IAD_ATT", "IAD_Intel"]>, MarshallingInfoEnum, "IAD_ATT">; def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group, - Visibility<[ClangOption, CC1Option]>, + Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>, MarshallingInfoString, [{"default"}]>; def mlarge_data_threshold_EQ : Joined<["-"], "mlarge-data-threshold=">, Group, Flags<[TargetSpecific]>, Visibility<[ClangOption, CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1f8591537b6c8..0447581128cd1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5908,81 +5908,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); - if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { -StringRef CM = A->getValue(); -bool Ok = false; -if (Triple.isOSAIX() && CM == "medium") - CM = "large"; -if (Triple.isAArch64(64)) { - Ok = CM == "tiny" || CM == "small" || CM == "large"; - if (CM == "large" && !Triple.isOSBinFormatMachO() && - RelocationModel != llvm::Reloc::Static) -D.Diag(diag::err_drv_argument_only_allowed_with) -<< A->getAsString(Args) << "-fno-pic"; -} else if (Triple.isLoongArch()) { - if (CM == "extreme" && - Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false)) -D.Diag(diag::err_drv_argument_not_allowed_with) -<< A->getAsString(Args) << "-fplt"; - Ok = CM == "normal" || CM == "medium" || CM == "extreme"; - // Convert to LLVM recognizable names. - if (Ok) -CM = llvm::StringSwitch(CM) - .Case("normal", "small") - .Case("extreme", "large") - .Default(CM); -} else if (Triple.isPPC64() || Triple.isOSAIX()) { - Ok = CM == "small" || CM == "medium" || CM == "large"; -} else if (Triple.isRISCV()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medany") -CM = "medium"; - Ok = CM == "small" || CM == "medium"; -} else if (Triple.getArch() == llvm::Triple::x86_64) { - Ok = llvm::is_contained({"small", "kernel", "medium", "large", "tiny"}, - CM); -} else if (Triple.isNVPTX() || Triple.isAMDGPU() || Triple.isSPIRV()) { - // NVPTX/AMDGPU/SPIRV does not care about the code model and will accept - // whatever works for the host. - Ok = true; -} else if (Triple.isSPARC64()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medmid") -CM = "medium"; - else if (CM == "medany") -CM = "large"; - Ok = CM == "small" || CM == "medium" || CM == "large"; -} -if (Ok) { - CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); -} else { - D.Diag(diag::err_drv_unsupported_option_argument_for_target) - << A->getSpelling() << CM << TripleStr; -} - } - - if (Triple.getArch() == llvm::Triple::x86_64) { -bool IsMediumCM = false; -bool IsLargeCM = false; -if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { - IsMediumCM = StringRef(A->getValue()) == "medium"; - IsLargeCM = StringRef(A->getValue()) == "large"; -} -if (Arg *A = Args.getLastArg(options::OPT_ml
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) Leporacanthicus wrote: This code is no longer present. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) Leporacanthicus wrote: Rightly or wrongly, I've changed it to copy the way that Clang does it, and store the string in CodeGenOptions, then parse it (twice, but sharing the code to do so, rather than implementing the same-ish code twice in Clang). https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/Leporacanthicus updated https://github.com/llvm/llvm-project/pull/95411 >From 0ef4b61d0429517b92f7b6de7fa52c516f3a1468 Mon Sep 17 00:00:00 2001 From: David Truby Date: Thu, 13 Jun 2024 14:01:36 + Subject: [PATCH 1/3] [flang] Implement -mcmodel flag This patch implements the -mcmodel flag from clang, allowing the Code Model to be changed for the LLVM module. The same set of mcmodel flags are accepted as in clang and the same Code Model attributes are added to the LLVM module for those flags. --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/Clang.cpp | 76 + clang/lib/Driver/ToolChains/CommonArgs.cpp| 81 +++ clang/lib/Driver/ToolChains/CommonArgs.h | 4 + clang/lib/Driver/ToolChains/Flang.cpp | 5 ++ .../include/flang/Frontend/CodeGenOptions.def | 1 + flang/lib/Frontend/CompilerInvocation.cpp | 21 + flang/lib/Frontend/FrontendActions.cpp| 3 + flang/test/Driver/mcmodel.f90 | 44 ++ flang/test/Lower/mcmodel.f90 | 16 10 files changed, 177 insertions(+), 76 deletions(-) create mode 100644 flang/test/Driver/mcmodel.f90 create mode 100644 flang/test/Lower/mcmodel.f90 diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9f7904dd94b94..4087d3b95cc39 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4600,7 +4600,7 @@ def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group, NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["IAD_ATT", "IAD_Intel"]>, MarshallingInfoEnum, "IAD_ATT">; def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group, - Visibility<[ClangOption, CC1Option]>, + Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>, MarshallingInfoString, [{"default"}]>; def mlarge_data_threshold_EQ : Joined<["-"], "mlarge-data-threshold=">, Group, Flags<[TargetSpecific]>, Visibility<[ClangOption, CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1f8591537b6c8..0447581128cd1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5908,81 +5908,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); - if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { -StringRef CM = A->getValue(); -bool Ok = false; -if (Triple.isOSAIX() && CM == "medium") - CM = "large"; -if (Triple.isAArch64(64)) { - Ok = CM == "tiny" || CM == "small" || CM == "large"; - if (CM == "large" && !Triple.isOSBinFormatMachO() && - RelocationModel != llvm::Reloc::Static) -D.Diag(diag::err_drv_argument_only_allowed_with) -<< A->getAsString(Args) << "-fno-pic"; -} else if (Triple.isLoongArch()) { - if (CM == "extreme" && - Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false)) -D.Diag(diag::err_drv_argument_not_allowed_with) -<< A->getAsString(Args) << "-fplt"; - Ok = CM == "normal" || CM == "medium" || CM == "extreme"; - // Convert to LLVM recognizable names. - if (Ok) -CM = llvm::StringSwitch(CM) - .Case("normal", "small") - .Case("extreme", "large") - .Default(CM); -} else if (Triple.isPPC64() || Triple.isOSAIX()) { - Ok = CM == "small" || CM == "medium" || CM == "large"; -} else if (Triple.isRISCV()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medany") -CM = "medium"; - Ok = CM == "small" || CM == "medium"; -} else if (Triple.getArch() == llvm::Triple::x86_64) { - Ok = llvm::is_contained({"small", "kernel", "medium", "large", "tiny"}, - CM); -} else if (Triple.isNVPTX() || Triple.isAMDGPU() || Triple.isSPIRV()) { - // NVPTX/AMDGPU/SPIRV does not care about the code model and will accept - // whatever works for the host. - Ok = true; -} else if (Triple.isSPARC64()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medmid") -CM = "medium"; - else if (CM == "medany") -CM = "large"; - Ok = CM == "small" || CM == "medium" || CM == "large"; -} -if (Ok) { - CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); -} else { - D.Diag(diag::err_drv_unsupported_option_argument_for_target) - << A->getSpelling() << CM << TripleStr; -} - } - - if (Triple.getArch() == llvm::Triple::x86_64) { -bool IsMediumCM = false; -bool IsLargeCM = false; -if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { - IsMediumCM = StringRef(A->getValue()) == "medium"; - IsLargeCM = StringRef(A->getValue()) == "large"; -} -if (Arg *A = Args.getLastArg(options::OPT_ml
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
Thirumalai-Shaktivel wrote: Yes, thank you! https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
DavidTruby wrote: It looks like `-mcmodel=medium` implies another flag on x86-64 that I haven't implemented. I will post another patch implementing `-mlarge-data-threshold` and endeavour to merge that before this patch so that this works on x86-64. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
Thirumalai-Shaktivel wrote: This seems to introduce a `-mcmodel` flag, thanks for that. But, when I do `flang-new -mcmodel=medium x.f90`, I get another unknown argument issue. ```console $ flang-new -mcmodel=medium x.f90 error: unknown argument: '-mlarge-data-threshold=65536' ``` What might be issue? https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) tblah wrote: I would add it as an `optional` to `CodeGenOptions` in `CodeGenOptions.h` https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) DavidTruby wrote: On a second look I think you're right. I'm not sure how to represent that in this CodeGenOptions.def file though, or if it isn't possible and I need to do this differently. Perhaps @banach-space can suggest something? https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) DavidTruby wrote: Ah, it's bits, not the number of values My mistake đ https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) tblah wrote: ultra-nit: why did you use 5 bits here? 3 should be enough https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -39,6 +39,7 @@ ENUM_CODEGENOPT(RelocationModel, llvm::Reloc::Model, 3, llvm::Reloc::PIC_) ///< ENUM_CODEGENOPT(DebugInfo, llvm::codegenoptions::DebugInfoKind, 4, llvm::codegenoptions::NoDebugInfo) ///< Level of debug info to generate ENUM_CODEGENOPT(VecLib, llvm::driver::VectorLibrary, 3, llvm::driver::VectorLibrary::NoLibrary) ///< Vector functions library to use ENUM_CODEGENOPT(FramePointer, llvm::FramePointerKind, 2, llvm::FramePointerKind::None) ///< Enable the usage of frame pointers +ENUM_CODEGENOPT(CodeModel, llvm::CodeModel::Model, 5, llvm::CodeModel::Model::Small) tblah wrote: What was your reasoning for defaulting to `llvm::CodeModel::Model::Small` here? So far as I can tell, clang avoids setting it when the option is not specified explicitly: https://github.com/llvm/llvm-project/blob/44df1167f88cabbb4cfde816f279337379ea30b3/clang/lib/CodeGen/CodeGenModule.cpp#L1304 In LLVM, the code model logic seems to get overridden in each implementation of LLVMTargetMachine. The first one I looked at does default to llvm::CodeModel::Model::Small, but I don't know whether that will always be true for every target. I think it would be safer to store this as a std::optional instead of a bitfield. https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -0,0 +1,16 @@ +! RUN: %flang_fc1 -triple aarch64 -emit-llvm -mcmodel=tiny %s -o - | FileCheck %s -check-prefix=CHECK-TINY banach-space wrote: [nit] IMHO, using `CHECK` for prefixes in a test with multiple prefixes is just noise. Why not drop `CHECK`? https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/banach-space approved this pull request. The high-level stuff makes sense to me, thanks! I'm not familiar with `-mcmodel`, so can't tell for sure whether the tests are correct đ Ideally one more person would take a look - @tblah or @pawosm-arm ? https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/banach-space edited https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
@@ -2823,3 +2823,84 @@ void tools::addOffloadCompressArgs(const llvm::opt::ArgList &TCArgs, CmdArgs.push_back( TCArgs.MakeArgString(Twine("-compression-level=") + Arg->getValue())); } + +void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args, banach-space wrote: Is this taken verbatim from Clang? Would you mind documenting that in the summary? https://github.com/llvm/llvm-project/pull/95411 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
https://github.com/DavidTruby created https://github.com/llvm/llvm-project/pull/95411 This patch implements the -mcmodel flag from clang, allowing the Code Model to be changed for the LLVM module. The same set of mcmodel flags are accepted as in clang and the same Code Model attributes are added to the LLVM module for those flags. >From 0ef4b61d0429517b92f7b6de7fa52c516f3a1468 Mon Sep 17 00:00:00 2001 From: David Truby Date: Thu, 13 Jun 2024 14:01:36 + Subject: [PATCH] [flang] Implement -mcmodel flag This patch implements the -mcmodel flag from clang, allowing the Code Model to be changed for the LLVM module. The same set of mcmodel flags are accepted as in clang and the same Code Model attributes are added to the LLVM module for those flags. --- clang/include/clang/Driver/Options.td | 2 +- clang/lib/Driver/ToolChains/Clang.cpp | 76 + clang/lib/Driver/ToolChains/CommonArgs.cpp| 81 +++ clang/lib/Driver/ToolChains/CommonArgs.h | 4 + clang/lib/Driver/ToolChains/Flang.cpp | 5 ++ .../include/flang/Frontend/CodeGenOptions.def | 1 + flang/lib/Frontend/CompilerInvocation.cpp | 21 + flang/lib/Frontend/FrontendActions.cpp| 3 + flang/test/Driver/mcmodel.f90 | 44 ++ flang/test/Lower/mcmodel.f90 | 16 10 files changed, 177 insertions(+), 76 deletions(-) create mode 100644 flang/test/Driver/mcmodel.f90 create mode 100644 flang/test/Lower/mcmodel.f90 diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9f7904dd94b94..4087d3b95cc39 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4600,7 +4600,7 @@ def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group, NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["IAD_ATT", "IAD_Intel"]>, MarshallingInfoEnum, "IAD_ATT">; def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group, - Visibility<[ClangOption, CC1Option]>, + Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>, MarshallingInfoString, [{"default"}]>; def mlarge_data_threshold_EQ : Joined<["-"], "mlarge-data-threshold=">, Group, Flags<[TargetSpecific]>, Visibility<[ClangOption, CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1f8591537b6c8..0447581128cd1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5908,81 +5908,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); - if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { -StringRef CM = A->getValue(); -bool Ok = false; -if (Triple.isOSAIX() && CM == "medium") - CM = "large"; -if (Triple.isAArch64(64)) { - Ok = CM == "tiny" || CM == "small" || CM == "large"; - if (CM == "large" && !Triple.isOSBinFormatMachO() && - RelocationModel != llvm::Reloc::Static) -D.Diag(diag::err_drv_argument_only_allowed_with) -<< A->getAsString(Args) << "-fno-pic"; -} else if (Triple.isLoongArch()) { - if (CM == "extreme" && - Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false)) -D.Diag(diag::err_drv_argument_not_allowed_with) -<< A->getAsString(Args) << "-fplt"; - Ok = CM == "normal" || CM == "medium" || CM == "extreme"; - // Convert to LLVM recognizable names. - if (Ok) -CM = llvm::StringSwitch(CM) - .Case("normal", "small") - .Case("extreme", "large") - .Default(CM); -} else if (Triple.isPPC64() || Triple.isOSAIX()) { - Ok = CM == "small" || CM == "medium" || CM == "large"; -} else if (Triple.isRISCV()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medany") -CM = "medium"; - Ok = CM == "small" || CM == "medium"; -} else if (Triple.getArch() == llvm::Triple::x86_64) { - Ok = llvm::is_contained({"small", "kernel", "medium", "large", "tiny"}, - CM); -} else if (Triple.isNVPTX() || Triple.isAMDGPU() || Triple.isSPIRV()) { - // NVPTX/AMDGPU/SPIRV does not care about the code model and will accept - // whatever works for the host. - Ok = true; -} else if (Triple.isSPARC64()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medmid") -CM = "medium"; - else if (CM == "medany") -CM = "large"; - Ok = CM == "small" || CM == "medium" || CM == "large"; -} -if (Ok) { - CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); -} else { - D.Diag(diag::err_drv_unsupported_option_argument_for_target) - << A->getSpelling() << CM << TripleStr; -} - } - - if (Triple.getArch() == llvm::Triple::x86_64) { -bool IsMediumCM = false; -bool IsLargeCM =
[clang] [flang] [flang] Implement -mcmodel flag (PR #95411)
llvmbot wrote: @llvm/pr-subscribers-flang-fir-hlfir @llvm/pr-subscribers-flang-driver Author: David Truby (DavidTruby) Changes This patch implements the -mcmodel flag from clang, allowing the Code Model to be changed for the LLVM module. The same set of mcmodel flags are accepted as in clang and the same Code Model attributes are added to the LLVM module for those flags. --- Full diff: https://github.com/llvm/llvm-project/pull/95411.diff 10 Files Affected: - (modified) clang/include/clang/Driver/Options.td (+1-1) - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+1-75) - (modified) clang/lib/Driver/ToolChains/CommonArgs.cpp (+81) - (modified) clang/lib/Driver/ToolChains/CommonArgs.h (+4) - (modified) clang/lib/Driver/ToolChains/Flang.cpp (+5) - (modified) flang/include/flang/Frontend/CodeGenOptions.def (+1) - (modified) flang/lib/Frontend/CompilerInvocation.cpp (+21) - (modified) flang/lib/Frontend/FrontendActions.cpp (+3) - (added) flang/test/Driver/mcmodel.f90 (+44) - (added) flang/test/Lower/mcmodel.f90 (+16) ``diff diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9f7904dd94b94..4087d3b95cc39 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4600,7 +4600,7 @@ def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group, NormalizedValuesScope<"CodeGenOptions">, NormalizedValues<["IAD_ATT", "IAD_Intel"]>, MarshallingInfoEnum, "IAD_ATT">; def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group, - Visibility<[ClangOption, CC1Option]>, + Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>, MarshallingInfoString, [{"default"}]>; def mlarge_data_threshold_EQ : Joined<["-"], "mlarge-data-threshold=">, Group, Flags<[TargetSpecific]>, Visibility<[ClangOption, CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1f8591537b6c8..0447581128cd1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5908,81 +5908,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); - if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { -StringRef CM = A->getValue(); -bool Ok = false; -if (Triple.isOSAIX() && CM == "medium") - CM = "large"; -if (Triple.isAArch64(64)) { - Ok = CM == "tiny" || CM == "small" || CM == "large"; - if (CM == "large" && !Triple.isOSBinFormatMachO() && - RelocationModel != llvm::Reloc::Static) -D.Diag(diag::err_drv_argument_only_allowed_with) -<< A->getAsString(Args) << "-fno-pic"; -} else if (Triple.isLoongArch()) { - if (CM == "extreme" && - Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false)) -D.Diag(diag::err_drv_argument_not_allowed_with) -<< A->getAsString(Args) << "-fplt"; - Ok = CM == "normal" || CM == "medium" || CM == "extreme"; - // Convert to LLVM recognizable names. - if (Ok) -CM = llvm::StringSwitch(CM) - .Case("normal", "small") - .Case("extreme", "large") - .Default(CM); -} else if (Triple.isPPC64() || Triple.isOSAIX()) { - Ok = CM == "small" || CM == "medium" || CM == "large"; -} else if (Triple.isRISCV()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medany") -CM = "medium"; - Ok = CM == "small" || CM == "medium"; -} else if (Triple.getArch() == llvm::Triple::x86_64) { - Ok = llvm::is_contained({"small", "kernel", "medium", "large", "tiny"}, - CM); -} else if (Triple.isNVPTX() || Triple.isAMDGPU() || Triple.isSPIRV()) { - // NVPTX/AMDGPU/SPIRV does not care about the code model and will accept - // whatever works for the host. - Ok = true; -} else if (Triple.isSPARC64()) { - if (CM == "medlow") -CM = "small"; - else if (CM == "medmid") -CM = "medium"; - else if (CM == "medany") -CM = "large"; - Ok = CM == "small" || CM == "medium" || CM == "large"; -} -if (Ok) { - CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); -} else { - D.Diag(diag::err_drv_unsupported_option_argument_for_target) - << A->getSpelling() << CM << TripleStr; -} - } - - if (Triple.getArch() == llvm::Triple::x86_64) { -bool IsMediumCM = false; -bool IsLargeCM = false; -if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { - IsMediumCM = StringRef(A->getValue()) == "medium"; - IsLargeCM = StringRef(A->getValue()) == "large"; -} -if (Arg *A = Args.getLastArg(options::OPT_mlarge_data_threshold_EQ)) { - if (!IsMediumCM && !IsLargeCM) { -D.Diag(diag::warn_drv_large_data_threshold_invalid_code_model) -<< A->getOption().getRenderName(); - } else {