小编Cha*_*tel的帖子

LLVM IR:C++ API:从i1到i32和i32到i1的Typecast

我正在编写一个自制语言的编译器,它只能处理int值,即i32.条件和表达式与C语言类似.因此,我正在考虑条件语句作为表达式,即它们返回一个int值.它们也可以用在表达式中,例如(2 > 1) + (3 > 2)将返回2.但LLVM条件输出i1值.

  • 现在,我希望在每个条件语句之后,i1应该转换成i32,以便我可以执行二进制操作
  • 另外,我想将变量和表达式结果用作条件,例如if(variable)if(a + b).为此,我需要转换i32i1

最后,我想办法从类型转换i1i32i32i1.我的代码现在提供这些错误:

对于如下声明if(variable):

error: branch condition must have 'i1' type
br i32 %0, label %ifb, label %else
   ^
Run Code Online (Sandbox Code Playgroud)

对于声明 a = b > 3

error: stored value and pointer type do not match
store i1 %gttmp, i32* @a
      ^
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何建议?

llvm llvm-gcc llvm-clang llvm-ir llvm-c++-api

6
推荐指数
1
解决办法
820
查看次数

Django:authenticate() 不适用于注册页面创建的用户,但适用于由管理员创建的用户

我想为用户制作一个注册/登录 API。问题是这样的:如果我通过管理站点创建用户,登录工作正常。

如果我通过我制作的注册页面创建用户,则登录不起作用。(authenticate() 函数返回 None,即使该用户仍在用户表中。)

我转到管理站点,转到更改密码的链接,然后再次输入相同的密码。之后我就可以成功登录了。

我认为问题在于保存密码或登录。我已经交叉检查了很多,但无法弄清楚。我正在提供所有文件。您可能会浏览重要的代码。

模型.py

from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime

class Recruiter(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    company_name = models.CharField(max_length=120)
    HR_office_number = models.CharField(max_length=15)
    HR_mobile_number = models.CharField(max_length=15)

def __str__(self):
    return self.user.username
Run Code Online (Sandbox Code Playgroud)

表格.py

from django import forms
from .models import Recruiter, User
from django.core.exceptions import ValidationError

class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput(), max_length=128)
    confirm_password = forms.CharField(widget=forms.PasswordInput(), max_length=128)
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'username', 'email']

    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python django django-views

4
推荐指数
1
解决办法
1万
查看次数