The getAllOnesValue can only handle things that are bitcast from a
ConstantInt, while here we bitcast through a pointer, so we may see more
complex objects (like Array or Struct).
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
I will throw this through my build tests for the Linux kernel and make sure that it passes (will probably take my machine four hours or so). I do not feel qualified enough to approve this once I get those results though.
Additionally, this should go into release/11.x since the branch just happened today.
| llvm/lib/Analysis/ConstantFolding.cpp | ||
|---|---|---|
| 346–347 | The mix of isa and method calls is inconsistent. How about we consistently use methods, rather than isa? Type::isIntegerTy, Type::isVectorTy come to mind. | |
With this diff applied on top of f3731d34faa7432462c877714af235e9787c9b30, this looks good to me.
arm32 multi_v5_defconfig successful in 0:01:17
arm32 multi_v5_defconfig qemu boot successful
arm32 aspeed_g5_defconfig successful in 0:01:10
arm32 aspeed_g5_defconfig qemu boot successful
arm32 multi_v7_defconfig successful in 0:02:29
arm32 multi_v7_defconfig qemu boot successful
arm32 allmodconfig (plus CONFIG_CPU_BIG_ENDIAN=n) successful in 0:10:55
arm32 allnoconfig successful in 0:00:16
arm32 allyesconfig (plus CONFIG_CPU_BIG_ENDIAN=n) successful in 0:10:36
arm32 debian config successful in 0:07:25
armv7hl fedora config successful in 0:07:33
armv7hl opensuse config successful in 0:08:19
arm64 defconfig successful in 0:03:55
arm64 defconfig qemu boot successful
arm64 allmodconfig (plus CONFIG_CPU_BIG_ENDIAN=n) successful in 0:16:20
arm64 allnoconfig successful in 0:00:19
arm64 allyesconfig (plus CONFIG_CPU_BIG_ENDIAN=n) successful in 0:15:40
arm64 debian config successful in 0:10:10
arm64 fedora config successful in 0:10:13
arm64 opensuse config successful in 0:13:03
mips malta_kvm_guest_defconfig successful in 0:01:26
mips malta_kvm_guest_defconfig qemu boot successful
mips malta_kvm_guest_defconfig plus CONFIG_CPU_BIG_ENDIAN=y successful in 0:01:25
mips malta_kvm_guest_defconfig plus CONFIG_CPU_BIG_ENDIAN=y qemu boot successful
powerpc ppc44x_defconfig successful in 0:00:47
powerpc ppc44x_defconfig qemu boot successful
powerpc allnoconfig successful in 0:00:16
powerpc pseries_defconfig successful in 0:01:56
powerpc pseries_defconfig qemu boot successful
powerpc powernv_defconfig successful in 0:02:14
powerpc powernv_defconfig qemu boot successful
powerpc ppc64le_defconfig successful in 0:02:08
ppc64le debian config successful in 0:08:20
ppc64le fedora config successful in 0:08:23
ppc64le opensuse config successful in 0:09:11
riscv defconfig successful in 0:00:50
riscv defconfig qemu boot successful
s390x defconfig successful in 0:03:02
s390x allmodconfig successful in 0:10:03
s390x allyesconfig successful in 0:11:53
s390x debian config successful in 0:05:53
s390x fedora config successful in 0:03:52
s390x opensuse config successful in 0:04:24
x86_64 defconfig successful in 0:01:42
x86_64 qemu boot successful
x86_64 allmodconfig successful in 0:16:22
x86_64 allyesconfig successful in 0:15:27
x86_64 allyesconfig at -O3 successful in 0:16:19
x86_64 archlinux config successful in 0:10:34
x86_64 debian config successful in 0:10:47
x86_64 fedora config successful in 0:10:48
x86_64 opensuse config successful in 0:12:24
arm64 defconfig (plus CONFIG_{LTO,CFI}_CLANG and CONFIG_DYNAMIC_FTRACE_WITH_REGS) successful in 0:07:41
arm64 defconfig (plus CONFIG_{LTO,CFI}_CLANG and CONFIG_DYNAMIC_FTRACE_WITH_REGS) qemu boot successful
x86_64 defconfig (plus CONFIG_{LTO,CFI}_CLANG) successful in 0:02:20
x86_64 defconfig (plus CONFIG_{LTO,CFI}_CLANG) qemu boot successful| llvm/lib/Analysis/ConstantFolding.cpp | ||
|---|---|---|
| 346–347 | Works for me. I'd just followed getAllOnesValue, but agree this looks more consistent. | |
Please ensure that this patch gets picked up into release/11.x as the patch that introduced this failure is in there.
The mix of isa and method calls is inconsistent. How about we consistently use methods, rather than isa?
Type::isIntegerTy, Type::isVectorTy come to mind.