影响 gcc 中的函数克隆/复制/持续传播

2023-11-25

跑步时gcc使用 optimizations-on 时,当它认为函数位于热路径中或有常量传播到函数参数时,它会克隆(重复)C 函数。

更具体地说,这似乎是由fipa-cp-clone option.

有什么办法可以影响这个吗?例如,使用某些属性标记一个参数,作为编译时常量(就像在 C++ 中使用模板参数所做的那样),这将导致函数被克隆?


重要的是函数是否用常量参数调用(或者是一个实际的参数)常量表达式,或者编译器通过常量传播确定为常量的东西)。在这种情况下,GCC 将克隆该函数,除非它确定这样做成本太高或收益太小;我不知道影响该指标的方法。请注意,恒定传播仅发生在单个翻译单元(源文件)内,除非您立即编译整个程序或使用链接时优化,并且我不确定此时是否仍会发生克隆。

我最好的猜测是,如果克隆在您期望的时候没有发生,那么 GCC 永远不会在调用函数的地方看到常量参数。即使您知道它将是常量,编译器也可能无法证明它是常量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

影响 gcc 中的函数克隆/复制/持续传播 的相关文章

  • 具有子列表属性映射问题的自动映射器

    我有以下型号 Models public class Dish Required public Int64 ID get set Required public string Name get set Required public str
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用

    我正在尝试将我的项目从 UseMVC asp net core 2 2 兼容样式 升级到 UseEndpoint Routing 并且我的所有请求都被重定向到我的验证失败页面 它与声明有关 如果我删除 Authorize Roles Adm
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • 如何在 Bash 中解析 XML?

    理想情况下 我希望能够做的是 cat xhtmlfile xhtml getElementViaXPath path html head title sed e s g gt titleOfXHTMLPage txt 这实际上只是一个解释Y
  • C++编译时函数执行

    我的代码中有字符串标签 它们被转换为数字并用于搜索标签值结构中的值 我有这样的事情 void foo type value search SomeTag 其中搜索定义如下 type search const char tag return
  • 如何使用 jQuery 获取表格中的单元格 () x 和 y 坐标?

    我正在寻找一种获取表格中单元格 X Y 位置的好方法 不要将它与 css position 混淆 我正在寻找笛卡尔坐标系中的 X 和 Y 坐标 众所周知 我们可以使用以下命令获取表格中的特定单元格 grid 0 rows 5 cells 7
  • 使用类上的宏注释创建或扩展伴随对象

    使用 Scala 2 10 2 11 宏天堂注释宏 如何添加或扩展注释类的伴生对象 骨骼 import scala annotation StaticAnnotation import scala reflect macros import
  • 如何处理keras:错误:维度0的切片索引0超出范围

    我使用 keras tensorflow 后端 构建我的 lstm 网络 这是我的代码 from keras models import Sequential Model from keras layers import LSTM Conv
  • 如何在 GridView 中实现条件格式

    我的 aspx 页面上有一个 GridView 它显示由以下类定义的对象集合 public class Item public string ItemName get set public object ItemValue get set
  • 如何在C中对单个字符执行scanf [重复]

    这个问题在这里已经有答案了 在C中 我正在尝试从用户那里获取字符scanf当我运行它时 程序不会等待用户输入任何内容 这是代码 char ch printf Enter one char scanf c ch printf c n ch 为
  • 将项目的不同版本导入到 Eclipse 中

    我在 Eclipse 中有一个项目 现在我想导入另一个具有不同名称和位置的项目 但具有相同的结构 相同的包 很多相同的类 但是当我尝试导入它时 它说 某些项目无法导入 因为它们已经存在于工作区中 如果我想拥有一个项目的两个版本该怎么办 我应
  • MEF 导出是缓存还是每次请求时都会发现?

    如果我有一种类型 MyClass 请注册 Export typeof Myclass 属性 以及 PartCreationPolicy CreationPolicy Shared or PartCreationPolicy Creation
  • 如何从“浏览”选项卡中排除文件夹?

    我正在尝试排除上的几个文件夹ExploreVisual Studio Code 中的选项卡 为此 我添加了以下内容jsconfig json到我的项目的根目录 compilerOptions target ES6 exclude node
  • 如何捕获传单弹出窗口上的点击事件

    我在传单地图上同时打开多个弹出窗口 并且它们可以重叠 如果单击 我想将弹出窗口置于前面 虽然我可以轻松地点击地图map on click function e do something 我似乎无法用弹出窗口做同样的事情 如何捕获 L Pop
  • 带有圆角边缘的 ActionBar

    我想知道 是否可以使我的 ActionBar 具有圆角边缘 更具体地说 仅顶部圆角 左上 右上 我做了一些搜索 但大多数方法都已经过时 对我不起作用 我正在使用 AppCompat 支持库 v22 1 1 我已经制作了我想要实现的目标的图像
  • Next JS - getStaticProps 不返回任何内容

    我正在将 Next js 与上下文 API 和样式组件一起使用 但我似乎无法理解getStaticProps在职的 我读过其他帖子 他们经常谈论习俗 app我确实有 但在使用 context API 之前我从未遇到过这个问题 我也尝试过ge
  • 尝试时从 CultureInfo 中缺少国家和地点

    我需要本地化一个应用程序 并注意到有几个国家 地区没有出现在与cultureInfo 关联的县代码列表中 塞浦路斯就是一个例子 我想可能还有其他例子 如果我需要本地化塞浦路斯的设置 或其他缺失的设置 我将如何重命名我的资源文件 以便它们呈现
  • PHP PDO 多重选择查询始终删除最后一个行集

    我在使用 PDO 语句进行多项选择时遇到了似乎是错误的问题 我正在构建一个包含许多 SELECT 的 SQL 查询 无论它生成多少个 SELECT 语句 最后一个行集都会被删除 这是发生的事情的截断示例 pdo connection stu
  • 强制 C++ 结构紧密包装

    我正在尝试读取二进制文件 问题在于文件的创建者没有花时间将数据结构与其自然边界正确对齐 并且所有内容都包装得很紧 这使得使用 C 结构读取数据变得困难 有没有办法强制struct打包紧 Example struct short a int
  • 如果一个OU包含3000个用户,如何使用DirectorySearcher找到所有用户?

    我使用这段代码 DirectoryEntry objEntry DirectorySearcher objSearchEntry SearchResultCollection objSearchResult string strFilter
  • 从 UICollectionViewCell 使用 UICollectionView

    我有一个自定义 UICollectionViewCell 其内容也是一个集合 我想使用 UICollectionView 来显示其内容 这可能吗 我将如何实现这个目标 我制作了自定义 UICollectionViewCell 也继承自 UI
  • 是否可以在 Javascript 中发出跨域请求并设置自定义标头?

    由于您无法在 JSONP 调用上应用自定义标头 如何使用 jQuery 发出跨域请求并应用自定义标头 我基本上尝试使用 jQuery 访问 google 文档 并且需要传递身份验证令牌 var token my auth token aja
  • 影响 gcc 中的函数克隆/复制/持续传播

    跑步时gcc使用 optimizations on 时 当它认为函数位于热路径中或有常量传播到函数参数时 它会克隆 重复 C 函数 更具体地说 这似乎是由fipa cp clone option 有什么办法可以影响这个吗 例如 使用某些属性